info-library 2.10.87 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/controls/alert/alert.component.d.ts +3 -0
- package/controls/autocomplete/autocomplete.component.d.ts +5 -2
- package/controls/big-checkbox/big-checkbox.component.d.ts +3 -0
- package/controls/card/card.component.d.ts +3 -0
- package/controls/card-menu/card-menu.component.d.ts +3 -0
- package/controls/checkbox/checkbox.component.d.ts +3 -0
- package/controls/chips/chips.component.d.ts +3 -0
- package/controls/date/date.component.d.ts +3 -0
- package/controls/date-month/date-month.component.d.ts +3 -0
- package/controls/editor/editor.component.d.ts +3 -0
- package/controls/grid/grid.component.d.ts +5 -0
- package/controls/input/input.component.d.ts +3 -0
- package/controls/input-list/input-list.component.d.ts +3 -0
- package/controls/list-checkbox/list-checkbox.component.d.ts +3 -0
- package/controls/message/message.component.d.ts +3 -0
- package/controls/multi-select/multi-select.component.d.ts +3 -0
- package/controls/paginator/paginator.component.d.ts +3 -0
- package/controls/select/select.component.d.ts +3 -0
- package/controls/timeline/timeline.component.d.ts +3 -0
- package/directives/mask.directive.d.ts +3 -0
- package/directives/unmask.directive.d.ts +3 -0
- package/esm2020/controls/alert/alert.component.mjs +74 -0
- package/esm2020/controls/autocomplete/autocomplete.component.mjs +258 -0
- package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +298 -0
- package/esm2020/controls/card/card.component.mjs +77 -0
- package/esm2020/controls/card-menu/card-menu.component.mjs +145 -0
- package/esm2020/controls/checkbox/checkbox.component.mjs +93 -0
- package/esm2020/controls/chips/chips.component.mjs +113 -0
- package/esm2020/controls/date/date.component.mjs +141 -0
- package/esm2020/controls/date-month/date-month.component.mjs +148 -0
- package/esm2020/controls/editor/editor.component.mjs +135 -0
- package/esm2020/controls/grid/grid.component.mjs +1800 -0
- package/esm2020/controls/input/input.component.mjs +314 -0
- package/esm2020/controls/input-list/input-list.component.mjs +258 -0
- package/esm2020/controls/list-checkbox/list-checkbox.component.mjs +238 -0
- package/esm2020/controls/message/message.component.mjs +50 -0
- package/esm2020/controls/multi-select/multi-select.component.mjs +161 -0
- package/esm2020/controls/paginator/paginator.component.mjs +178 -0
- package/esm2020/controls/select/select.component.mjs +180 -0
- package/esm2020/controls/timeline/timeline.component.mjs +117 -0
- package/esm2020/directives/mask.directive.mjs +125 -0
- package/esm2020/directives/unmask.directive.mjs +28 -0
- package/esm2020/enum/dialog-buttons.enum.mjs +9 -0
- package/esm2020/enum/index.mjs +4 -0
- package/esm2020/enum/modal-action.enum.mjs +12 -0
- package/esm2020/enum/page-action.enum.mjs +10 -0
- package/esm2020/global-config.mjs +4 -0
- package/esm2020/info-library.mjs +5 -0
- package/esm2020/info-library.module.mjs +278 -0
- package/esm2020/layouts/dialog/dialog.component.mjs +188 -0
- package/esm2020/layouts/loading/loading.component.mjs +42 -0
- package/esm2020/layouts/main/main.component.mjs +276 -0
- package/esm2020/layouts/modal/modal.component.mjs +258 -0
- package/esm2020/layouts/pagebar/pagebar.component.mjs +404 -0
- package/esm2020/layouts/sidebar/sidebar.component.mjs +395 -0
- package/esm2020/layouts/topbar/topbar.component.mjs +863 -0
- package/esm2020/layouts/topmenu/topmenu.component.mjs +165 -0
- package/esm2020/model/app-config.model.mjs +14 -0
- package/esm2020/model/data-access.model.mjs +35 -0
- package/esm2020/model/dialog-result.model.mjs +8 -0
- package/esm2020/model/dialog.model.mjs +16 -0
- package/esm2020/model/form-prop.model.mjs +35 -0
- package/esm2020/model/grid-button.model.mjs +21 -0
- package/esm2020/model/index.mjs +15 -0
- package/esm2020/model/last-search.model.mjs +9 -0
- package/esm2020/model/login.model.mjs +9 -0
- package/esm2020/model/method-grid-button.model.mjs +9 -0
- package/esm2020/model/notification.model.mjs +9 -0
- package/esm2020/model/pagebar-buttons.model.mjs +15 -0
- package/esm2020/model/permission.model.mjs +3 -0
- package/esm2020/model/platform.model.mjs +21 -0
- package/esm2020/model/session.model.mjs +8 -0
- package/esm2020/pipe/index.mjs +3 -0
- package/esm2020/pipe/mask.pipe.mjs +34 -0
- package/esm2020/pipe/translate.pipe.mjs +26 -0
- package/esm2020/public_api.mjs +36 -0
- package/esm2020/service/authentication.service.mjs +358 -0
- package/esm2020/service/configuration.service.mjs +59 -0
- package/esm2020/service/data.service.mjs +112 -0
- package/esm2020/service/index.mjs +6 -0
- package/esm2020/service/theme.service.mjs +79 -0
- package/esm2020/service/translate.service.mjs +53 -0
- package/esm2020/utils/utilities.mjs +142 -0
- package/fesm2015/info-library.mjs +9326 -0
- package/fesm2015/info-library.mjs.map +1 -0
- package/fesm2020/info-library.mjs +8474 -0
- package/fesm2020/info-library.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/info-library.module.d.ts +58 -0
- package/layouts/dialog/dialog.component.d.ts +5 -0
- package/layouts/loading/loading.component.d.ts +3 -0
- package/layouts/main/main.component.d.ts +6 -0
- package/layouts/modal/modal.component.d.ts +3 -0
- package/layouts/pagebar/pagebar.component.d.ts +5 -0
- package/layouts/sidebar/sidebar.component.d.ts +4 -1
- package/layouts/topbar/topbar.component.d.ts +4 -1
- package/layouts/topmenu/topmenu.component.d.ts +3 -0
- package/package.json +28 -13
- package/pipe/mask.pipe.d.ts +3 -0
- package/pipe/translate.pipe.d.ts +3 -0
- package/service/authentication.service.d.ts +5 -0
- package/service/configuration.service.d.ts +3 -0
- package/service/data.service.d.ts +3 -0
- package/service/theme.service.d.ts +3 -0
- package/service/translate.service.d.ts +3 -0
- package/utils/utilities.d.ts +3 -0
- package/bundles/info-library.umd.js +0 -9740
- package/bundles/info-library.umd.js.map +0 -1
- package/bundles/info-library.umd.min.js +0 -2
- package/bundles/info-library.umd.min.js.map +0 -1
- package/esm2015/controls/alert/alert.component.js +0 -43
- package/esm2015/controls/autocomplete/autocomplete.component.js +0 -386
- package/esm2015/controls/big-checkbox/big-checkbox.component.js +0 -282
- package/esm2015/controls/card/card.component.js +0 -64
- package/esm2015/controls/card-menu/card-menu.component.js +0 -90
- package/esm2015/controls/checkbox/checkbox.component.js +0 -130
- package/esm2015/controls/chips/chips.component.js +0 -124
- package/esm2015/controls/date/date.component.js +0 -167
- package/esm2015/controls/date-month/date-month.component.js +0 -181
- package/esm2015/controls/editor/editor.component.js +0 -237
- package/esm2015/controls/grid/grid.component.js +0 -1391
- package/esm2015/controls/input/input.component.js +0 -196
- package/esm2015/controls/input-list/input-list.component.js +0 -160
- package/esm2015/controls/list-checkbox/list-checkbox.component.js +0 -151
- package/esm2015/controls/message/message.component.js +0 -47
- package/esm2015/controls/multi-select/multi-select.component.js +0 -213
- package/esm2015/controls/paginator/paginator.component.js +0 -151
- package/esm2015/controls/select/select.component.js +0 -231
- package/esm2015/controls/timeline/timeline.component.js +0 -73
- package/esm2015/directives/mask.directive.js +0 -202
- package/esm2015/directives/unmask.directive.js +0 -51
- package/esm2015/enum/dialog-buttons.enum.js +0 -20
- package/esm2015/enum/index.js +0 -9
- package/esm2015/enum/modal-action.enum.js +0 -26
- package/esm2015/enum/page-action.enum.js +0 -22
- package/esm2015/global-config.js +0 -11
- package/esm2015/info-library.js +0 -27
- package/esm2015/info-library.module.js +0 -174
- package/esm2015/layouts/dialog/dialog.component.js +0 -173
- package/esm2015/layouts/loading/loading.component.js +0 -42
- package/esm2015/layouts/main/main.component.js +0 -312
- package/esm2015/layouts/modal/modal.component.js +0 -232
- package/esm2015/layouts/pagebar/pagebar.component.js +0 -286
- package/esm2015/layouts/sidebar/sidebar.component.js +0 -231
- package/esm2015/layouts/topbar/topbar.component.js +0 -413
- package/esm2015/layouts/topmenu/topmenu.component.js +0 -181
- package/esm2015/model/app-config.model.js +0 -39
- package/esm2015/model/data-access.model.js +0 -65
- package/esm2015/model/dialog-result.model.js +0 -23
- package/esm2015/model/dialog.model.js +0 -47
- package/esm2015/model/form-prop.model.js +0 -61
- package/esm2015/model/grid-button.model.js +0 -62
- package/esm2015/model/index.js +0 -20
- package/esm2015/model/last-search.model.js +0 -24
- package/esm2015/model/login.model.js +0 -27
- package/esm2015/model/method-grid-button.model.js +0 -27
- package/esm2015/model/notification.model.js +0 -34
- package/esm2015/model/pagebar-buttons.model.js +0 -39
- package/esm2015/model/permission.model.js +0 -16
- package/esm2015/model/platform.model.js +0 -56
- package/esm2015/model/session.model.js +0 -53
- package/esm2015/pipe/index.js +0 -8
- package/esm2015/pipe/mask.pipe.js +0 -47
- package/esm2015/pipe/translate.pipe.js +0 -45
- package/esm2015/public_api.js +0 -41
- package/esm2015/service/authentication.service.js +0 -732
- package/esm2015/service/configuration.service.js +0 -107
- package/esm2015/service/data.service.js +0 -292
- package/esm2015/service/index.js +0 -11
- package/esm2015/service/theme.service.js +0 -133
- package/esm2015/service/translate.service.js +0 -105
- package/esm2015/utils/utilities.js +0 -256
- package/fesm2015/info-library.js +0 -8792
- package/fesm2015/info-library.js.map +0 -1
- package/info-library.d.ts +0 -21
- package/info-library.metadata.json +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, ViewChild } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
4
|
+
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from "@angular/material-moment-adapter";
|
|
5
|
+
import { createTextMaskInputElement } from "text-mask-core/dist/textMaskCore";
|
|
6
|
+
import { createAutoCorrectedDatePipe } from "text-mask-addons";
|
|
7
|
+
import moment from "moment";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@angular/material/form-field";
|
|
11
|
+
import * as i3 from "@angular/material/input";
|
|
12
|
+
import * as i4 from "@angular/material/datepicker";
|
|
13
|
+
import * as i5 from "../../pipe/translate.pipe";
|
|
14
|
+
const _c0 = ["inputDate"];
|
|
15
|
+
export const PT_BR_DATE_FORMATS = {
|
|
16
|
+
parse: {
|
|
17
|
+
dateInput: 'DD/MM/YYYY',
|
|
18
|
+
},
|
|
19
|
+
display: {
|
|
20
|
+
dateInput: 'DD/MM/YYYY',
|
|
21
|
+
monthYearLabel: 'MMM Y',
|
|
22
|
+
dateA11yLabel: 'LL',
|
|
23
|
+
monthYearA11yLabel: 'MMMM Y',
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export class InfoDateComponent {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.disabled = false;
|
|
29
|
+
this.required = false;
|
|
30
|
+
this.minDate = new Date(1800, 0, 1);
|
|
31
|
+
this.maxDate = null;
|
|
32
|
+
this.datefilter = null; //Metodo que recebe uma data(moment) e retorna boolean
|
|
33
|
+
this.dateclass = null; //Metodo que recebe uma data(moment) e retorna string
|
|
34
|
+
}
|
|
35
|
+
ngAfterViewInit() {
|
|
36
|
+
let config = {
|
|
37
|
+
mask: [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/],
|
|
38
|
+
guide: true,
|
|
39
|
+
placeholderChar: '_',
|
|
40
|
+
pipe: createAutoCorrectedDatePipe(PT_BR_DATE_FORMATS.parse.dateInput.toLowerCase()),
|
|
41
|
+
modelClean: true,
|
|
42
|
+
keepCharPositions: false,
|
|
43
|
+
};
|
|
44
|
+
this.dateMask = createTextMaskInputElement(Object.assign({ inputElement: this.input.nativeElement }, config));
|
|
45
|
+
}
|
|
46
|
+
onInputDate(value) {
|
|
47
|
+
this.dateMask.update(value);
|
|
48
|
+
}
|
|
49
|
+
onChangeValue() {
|
|
50
|
+
if (this.dateValue != null) {
|
|
51
|
+
if (moment(this.dateValue).isBefore(moment(this.minDate)))
|
|
52
|
+
this.dateValue = this.minDate;
|
|
53
|
+
if (this.maxDate != null && moment(this.dateValue).isAfter(moment(this.maxDate)))
|
|
54
|
+
this.dateValue = this.maxDate;
|
|
55
|
+
}
|
|
56
|
+
if (this.onChange != null)
|
|
57
|
+
this.onChange(this.dateValue);
|
|
58
|
+
}
|
|
59
|
+
writeValue(value) {
|
|
60
|
+
if (value != null) {
|
|
61
|
+
value = new Date(value);
|
|
62
|
+
value.setMinutes(value.getMinutes() + value.getTimezoneOffset());
|
|
63
|
+
value = new Date(value.getFullYear(), value.getMonth(), value.getDate());
|
|
64
|
+
}
|
|
65
|
+
this.dateValue = value;
|
|
66
|
+
this.onChangeValue();
|
|
67
|
+
}
|
|
68
|
+
registerOnChange(fn) {
|
|
69
|
+
this.onChange = fn;
|
|
70
|
+
}
|
|
71
|
+
registerOnTouched(fn) {
|
|
72
|
+
this.onTouched = fn;
|
|
73
|
+
}
|
|
74
|
+
setDisabledState(isDisabled) {
|
|
75
|
+
this.disabled = isDisabled;
|
|
76
|
+
}
|
|
77
|
+
onKeyPress(e) {
|
|
78
|
+
if (e.keyCode == 13)
|
|
79
|
+
this.onChangeValue();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** @nocollapse */ InfoDateComponent.ɵfac = function InfoDateComponent_Factory(t) { return new (t || InfoDateComponent)(); };
|
|
83
|
+
/** @nocollapse */ InfoDateComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoDateComponent, selectors: [["info-date"]], viewQuery: function InfoDateComponent_Query(rf, ctx) { if (rf & 1) {
|
|
84
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
85
|
+
} if (rf & 2) {
|
|
86
|
+
let _t;
|
|
87
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
|
|
88
|
+
} }, inputs: { placeholder: "placeholder", disabled: "disabled", required: "required", minDate: "minDate", maxDate: "maxDate", datefilter: "datefilter", dateclass: "dateclass" }, features: [i0.ɵɵProvidersFeature([{
|
|
89
|
+
provide: NG_VALUE_ACCESSOR,
|
|
90
|
+
useExisting: forwardRef((() => InfoDateComponent)),
|
|
91
|
+
multi: true
|
|
92
|
+
},
|
|
93
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
|
|
94
|
+
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
|
|
95
|
+
{ provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_FORMATS },
|
|
96
|
+
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }])], decls: 7, vars: 12, consts: [["matInput", "", 3, "placeholder", "ngModel", "disabled", "required", "min", "max", "matDatepicker", "matDatepickerFilter", "ngModelChange", "dateChange", "input", "keypress", "blur"], ["inputDate", ""], ["matSuffix", "", 3, "for"], [3, "dateClass"], ["datepicker", ""]], template: function InfoDateComponent_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
+
i0.ɵɵelementStart(0, "mat-form-field")(1, "input", 0, 1);
|
|
98
|
+
i0.ɵɵlistener("ngModelChange", function InfoDateComponent_Template_input_ngModelChange_1_listener($event) { return ctx.dateValue = $event; })("dateChange", function InfoDateComponent_Template_input_dateChange_1_listener() { return ctx.onChangeValue(); })("input", function InfoDateComponent_Template_input_input_1_listener($event) { return ctx.onInputDate($event.target.value); })("keypress", function InfoDateComponent_Template_input_keypress_1_listener($event) { return ctx.onKeyPress($event); })("blur", function InfoDateComponent_Template_input_blur_1_listener() { return ctx.onChangeValue(); });
|
|
99
|
+
i0.ɵɵpipe(3, "translate");
|
|
100
|
+
i0.ɵɵelementEnd();
|
|
101
|
+
i0.ɵɵelement(4, "mat-datepicker-toggle", 2)(5, "mat-datepicker", 3, 4);
|
|
102
|
+
i0.ɵɵelementEnd();
|
|
103
|
+
} if (rf & 2) {
|
|
104
|
+
const _r1 = i0.ɵɵreference(6);
|
|
105
|
+
i0.ɵɵadvance(1);
|
|
106
|
+
i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 10, ctx.placeholder))("ngModel", ctx.dateValue)("disabled", ctx.disabled)("required", ctx.required)("min", ctx.minDate)("max", ctx.maxDate)("matDatepicker", _r1)("matDatepickerFilter", ctx.datefilter);
|
|
107
|
+
i0.ɵɵadvance(3);
|
|
108
|
+
i0.ɵɵproperty("for", _r1);
|
|
109
|
+
i0.ɵɵadvance(1);
|
|
110
|
+
i0.ɵɵproperty("dateClass", ctx.dateclass);
|
|
111
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.RequiredValidator, i1.NgModel, i2.MatFormField, i2.MatSuffix, i3.MatInput, i4.MatDatepicker, i4.MatDatepickerInput, i4.MatDatepickerToggle, i5.InfoTranslatePipe], encapsulation: 2 });
|
|
112
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoDateComponent, [{
|
|
113
|
+
type: Component,
|
|
114
|
+
args: [{ selector: 'info-date', providers: [{
|
|
115
|
+
provide: NG_VALUE_ACCESSOR,
|
|
116
|
+
useExisting: forwardRef((() => InfoDateComponent)),
|
|
117
|
+
multi: true
|
|
118
|
+
},
|
|
119
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
|
|
120
|
+
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
|
|
121
|
+
{ provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_FORMATS },
|
|
122
|
+
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }], template: "<mat-form-field>\r\n <input matInput [placeholder]=\"placeholder | translate\" [(ngModel)]=\"dateValue\" [disabled]=\"disabled\" [required]=\"required\" [min]=\"minDate\" [max]=\"maxDate\"\r\n (dateChange)=\"onChangeValue()\" (input)=\"onInputDate($event.target.value)\" (keypress)=\"onKeyPress($event)\" (blur)=\"onChangeValue()\" [matDatepicker]=\"datepicker\"\r\n [matDatepickerFilter]=\"datefilter\" #inputDate >\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker [dateClass]=\"dateclass\" #datepicker></mat-datepicker>\r\n</mat-form-field>" }]
|
|
123
|
+
}], null, { placeholder: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], disabled: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], required: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], minDate: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], maxDate: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], datefilter: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], dateclass: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], input: [{
|
|
138
|
+
type: ViewChild,
|
|
139
|
+
args: ['inputDate', { static: false }]
|
|
140
|
+
}] }); })();
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFFNUIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDOUIsS0FBSyxFQUFFO1FBQ0gsU0FBUyxFQUFFLFlBQVk7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtRQUN2QixjQUFjLEVBQUUsT0FBTztRQUN2QixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxRQUFRO0tBQy9CO0NBQ0osQ0FBQztBQWVGLE1BQU0sT0FBTyxpQkFBaUI7SUFiOUI7UUFnQmEsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFlBQU8sR0FBUyxJQUFJLENBQUM7UUFFckIsZUFBVSxHQUFRLElBQUksQ0FBQyxDQUFDLHNEQUFzRDtRQUM5RSxjQUFTLEdBQVEsSUFBSSxDQUFDLENBQUMscURBQXFEO0tBcUV4RjtJQTVERyxlQUFlO1FBRVgsSUFBSSxNQUFNLEdBQUc7WUFDVCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7WUFDaEUsS0FBSyxFQUFFLElBQUk7WUFDWCxlQUFlLEVBQUUsR0FBRztZQUNwQixJQUFJLEVBQUUsMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuRixVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxLQUFLO1NBQzNCLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLDBCQUEwQixDQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQ3BFLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDeEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFakMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDckM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ2YsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDakUsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQixDQUFFLFVBQW1CO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7O3FHQTdFUSxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7Ozs7d05BVmYsQ0FBQztnQkFDUixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFDO2dCQUNoRCxLQUFLLEVBQUUsSUFBSTthQUNkO1lBQ0QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7WUFDL0MsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUM5RSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7WUFDM0QsRUFBRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUMvQjdFLHNDQUFnQixrQkFBQTtRQUM0Qyw2SUFBdUIsMEZBQzFELG1CQUFlLElBRDJDLHNGQUNoQyxvQ0FBZ0MsSUFEQSw0RkFDYyxzQkFBa0IsSUFEaEMsOEVBQzBDLG1CQUFlLElBRHpEOztRQUEvRSxpQkFFc0Q7UUFFdEQsMkNBQTRFLDJCQUFBO1FBRWhGLGlCQUFpQjs7O1FBTkcsZUFBdUM7UUFBdkMsb0VBQXVDLDBCQUFBLDBCQUFBLDBCQUFBLG9CQUFBLG9CQUFBLHNCQUFBLHVDQUFBO1FBSXRCLGVBQWtCO1FBQWxCLHlCQUFrQjtRQUNuQyxlQUF1QjtRQUF2Qix5Q0FBdUI7O3VGRDJCOUIsaUJBQWlCO2NBYjdCLFNBQVM7MkJBQ0ksV0FBVyxhQUVWLENBQUM7d0JBQ1IsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsa0JBQWtCLEVBQUM7d0JBQ2hELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO29CQUMvQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUM5RSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7b0JBQzNELEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUloRSxXQUFXO2tCQUFuQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFFRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUVxQyxLQUFLO2tCQUEvQyxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVUZXh0TWFza0lucHV0RWxlbWVudCB9IGZyb20gXCJ0ZXh0LW1hc2stY29yZS9kaXN0L3RleHRNYXNrQ29yZVwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUgfSBmcm9tIFwidGV4dC1tYXNrLWFkZG9uc1wiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBQVF9CUl9EQVRFX0ZPUk1BVFMgPSB7XHJcbiAgICBwYXJzZToge1xyXG4gICAgICAgIGRhdGVJbnB1dDogJ0REL01NL1lZWVknLFxyXG4gICAgfSxcclxuICAgIGRpc3BsYXk6IHtcclxuICAgICAgICBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyxcclxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTSBZJyxcclxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWScsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tZGF0ZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFt7XHJcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0RhdGVDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAncHQtQlInIH0sXHJcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEVdIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBQVF9CUl9EQVRFX0ZPUk1BVFMgfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgdXNlVmFsdWU6IHsgdXNlVXRjOiB0cnVlIH0gfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9EYXRlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgPSBuZXcgRGF0ZSgxODAwLCAwLCAxKTtcclxuICAgIEBJbnB1dCgpIG1heERhdGU6IERhdGUgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGVmaWx0ZXI6IGFueSA9IG51bGw7IC8vTWV0b2RvIHF1ZSByZWNlYmUgdW1hIGRhdGEobW9tZW50KSBlIHJldG9ybmEgYm9vbGVhblxyXG4gICAgQElucHV0KCkgZGF0ZWNsYXNzOiBhbnkgPSBudWxsOyAvL01ldG9kbyBxdWUgcmVjZWJlIHVtYSBkYXRhKG1vbWVudCkgZSByZXRvcm5hIHN0cmluZ1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dDtcclxuXHJcbiAgICBkYXRlVmFsdWU6IGFueTtcclxuICAgIGRhdGVNYXNrOiBhbnk7XHJcbiAgICBvbkNoYW5nZTtcclxuICAgIG9uVG91Y2hlZDtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgICAgIGxldCBjb25maWcgPSB7XHJcbiAgICAgICAgICAgIG1hc2s6IFsvXFxkLywgL1xcZC8sICcvJywgL1xcZC8sIC9cXGQvLCAnLycsIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvXSxcclxuICAgICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ18nLFxyXG4gICAgICAgICAgICBwaXBlOiBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUoUFRfQlJfREFURV9GT1JNQVRTLnBhcnNlLmRhdGVJbnB1dC50b0xvd2VyQ2FzZSgpKSxcclxuICAgICAgICAgICAgbW9kZWxDbGVhbjogdHJ1ZSxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1hc2sgPSBjcmVhdGVUZXh0TWFza0lucHV0RWxlbWVudChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IGlucHV0RWxlbWVudDogdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50IH0sIGNvbmZpZylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW5wdXREYXRlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlTWFzay51cGRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZVZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKG1vbWVudCh0aGlzLmRhdGVWYWx1ZSkuaXNCZWZvcmUobW9tZW50KHRoaXMubWluRGF0ZSkpKVxyXG4gICAgICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZSA9IHRoaXMubWluRGF0ZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXhEYXRlICE9IG51bGwgJiYgbW9tZW50KHRoaXMuZGF0ZVZhbHVlKS5pc0FmdGVyKG1vbWVudCh0aGlzLm1heERhdGUpKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gdGhpcy5tYXhEYXRlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHZhbHVlLnNldE1pbnV0ZXModmFsdWUuZ2V0TWludXRlcygpICsgdmFsdWUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XHJcbiAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBvbktleVByZXNzKGUpe1xyXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgfVxyXG59IiwiPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwiZGF0ZVZhbHVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCJcclxuICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkNoYW5nZVZhbHVlKClcIiAoaW5wdXQpPVwib25JbnB1dERhdGUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCIgKGJsdXIpPVwib25DaGFuZ2VWYWx1ZSgpXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZWZpbHRlclwiICNpbnB1dERhdGUgPlxyXG5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgPG1hdC1kYXRlcGlja2VyIFtkYXRlQ2xhc3NdPVwiZGF0ZWNsYXNzXCIgI2RhdGVwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, ViewChild } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from "@angular/material/core";
|
|
4
|
+
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from "@angular/material-moment-adapter";
|
|
5
|
+
import { createTextMaskInputElement } from "text-mask-core/dist/textMaskCore";
|
|
6
|
+
import { createAutoCorrectedDatePipe } from "text-mask-addons";
|
|
7
|
+
import moment from "moment";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@angular/material/form-field";
|
|
11
|
+
import * as i3 from "@angular/material/input";
|
|
12
|
+
import * as i4 from "@angular/material/datepicker";
|
|
13
|
+
import * as i5 from "../../pipe/translate.pipe";
|
|
14
|
+
const _c0 = ["inputDate"];
|
|
15
|
+
export const PT_BR_DATE_MONTH_FORMATS = {
|
|
16
|
+
parse: {
|
|
17
|
+
dateInput: 'MM/YYYY',
|
|
18
|
+
},
|
|
19
|
+
display: {
|
|
20
|
+
dateInput: 'MM/YYYY',
|
|
21
|
+
monthYearLabel: 'MMM YYYY',
|
|
22
|
+
dateA11yLabel: 'LL',
|
|
23
|
+
monthYearA11yLabel: 'MMMM YYYY',
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export class InfoDateMonthComponent {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.disabled = false;
|
|
29
|
+
this.required = false;
|
|
30
|
+
this.changeonlyonmonth = false;
|
|
31
|
+
this.minDate = new Date(1800, 0, 1);
|
|
32
|
+
}
|
|
33
|
+
ngAfterViewInit() {
|
|
34
|
+
let config = {
|
|
35
|
+
mask: [/\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/],
|
|
36
|
+
guide: true,
|
|
37
|
+
placeholderChar: '_',
|
|
38
|
+
pipe: createAutoCorrectedDatePipe(PT_BR_DATE_MONTH_FORMATS.parse.dateInput.toLowerCase()),
|
|
39
|
+
modelClean: true,
|
|
40
|
+
keepCharPositions: false,
|
|
41
|
+
};
|
|
42
|
+
this.dateMask = createTextMaskInputElement(Object.assign({ inputElement: this.input.nativeElement }, config));
|
|
43
|
+
}
|
|
44
|
+
onInputDate(value) {
|
|
45
|
+
this.dateMask.update(value);
|
|
46
|
+
}
|
|
47
|
+
onChangeValue() {
|
|
48
|
+
if (this.onChange != null) {
|
|
49
|
+
if (moment(this.dateValue).isBefore(moment(this.minDate)))
|
|
50
|
+
this.dateValue = this.minDate;
|
|
51
|
+
this.onChange(this.dateValue);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
writeValue(value) {
|
|
55
|
+
if (value == null || value == undefined)
|
|
56
|
+
this.dateValue = null;
|
|
57
|
+
else {
|
|
58
|
+
value = new Date(value);
|
|
59
|
+
value.setMinutes(value.getMinutes() + value.getTimezoneOffset());
|
|
60
|
+
value = new Date(value.getFullYear(), value.getMonth(), 1);
|
|
61
|
+
this.dateValue = value;
|
|
62
|
+
}
|
|
63
|
+
this.onChangeValue();
|
|
64
|
+
}
|
|
65
|
+
registerOnChange(fn) {
|
|
66
|
+
this.onChange = fn;
|
|
67
|
+
}
|
|
68
|
+
registerOnTouched(fn) {
|
|
69
|
+
this.onTouched = fn;
|
|
70
|
+
}
|
|
71
|
+
setDisabledState(isDisabled) {
|
|
72
|
+
this.disabled = isDisabled;
|
|
73
|
+
}
|
|
74
|
+
chosenYearHandler(value) {
|
|
75
|
+
if (this.changeonlyonmonth)
|
|
76
|
+
return;
|
|
77
|
+
let aux = new Date(value.year(), new Date(this.dateValue).getMonth(), 1);
|
|
78
|
+
this.dateValue = aux;
|
|
79
|
+
this.onChangeValue();
|
|
80
|
+
}
|
|
81
|
+
chosenMonthHandler(value, datepicker) {
|
|
82
|
+
let aux = new Date(value.year(), value.month(), 1);
|
|
83
|
+
this.dateValue = aux;
|
|
84
|
+
this.onChangeValue();
|
|
85
|
+
datepicker.close();
|
|
86
|
+
}
|
|
87
|
+
onKeyPress(e) {
|
|
88
|
+
if (e.keyCode == 13)
|
|
89
|
+
this.onChangeValue();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** @nocollapse */ InfoDateMonthComponent.ɵfac = function InfoDateMonthComponent_Factory(t) { return new (t || InfoDateMonthComponent)(); };
|
|
93
|
+
/** @nocollapse */ InfoDateMonthComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoDateMonthComponent, selectors: [["info-date-month"]], viewQuery: function InfoDateMonthComponent_Query(rf, ctx) { if (rf & 1) {
|
|
94
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
95
|
+
} if (rf & 2) {
|
|
96
|
+
let _t;
|
|
97
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
|
|
98
|
+
} }, inputs: { placeholder: "placeholder", disabled: "disabled", required: "required", changeonlyonmonth: "changeonlyonmonth", minDate: "minDate" }, features: [i0.ɵɵProvidersFeature([{
|
|
99
|
+
provide: NG_VALUE_ACCESSOR,
|
|
100
|
+
useExisting: forwardRef((() => InfoDateMonthComponent)),
|
|
101
|
+
multi: true
|
|
102
|
+
},
|
|
103
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
|
|
104
|
+
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
|
|
105
|
+
{ provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_MONTH_FORMATS },
|
|
106
|
+
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }])], decls: 7, vars: 9, consts: [["matInput", "", 3, "placeholder", "ngModel", "disabled", "required", "min", "matDatepicker", "ngModelChange", "dateChange", "input", "keypress", "blur"], ["inputDate", ""], ["matSuffix", "", 3, "for"], ["startView", "multi-year", 3, "yearSelected", "monthSelected"], ["datepicker", ""]], template: function InfoDateMonthComponent_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
108
|
+
i0.ɵɵelementStart(0, "mat-form-field")(1, "input", 0, 1);
|
|
109
|
+
i0.ɵɵlistener("ngModelChange", function InfoDateMonthComponent_Template_input_ngModelChange_1_listener($event) { return ctx.dateValue = $event; })("dateChange", function InfoDateMonthComponent_Template_input_dateChange_1_listener() { return ctx.onChangeValue(); })("input", function InfoDateMonthComponent_Template_input_input_1_listener($event) { return ctx.onInputDate($event.target.value); })("keypress", function InfoDateMonthComponent_Template_input_keypress_1_listener($event) { return ctx.onKeyPress($event); })("blur", function InfoDateMonthComponent_Template_input_blur_1_listener() { return ctx.onChangeValue(); });
|
|
110
|
+
i0.ɵɵpipe(3, "translate");
|
|
111
|
+
i0.ɵɵelementEnd();
|
|
112
|
+
i0.ɵɵelement(4, "mat-datepicker-toggle", 2);
|
|
113
|
+
i0.ɵɵelementStart(5, "mat-datepicker", 3, 4);
|
|
114
|
+
i0.ɵɵlistener("yearSelected", function InfoDateMonthComponent_Template_mat_datepicker_yearSelected_5_listener($event) { return ctx.chosenYearHandler($event); })("monthSelected", function InfoDateMonthComponent_Template_mat_datepicker_monthSelected_5_listener($event) { i0.ɵɵrestoreView(_r2); const _r1 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.chosenMonthHandler($event, _r1)); });
|
|
115
|
+
i0.ɵɵelementEnd()();
|
|
116
|
+
} if (rf & 2) {
|
|
117
|
+
const _r1 = i0.ɵɵreference(6);
|
|
118
|
+
i0.ɵɵadvance(1);
|
|
119
|
+
i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 7, ctx.placeholder))("ngModel", ctx.dateValue)("disabled", ctx.disabled)("required", ctx.required)("min", ctx.minDate)("matDatepicker", _r1);
|
|
120
|
+
i0.ɵɵadvance(3);
|
|
121
|
+
i0.ɵɵproperty("for", _r1);
|
|
122
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.RequiredValidator, i1.NgModel, i2.MatFormField, i2.MatSuffix, i3.MatInput, i4.MatDatepicker, i4.MatDatepickerInput, i4.MatDatepickerToggle, i5.InfoTranslatePipe], encapsulation: 2 });
|
|
123
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoDateMonthComponent, [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: 'info-date-month', providers: [{
|
|
126
|
+
provide: NG_VALUE_ACCESSOR,
|
|
127
|
+
useExisting: forwardRef((() => InfoDateMonthComponent)),
|
|
128
|
+
multi: true
|
|
129
|
+
},
|
|
130
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
|
|
131
|
+
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
|
|
132
|
+
{ provide: MAT_DATE_FORMATS, useValue: PT_BR_DATE_MONTH_FORMATS },
|
|
133
|
+
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }], template: "<mat-form-field>\r\n <input matInput [placeholder]=\"placeholder | translate\" [(ngModel)]=\"dateValue\" [disabled]=\"disabled\" [required]=\"required\" [min]=\"minDate\"\r\n (dateChange)=\"onChangeValue()\" (input)=\"onInputDate($event.target.value)\" (keypress)=\"onKeyPress($event)\" (blur)=\"onChangeValue()\" [matDatepicker]=\"datepicker\" #inputDate >\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker startView=\"multi-year\" (yearSelected)=\"chosenYearHandler($event)\" (monthSelected)=\"chosenMonthHandler($event, datepicker)\"></mat-datepicker>\r\n</mat-form-field> " }]
|
|
134
|
+
}], null, { placeholder: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], disabled: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], required: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], changeonlyonmonth: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], minDate: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], input: [{
|
|
145
|
+
type: ViewChild,
|
|
146
|
+
args: ['inputDate', { static: false }]
|
|
147
|
+
}] }); })();
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1tb250aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUtbW9udGgvZGF0ZS1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2RhdGUtbW9udGgvZGF0ZS1tb250aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFFNUIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDcEMsS0FBSyxFQUFFO1FBQ0gsU0FBUyxFQUFFLFNBQVM7S0FDdkI7SUFDRCxPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsU0FBUztRQUNwQixjQUFjLEVBQUUsVUFBVTtRQUMxQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2xDO0NBQ0osQ0FBQztBQWVGLE1BQU0sT0FBTyxzQkFBc0I7SUFibkM7UUFnQmEsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVks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S0FBa0IsZUFBQSxtQ0FBc0MsQ0FBQSxJQUF4RDtRQUEwRCxpQkFBaUIsRUFBQTs7O1FBSnhKLGVBQXVDO1FBQXZDLG1FQUF1QywwQkFBQSwwQkFBQSwwQkFBQSxvQkFBQSxzQkFBQTtRQUd0QixlQUFrQjtRQUFsQix5QkFBa0I7O3VGRCtCMUMsc0JBQXNCO2NBYmxDLFNBQVM7MkJBQ0ksaUJBQWlCLGFBRWhCLENBQUM7d0JBQ1IsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsdUJBQXVCLEVBQUM7d0JBQ3JELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO29CQUMvQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUM5RSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7b0JBQ2pFLEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUloRSxXQUFXO2tCQUFuQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFFcUMsS0FBSztrQkFBL0MsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTUFUX0RBVEVfTE9DQUxFLCBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGVyLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgY3JlYXRlVGV4dE1hc2tJbnB1dEVsZW1lbnQgfSBmcm9tIFwidGV4dC1tYXNrLWNvcmUvZGlzdC90ZXh0TWFza0NvcmVcIjtcclxuaW1wb3J0IHsgY3JlYXRlQXV0b0NvcnJlY3RlZERhdGVQaXBlIH0gZnJvbSBcInRleHQtbWFzay1hZGRvbnNcIjtcclxuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBQVF9CUl9EQVRFX01PTlRIX0ZPUk1BVFMgPSB7XHJcbiAgICBwYXJzZToge1xyXG4gICAgICAgIGRhdGVJbnB1dDogJ01NL1lZWVknLFxyXG4gICAgfSxcclxuICAgIGRpc3BsYXk6IHtcclxuICAgICAgICBkYXRlSW5wdXQ6ICdNTS9ZWVlZJyxcclxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tZGF0ZS1tb250aCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1tb250aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFt7XHJcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0RhdGVNb250aENvbXBvbmVudCksXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdwdC1CUicgfSxcclxuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IFBUX0JSX0RBVEVfTU9OVEhfRk9STUFUUyB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCB1c2VWYWx1ZTogeyB1c2VVdGM6IHRydWUgfSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0RhdGVNb250aENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBjaGFuZ2Vvbmx5b25tb250aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKDE4MDAsIDAsIDEpO1xyXG4gICAgXHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dERhdGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXQ7XHJcblxyXG4gICAgZGF0ZVZhbHVlOiBhbnk7XHJcbiAgICBkYXRlTWFzazogYW55O1xyXG4gICAgb25DaGFuZ2U7XHJcbiAgICBvblRvdWNoZWQ7XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgICAgICBsZXQgY29uZmlnID0ge1xyXG4gICAgICAgICAgICBtYXNrOiBbL1xcZC8sIC9cXGQvLCAnLycsIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvXSxcclxuICAgICAgICAgICAgZ3VpZGU6IHRydWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ18nLFxyXG4gICAgICAgICAgICBwaXBlOiBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUoUFRfQlJfREFURV9NT05USF9GT1JNQVRTLnBhcnNlLmRhdGVJbnB1dC50b0xvd2VyQ2FzZSgpKSxcclxuICAgICAgICAgICAgbW9kZWxDbGVhbjogdHJ1ZSxcclxuICAgICAgICAgICAga2VlcENoYXJQb3NpdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0ZU1hc2sgPSBjcmVhdGVUZXh0TWFza0lucHV0RWxlbWVudChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IGlucHV0RWxlbWVudDogdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50IH0sIGNvbmZpZylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW5wdXREYXRlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlTWFzay51cGRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAobW9tZW50KHRoaXMuZGF0ZVZhbHVlKS5pc0JlZm9yZShtb21lbnQodGhpcy5taW5EYXRlKSkpXHJcbiAgICAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gdGhpcy5taW5EYXRlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgdmFsdWUuc2V0TWludXRlcyh2YWx1ZS5nZXRNaW51dGVzKCkgKyB2YWx1ZS5nZXRUaW1lem9uZU9mZnNldCgpKTtcclxuICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpLCAxKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5ZZWFySGFuZGxlcih2YWx1ZTogTW9tZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlb25seW9ubW9udGgpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBsZXQgYXV4ID0gbmV3IERhdGUodmFsdWUueWVhcigpLCBuZXcgRGF0ZSh0aGlzLmRhdGVWYWx1ZSkuZ2V0TW9udGgoKSwgMSk7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBhdXg7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hvc2VuTW9udGhIYW5kbGVyKHZhbHVlOiBNb21lbnQsIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8TW9tZW50Pikge1xyXG4gICAgICAgIGxldCBhdXggPSBuZXcgRGF0ZSh2YWx1ZS55ZWFyKCksIHZhbHVlLm1vbnRoKCksIDEpO1xyXG4gICAgICAgIHRoaXMuZGF0ZVZhbHVlID0gYXV4O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gICAgICAgIGRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgb25LZXlQcmVzcyhlKXtcclxuICAgICAgICBpZiAoZS5rZXlDb2RlID09IDEzKVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgIH1cclxufSIsIjxtYXQtZm9ybS1maWVsZD5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cImRhdGVWYWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFttaW5dPVwibWluRGF0ZVwiXHJcbiAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGlucHV0KT1cIm9uSW5wdXREYXRlKCRldmVudC50YXJnZXQudmFsdWUpXCIgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiIChibHVyKT1cIm9uQ2hhbmdlVmFsdWUoKVwiIFttYXREYXRlcGlja2VyXT1cImRhdGVwaWNrZXJcIiAjaW5wdXREYXRlID5cclxuXHJcbiAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZXBpY2tlciBzdGFydFZpZXc9XCJtdWx0aS15ZWFyXCIgKHllYXJTZWxlY3RlZCk9XCJjaG9zZW5ZZWFySGFuZGxlcigkZXZlbnQpXCIgKG1vbnRoU2VsZWN0ZWQpPVwiY2hvc2VuTW9udGhIYW5kbGVyKCRldmVudCwgZGF0ZXBpY2tlcilcIj48L21hdC1kYXRlcGlja2VyPlxyXG48L21hdC1mb3JtLWZpZWxkPiAgICJdfQ==
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, SecurityContext, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
+
import { AngularEditorComponent } from '@kolkov/angular-editor';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/platform-browser";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "@kolkov/angular-editor";
|
|
9
|
+
const _c0 = ["editor"];
|
|
10
|
+
export class InfoEditorComponent {
|
|
11
|
+
constructor(_sanitizer) {
|
|
12
|
+
this._sanitizer = _sanitizer;
|
|
13
|
+
this.required = false;
|
|
14
|
+
this.enabledhtmlmode = false;
|
|
15
|
+
this.sanitize = true;
|
|
16
|
+
this.value = '';
|
|
17
|
+
this.focused = false;
|
|
18
|
+
this.id = null;
|
|
19
|
+
this.editorConfig = {
|
|
20
|
+
editable: true,
|
|
21
|
+
spellcheck: true,
|
|
22
|
+
height: 'auto',
|
|
23
|
+
minHeight: '0',
|
|
24
|
+
maxHeight: 'auto',
|
|
25
|
+
width: 'auto',
|
|
26
|
+
minWidth: '0',
|
|
27
|
+
translate: 'yes',
|
|
28
|
+
enableToolbar: true,
|
|
29
|
+
showToolbar: true,
|
|
30
|
+
defaultParagraphSeparator: '',
|
|
31
|
+
toolbarPosition: 'top',
|
|
32
|
+
sanitize: false,
|
|
33
|
+
fonts: [
|
|
34
|
+
{ class: 'arial', name: 'Arial' },
|
|
35
|
+
{ class: 'times-new-roman', name: 'Times New Roman' },
|
|
36
|
+
{ class: 'calibri', name: 'Calibri' },
|
|
37
|
+
{ class: 'comic-sans-ms', name: 'Comic Sans MS' }
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
get disabled() { return !(this.editorConfig || {}).editable; }
|
|
42
|
+
set disabled(value) { this.editorConfig.editable = !value; }
|
|
43
|
+
get height() { return (this.editorConfig || {}).height; }
|
|
44
|
+
set height(value) { this.editorConfig.height = value || 'auto'; }
|
|
45
|
+
get minheight() { return (this.editorConfig || {}).minHeight; }
|
|
46
|
+
set minheight(value) { this.editorConfig.minHeight = value || '0'; }
|
|
47
|
+
get maxheight() { return (this.editorConfig || {}).maxHeight; }
|
|
48
|
+
set maxheight(value) { this.editorConfig.maxHeight = value || 'auto'; }
|
|
49
|
+
get width() { return (this.editorConfig || {}).width; }
|
|
50
|
+
set width(value) { this.editorConfig.width = value || 'auto'; }
|
|
51
|
+
get minwidth() { return (this.editorConfig || {}).minWidth; }
|
|
52
|
+
set minwidth(value) { this.editorConfig.minWidth = value || '0'; }
|
|
53
|
+
ngOnInit() {
|
|
54
|
+
this.id = `editor-${this.getGuid()}`;
|
|
55
|
+
}
|
|
56
|
+
ngAfterViewInit() {
|
|
57
|
+
var _this = this;
|
|
58
|
+
document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('focus', () => _this.focused = true);
|
|
59
|
+
document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('blur', () => _this.focused = false);
|
|
60
|
+
document.querySelector(`#${this.id} .angular-editor-textarea`).addEventListener('mouseout', () => _this.editor.editorToolbar['editorService'].saveSelection());
|
|
61
|
+
}
|
|
62
|
+
getGuid() {
|
|
63
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
64
|
+
const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
65
|
+
return v.toString(16);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
onChangeValue() {
|
|
69
|
+
if (this.sanitize)
|
|
70
|
+
this.value = this._sanitizer.sanitize(SecurityContext.HTML, this.value);
|
|
71
|
+
if (this.onChange != null)
|
|
72
|
+
this.onChange(this.value);
|
|
73
|
+
}
|
|
74
|
+
writeValue(modelValue) {
|
|
75
|
+
this.value = this.sanitize ? this._sanitizer.sanitize(SecurityContext.HTML, modelValue) : modelValue;
|
|
76
|
+
this.onChangeValue();
|
|
77
|
+
}
|
|
78
|
+
registerOnChange(fn) {
|
|
79
|
+
this.onChange = fn;
|
|
80
|
+
}
|
|
81
|
+
registerOnTouched(fn) {
|
|
82
|
+
this.onTouched = fn;
|
|
83
|
+
}
|
|
84
|
+
setDisabledState(isDisabled) {
|
|
85
|
+
this.disabled = isDisabled;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** @nocollapse */ InfoEditorComponent.ɵfac = function InfoEditorComponent_Factory(t) { return new (t || InfoEditorComponent)(i0.ɵɵdirectiveInject(i1.DomSanitizer)); };
|
|
89
|
+
/** @nocollapse */ InfoEditorComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoEditorComponent, selectors: [["info-editor"]], viewQuery: function InfoEditorComponent_Query(rf, ctx) { if (rf & 1) {
|
|
90
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
91
|
+
} if (rf & 2) {
|
|
92
|
+
let _t;
|
|
93
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editor = _t.first);
|
|
94
|
+
} }, inputs: { required: "required", enabledhtmlmode: "enabledhtmlmode", sanitize: "sanitize", disabled: "disabled", height: "height", minheight: "minheight", maxheight: "maxheight", width: "width", minwidth: "minwidth" }, features: [i0.ɵɵProvidersFeature([{
|
|
95
|
+
provide: NG_VALUE_ACCESSOR,
|
|
96
|
+
useExisting: forwardRef((() => InfoEditorComponent)),
|
|
97
|
+
multi: true
|
|
98
|
+
}])], decls: 2, vars: 6, consts: [["name", "editor", 3, "ngModel", "config", "required", "ngModelChange"], ["editor", ""]], template: function InfoEditorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementStart(0, "angular-editor", 0, 1);
|
|
100
|
+
i0.ɵɵlistener("ngModelChange", function InfoEditorComponent_Template_angular_editor_ngModelChange_0_listener($event) { return ctx.value = $event; })("ngModelChange", function InfoEditorComponent_Template_angular_editor_ngModelChange_0_listener() { return ctx.onChangeValue(); });
|
|
101
|
+
i0.ɵɵelementEnd();
|
|
102
|
+
} if (rf & 2) {
|
|
103
|
+
i0.ɵɵproperty("ngModel", ctx.value)("config", ctx.editorConfig)("required", ctx.required);
|
|
104
|
+
i0.ɵɵattribute("id", ctx.id)("focused", ctx.focused)("htmlmode", ctx.enabledhtmlmode);
|
|
105
|
+
} }, dependencies: [i2.NgControlStatus, i2.RequiredValidator, i2.NgModel, i3.AngularEditorComponent], styles: ["[_nghost-%COMP%] [htmlmode=false] .angular-editor-toolbar-set #toggleEditorMode-{display:none}[_nghost-%COMP%] .angular-editor-toolbar-set #insertVideo-{display:none}[_nghost-%COMP%] .angular-editor-textarea{outline:none;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:solid 1px!important}[_nghost-%COMP%] .angular-editor-textarea[contenteditable=false]{border-bottom:dotted 1.5px lightgray!important}[_nghost-%COMP%] .angular-editor-wrapper:after{content:\"\";position:absolute;left:0;width:100%;height:2px;bottom:0;transform-origin:50%;transform:scaleX(.5);opacity:0;background-color:#000;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}[_nghost-%COMP%] [focused=true] .angular-editor-wrapper:after{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}[_nghost-%COMP%] .ng-touched.ng-invalid .angular-editor-wrapper:after{background-color:#f44336!important}[_nghost-%COMP%] .ng-touched.ng-invalid .angular-editor-textarea[contenteditable=true]{border-bottom-color:#f44336!important}"] });
|
|
106
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoEditorComponent, [{
|
|
107
|
+
type: Component,
|
|
108
|
+
args: [{ selector: 'info-editor', providers: [{
|
|
109
|
+
provide: NG_VALUE_ACCESSOR,
|
|
110
|
+
useExisting: forwardRef((() => InfoEditorComponent)),
|
|
111
|
+
multi: true
|
|
112
|
+
}], template: "<angular-editor [attr.id]=\"id\" [attr.focused]=\"focused\" [attr.htmlmode]=\"enabledhtmlmode\" [(ngModel)]=\"value\" name=\"editor\" [config]=\"editorConfig\" (ngModelChange)=\"onChangeValue()\" [required]=\"required\" #editor></angular-editor>\r\n", styles: [":host ::ng-deep [htmlmode=false] .angular-editor-toolbar-set #toggleEditorMode-{display:none}:host ::ng-deep .angular-editor-toolbar-set #insertVideo-{display:none}:host ::ng-deep .angular-editor-textarea{outline:none;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:solid 1px!important}:host ::ng-deep .angular-editor-textarea[contenteditable=false]{border-bottom:dotted 1.5px lightgray!important}:host ::ng-deep .angular-editor-wrapper:after{content:\"\";position:absolute;left:0;width:100%;height:2px;bottom:0;transform-origin:50%;transform:scaleX(.5);opacity:0;background-color:#000;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}:host ::ng-deep [focused=true] .angular-editor-wrapper:after{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}:host ::ng-deep .ng-touched.ng-invalid .angular-editor-wrapper:after{background-color:#f44336!important}:host ::ng-deep .ng-touched.ng-invalid .angular-editor-textarea[contenteditable=true]{border-bottom-color:#f44336!important}\n"] }]
|
|
113
|
+
}], function () { return [{ type: i1.DomSanitizer }]; }, { editor: [{
|
|
114
|
+
type: ViewChild,
|
|
115
|
+
args: ['editor']
|
|
116
|
+
}], required: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], enabledhtmlmode: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], sanitize: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], disabled: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], height: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], minheight: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], maxheight: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], width: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], minwidth: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}] }); })();
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQTZDLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQVkzRyxNQUFNLE9BQU8sbUJBQW1CO0lBNkQ5QixZQUFvQixVQUF3QjtRQUF4QixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBekRuQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGFBQVEsR0FBWSxJQUFJLENBQUM7UUEwQmxDLFVBQUssR0FBUSxFQUFFLENBQUM7UUFJaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixPQUFFLEdBQUcsSUFBSSxDQUFDO1FBRVYsaUJBQVksR0FBd0I7WUFDbEMsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxHQUFHO1lBQ2QsU0FBUyxFQUFFLE1BQU07WUFDakIsS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsR0FBRztZQUNiLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxJQUFJ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IGZvcndhcmRSZWYsIElucHV0LCBTZWN1cml0eUNvbnRleHQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yQ29tcG9uZW50LCBBbmd1bGFyRWRpdG9yQ29uZmlnLCBBbmd1bGFyRWRpdG9yU2VydmljZSB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG4gXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5mby1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0VkaXRvckNvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGl0b3InKSBlZGl0b3I6IEFuZ3VsYXJFZGl0b3JDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW5hYmxlZGh0bWxtb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2FuaXRpemU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuICEodGhpcy5lZGl0b3JDb25maWcgfHwge30pLmVkaXRhYmxlOyB9XHJcbiAgc2V0IGRpc2FibGVkKHZhbHVlKSB7IHRoaXMuZWRpdG9yQ29uZmlnLmVkaXRhYmxlID0gIXZhbHVlOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGhlaWdodCgpIHsgcmV0dXJuICh0aGlzLmVkaXRvckNvbmZpZyB8fCB7fSkuaGVpZ2h0OyB9XHJcbiAgc2V0IGhlaWdodCh2YWx1ZSkgeyB0aGlzLmVkaXRvckNvbmZpZy5oZWlnaHQgPSB2YWx1ZSB8fCAnYXV0byc7IH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgbWluaGVpZ2h0KCkgeyByZXR1cm4gKHRoaXMuZWRpdG9yQ29uZmlnIHx8IHt9KS5taW5IZWlnaHQ7IH1cclxuICBzZXQgbWluaGVpZ2h0KHZhbHVlKSB7IHRoaXMuZWRpdG9yQ29uZmlnLm1pbkhlaWdodCA9IHZhbHVlIHx8ICcwJzsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtYXhoZWlnaHQoKSB7IHJldHVybiAodGhpcy5lZGl0b3JDb25maWcgfHwge30pLm1heEhlaWdodDsgfVxyXG4gIHNldCBtYXhoZWlnaHQodmFsdWUpIHsgdGhpcy5lZGl0b3JDb25maWcubWF4SGVpZ2h0ID0gdmFsdWUgfHwgJ2F1dG8nOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHdpZHRoKCkgeyByZXR1cm4gKHRoaXMuZWRpdG9yQ29uZmlnIHx8IHt9KS53aWR0aDsgfVxyXG4gIHNldCB3aWR0aCh2YWx1ZSkgeyB0aGlzLmVkaXRvckNvbmZpZy53aWR0aCA9IHZhbHVlIHx8ICdhdXRvJzsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtaW53aWR0aCgpIHsgcmV0dXJuICh0aGlzLmVkaXRvckNvbmZpZyB8fCB7fSkubWluV2lkdGg7IH1cclxuICBzZXQgbWlud2lkdGgodmFsdWUpIHsgdGhpcy5lZGl0b3JDb25maWcubWluV2lkdGggPSB2YWx1ZSB8fCAnMCc7IH1cclxuXHJcbiAgdmFsdWU6IGFueSA9ICcnO1xyXG4gIFxyXG4gIG9uQ2hhbmdlOiBhbnk7XHJcbiAgb25Ub3VjaGVkOiBhbnk7XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGlkID0gbnVsbDtcclxuXHJcbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgZWRpdGFibGU6IHRydWUsXHJcbiAgICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICBtaW5IZWlnaHQ6ICcwJyxcclxuICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgd2lkdGg6ICdhdXRvJyxcclxuICAgIG1pbldpZHRoOiAnMCcsXHJcbiAgICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgIHNob3dUb29sYmFyOiB0cnVlLFxyXG4gICAgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjogJycsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgc2FuaXRpemU6IGZhbHNlLFxyXG4gICAgZm9udHM6IFtcclxuICAgICAge2NsYXNzOiAnYXJpYWwnLCBuYW1lOiAnQXJpYWwnfSxcclxuICAgICAge2NsYXNzOiAndGltZXMtbmV3LXJvbWFuJywgbmFtZTogJ1RpbWVzIE5ldyBSb21hbid9LFxyXG4gICAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgICAge2NsYXNzOiAnY29taWMtc2Fucy1tcycsIG5hbWU6ICdDb21pYyBTYW5zIE1TJ31cclxuICAgIF0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pZCA9IGBlZGl0b3ItJHt0aGlzLmdldEd1aWQoKX1gO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMuaWR9IC5hbmd1bGFyLWVkaXRvci10ZXh0YXJlYWApLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gX3RoaXMuZm9jdXNlZCA9IHRydWUpO1xyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5pZH0gLmFuZ3VsYXItZWRpdG9yLXRleHRhcmVhYCkuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IF90aGlzLmZvY3VzZWQgPSBmYWxzZSk7XHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLmlkfSAuYW5ndWxhci1lZGl0b3ItdGV4dGFyZWFgKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsICgpID0+IF90aGlzLmVkaXRvci5lZGl0b3JUb29sYmFyWydlZGl0b3JTZXJ2aWNlJ10uc2F2ZVNlbGVjdGlvbigpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3VpZCgpIDogc3RyaW5nIHtcclxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uKGMpIHtcclxuICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5zYW5pdGl6ZSlcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdGhpcy52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG1vZGVsVmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuc2FuaXRpemUgPyB0aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIG1vZGVsVmFsdWUpIDogbW9kZWxWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2VWYWx1ZSgpO1xyXG4gIH1cclxuICBcclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG4gIFxyXG59IiwiPGFuZ3VsYXItZWRpdG9yIFthdHRyLmlkXT1cImlkXCIgW2F0dHIuZm9jdXNlZF09XCJmb2N1c2VkXCIgW2F0dHIuaHRtbG1vZGVdPVwiZW5hYmxlZGh0bWxtb2RlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIG5hbWU9XCJlZGl0b3JcIiBbY29uZmlnXT1cImVkaXRvckNvbmZpZ1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlVmFsdWUoKVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiICNlZGl0b3I+PC9hbmd1bGFyLWVkaXRvcj5cclxuIl19
|