@seniorsistemas/components-ai 2.4.0 → 2.4.1
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/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +32 -80
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-date.component.mjs +212 -82
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-datetime.component.mjs +211 -87
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-time.component.mjs +185 -62
- package/fesm2022/seniorsistemas-components-ai.mjs +627 -301
- package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -1
- package/lib/components/dynamic-form/fields/dynamic-field-date.component.d.ts +36 -4
- package/lib/components/dynamic-form/fields/dynamic-field-datetime.component.d.ts +34 -4
- package/lib/components/dynamic-form/fields/dynamic-field-time.component.d.ts +30 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, ViewChild } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import {
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { InputMaskModule } from 'primeng/inputmask';
|
|
5
5
|
import { CalendarModule } from 'primeng/calendar';
|
|
6
6
|
import { ButtonModule } from 'primeng/button';
|
|
@@ -9,86 +9,197 @@ import { DynamicFieldWrapperComponent } from './dynamic-field-wrapper.component'
|
|
|
9
9
|
import { DynamicFieldBaseComponent } from './dynamic-field-base.component';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "../../../services/translation.service";
|
|
12
|
-
import * as i2 from "@angular/
|
|
13
|
-
import * as i3 from "
|
|
14
|
-
import * as i4 from "primeng/
|
|
15
|
-
import * as i5 from "primeng/
|
|
16
|
-
import * as i6 from "primeng/
|
|
12
|
+
import * as i2 from "@angular/common";
|
|
13
|
+
import * as i3 from "@angular/forms";
|
|
14
|
+
import * as i4 from "primeng/inputmask";
|
|
15
|
+
import * as i5 from "primeng/calendar";
|
|
16
|
+
import * as i6 from "primeng/button";
|
|
17
|
+
import * as i7 from "primeng/tooltip";
|
|
18
|
+
/**
|
|
19
|
+
* DynamicFieldTimeComponent
|
|
20
|
+
*
|
|
21
|
+
* O FormControl.value armazena o horário no formato "HH:mm" (ex: "14:30").
|
|
22
|
+
* A variável `displayValue` mantém o valor formatado para exibição no input.
|
|
23
|
+
* Aceita valores de entrada em "HH:mm" ou "HH:mm:ss" (truncando os segundos).
|
|
24
|
+
*/
|
|
17
25
|
export class DynamicFieldTimeComponent extends DynamicFieldBaseComponent {
|
|
18
26
|
timePicker;
|
|
19
|
-
|
|
27
|
+
/** Valor de exibição "HH:mm" */
|
|
28
|
+
displayValue = null;
|
|
29
|
+
/** Valor do picker (Date) */
|
|
30
|
+
pickerValue = null;
|
|
31
|
+
/** Controla a renderização do p-calendar */
|
|
32
|
+
showPicker = false;
|
|
20
33
|
valueSub;
|
|
34
|
+
updatingFromControl = false;
|
|
21
35
|
constructor(translationService) {
|
|
22
36
|
super(translationService);
|
|
23
37
|
}
|
|
24
38
|
ngOnInit() {
|
|
25
39
|
const control = this.form.get(this.field.field);
|
|
26
40
|
if (control) {
|
|
27
|
-
|
|
28
|
-
control.setValue(this.dateToTimeString(control.value), { emitEvent: false });
|
|
29
|
-
}
|
|
41
|
+
this.syncDisplayFromControl(control.value);
|
|
30
42
|
this.valueSub = control.valueChanges.subscribe(value => {
|
|
31
|
-
if (
|
|
32
|
-
|
|
43
|
+
if (this.updatingFromControl) {
|
|
44
|
+
return;
|
|
33
45
|
}
|
|
46
|
+
this.syncDisplayFromControl(value);
|
|
34
47
|
});
|
|
35
48
|
}
|
|
36
49
|
}
|
|
37
50
|
ngOnDestroy() {
|
|
38
51
|
this.valueSub?.unsubscribe();
|
|
39
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Sincroniza o displayValue a partir do valor do FormControl.
|
|
55
|
+
* Aceita: "HH:mm", "HH:mm:ss", Date, ou null.
|
|
56
|
+
*/
|
|
57
|
+
syncDisplayFromControl(value) {
|
|
58
|
+
if (!value) {
|
|
59
|
+
this.displayValue = null;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (value instanceof Date) {
|
|
63
|
+
const timeStr = this.dateToTimeString(value);
|
|
64
|
+
this.setControlValue(timeStr);
|
|
65
|
+
this.displayValue = timeStr;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const s = String(value);
|
|
69
|
+
// "HH:mm:ss" → truncar para "HH:mm"
|
|
70
|
+
if (s.match(/^\d{2}:\d{2}:\d{2}$/)) {
|
|
71
|
+
const short = s.substring(0, 5);
|
|
72
|
+
this.displayValue = short;
|
|
73
|
+
this.setControlValue(short);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// "HH:mm" → usar direto
|
|
77
|
+
if (s.match(/^\d{2}:\d{2}$/)) {
|
|
78
|
+
this.displayValue = s;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Valor incompleto
|
|
82
|
+
this.displayValue = null;
|
|
83
|
+
}
|
|
84
|
+
/** Chamado quando o usuário completa a digitação da máscara */
|
|
85
|
+
onDisplayValueComplete() {
|
|
86
|
+
this.syncControlFromDisplay();
|
|
87
|
+
}
|
|
88
|
+
/** Chamado quando o input perde foco */
|
|
89
|
+
onDisplayValueBlur() {
|
|
90
|
+
this.syncControlFromDisplay();
|
|
91
|
+
}
|
|
92
|
+
/** Converte o displayValue para o FormControl */
|
|
93
|
+
syncControlFromDisplay() {
|
|
94
|
+
const control = this.form.get(this.field.field);
|
|
95
|
+
if (!control) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (!this.displayValue || this.displayValue.includes('_')) {
|
|
99
|
+
this.setControlValue(null);
|
|
100
|
+
control.markAsDirty();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Validar HH:mm
|
|
104
|
+
if (this.isValidTime(this.displayValue)) {
|
|
105
|
+
this.setControlValue(this.displayValue);
|
|
106
|
+
control.markAsDirty();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** Seta o valor no control sem disparar o subscriber interno */
|
|
110
|
+
setControlValue(value) {
|
|
111
|
+
const control = this.form.get(this.field.field);
|
|
112
|
+
if (!control) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
this.updatingFromControl = true;
|
|
116
|
+
control.setValue(value, { emitEvent: true });
|
|
117
|
+
this.updatingFromControl = false;
|
|
118
|
+
}
|
|
119
|
+
// ==================== CONVERSÕES ====================
|
|
40
120
|
dateToTimeString(date) {
|
|
41
121
|
return `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;
|
|
42
122
|
}
|
|
43
|
-
|
|
44
|
-
if (!value || value.includes('_'))
|
|
123
|
+
timeStringToDate(value) {
|
|
124
|
+
if (!value || value.includes('_')) {
|
|
45
125
|
return null;
|
|
126
|
+
}
|
|
46
127
|
const parts = value.split(':');
|
|
47
|
-
if (parts.length
|
|
128
|
+
if (parts.length < 2) {
|
|
48
129
|
return null;
|
|
130
|
+
}
|
|
49
131
|
const hours = parseInt(parts[0], 10);
|
|
50
132
|
const minutes = parseInt(parts[1], 10);
|
|
51
|
-
if (isNaN(hours) || isNaN(minutes) || hours < 0 || hours > 23 || minutes < 0 || minutes > 59)
|
|
133
|
+
if (isNaN(hours) || isNaN(minutes) || hours < 0 || hours > 23 || minutes < 0 || minutes > 59) {
|
|
52
134
|
return null;
|
|
135
|
+
}
|
|
53
136
|
const d = new Date();
|
|
54
137
|
d.setHours(hours, minutes, 0, 0);
|
|
55
138
|
return d;
|
|
56
139
|
}
|
|
140
|
+
isValidTime(value) {
|
|
141
|
+
const parts = value.split(':');
|
|
142
|
+
if (parts.length !== 2) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
const h = parseInt(parts[0], 10);
|
|
146
|
+
const m = parseInt(parts[1], 10);
|
|
147
|
+
return !isNaN(h) && !isNaN(m) && h >= 0 && h <= 23 && m >= 0 && m <= 59;
|
|
148
|
+
}
|
|
149
|
+
// ==================== TIME PICKER ====================
|
|
57
150
|
toggleTimePicker(event) {
|
|
58
151
|
event.stopPropagation();
|
|
59
|
-
|
|
60
|
-
|
|
152
|
+
if (this.displayValue && !this.displayValue.includes('_')) {
|
|
153
|
+
this.pickerValue = this.timeStringToDate(this.displayValue);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
this.pickerValue = new Date();
|
|
157
|
+
}
|
|
158
|
+
this.showPicker = true;
|
|
61
159
|
setTimeout(() => {
|
|
62
|
-
if (this.timePicker) {
|
|
63
|
-
this.timePicker.
|
|
160
|
+
if (this.timePicker && this.timePicker.inputfieldViewChild) {
|
|
161
|
+
this.timePicker.inputfieldViewChild.nativeElement.click();
|
|
64
162
|
}
|
|
65
163
|
});
|
|
66
164
|
}
|
|
67
165
|
onTimeSelect(date) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
166
|
+
if (date) {
|
|
167
|
+
const timeStr = this.dateToTimeString(date);
|
|
168
|
+
this.displayValue = timeStr;
|
|
169
|
+
this.setControlValue(timeStr);
|
|
170
|
+
const control = this.form.get(this.field.field);
|
|
171
|
+
if (control) {
|
|
172
|
+
control.markAsDirty();
|
|
173
|
+
}
|
|
72
174
|
}
|
|
73
175
|
}
|
|
176
|
+
isControlDisabled() {
|
|
177
|
+
const control = this.form.get(this.field.field);
|
|
178
|
+
return control ? control.disabled : false;
|
|
179
|
+
}
|
|
74
180
|
getPlaceholder() {
|
|
75
181
|
return this.field.placeholder || 'HH:mm';
|
|
76
182
|
}
|
|
77
183
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicFieldTimeComponent, deps: [{ token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
78
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DynamicFieldTimeComponent, isStandalone: true, selector: "sia-dynamic-field-time", viewQueries: [{ propertyName: "timePicker", first: true, predicate: ["timePicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
184
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DynamicFieldTimeComponent, isStandalone: true, selector: "sia-dynamic-field-time", host: { styleAttribute: "display: block; width: 100%;" }, viewQueries: [{ propertyName: "timePicker", first: true, predicate: ["timePicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
79
185
|
<sia-dynamic-field-wrapper [field]="field" [form]="form" [mode]="mode">
|
|
80
|
-
<div
|
|
186
|
+
<div class="time-field">
|
|
81
187
|
<div class="time-input-group">
|
|
82
188
|
<p-inputmask
|
|
83
189
|
[inputId]="field.field"
|
|
84
|
-
[
|
|
190
|
+
[(ngModel)]="displayValue"
|
|
191
|
+
[ngModelOptions]="{standalone: true}"
|
|
85
192
|
mask="99:99"
|
|
86
193
|
[placeholder]="getPlaceholder()"
|
|
87
194
|
slotChar="_"
|
|
88
195
|
[autoClear]="false"
|
|
89
|
-
styleClass="time-input"
|
|
196
|
+
styleClass="time-input w-full"
|
|
197
|
+
[style]="{'width': '100%', 'display': 'block'}"
|
|
90
198
|
[class.ng-invalid]="isFieldInvalid()"
|
|
91
|
-
[class.ng-dirty]="isFieldDirty()"
|
|
199
|
+
[class.ng-dirty]="isFieldDirty()"
|
|
200
|
+
[disabled]="isControlDisabled()"
|
|
201
|
+
(onComplete)="onDisplayValueComplete()"
|
|
202
|
+
(onBlur)="onDisplayValueBlur()">
|
|
92
203
|
</p-inputmask>
|
|
93
204
|
<div class="time-buttons">
|
|
94
205
|
<p-button
|
|
@@ -102,28 +213,31 @@ export class DynamicFieldTimeComponent extends DynamicFieldBaseComponent {
|
|
|
102
213
|
size="small">
|
|
103
214
|
</p-button>
|
|
104
215
|
</div>
|
|
216
|
+
<p-calendar
|
|
217
|
+
*ngIf="showPicker"
|
|
218
|
+
#timePicker
|
|
219
|
+
[(ngModel)]="pickerValue"
|
|
220
|
+
[ngModelOptions]="{standalone: true}"
|
|
221
|
+
[timeOnly]="true"
|
|
222
|
+
[showSeconds]="false"
|
|
223
|
+
[hourFormat]="'24'"
|
|
224
|
+
[appendTo]="'body'"
|
|
225
|
+
[inline]="false"
|
|
226
|
+
[showIcon]="false"
|
|
227
|
+
(onSelect)="onTimeSelect($event)"
|
|
228
|
+
(onHide)="showPicker = false"
|
|
229
|
+
styleClass="hidden-calendar-input"
|
|
230
|
+
[style]="{'position': 'absolute', 'width': '0', 'height': '0', 'overflow': 'hidden', 'opacity': '0', 'pointer-events': 'none'}">
|
|
231
|
+
</p-calendar>
|
|
105
232
|
</div>
|
|
106
|
-
<p-calendar
|
|
107
|
-
#timePicker
|
|
108
|
-
[(ngModel)]="timeValue"
|
|
109
|
-
[timeOnly]="true"
|
|
110
|
-
[showSeconds]="false"
|
|
111
|
-
[hourFormat]="'24'"
|
|
112
|
-
[appendTo]="'body'"
|
|
113
|
-
[inline]="false"
|
|
114
|
-
[showIcon]="false"
|
|
115
|
-
(onSelect)="onTimeSelect($event)"
|
|
116
|
-
styleClass="hidden-calendar-input">
|
|
117
|
-
</p-calendar>
|
|
118
233
|
</div>
|
|
119
234
|
</sia-dynamic-field-wrapper>
|
|
120
|
-
`, isInline: true, styles: [".time-field{width:100%;position:relative}.time-input-group{position:relative;width:100%;::ng-deep p-inputmask{width:100%;display:block;input{width:100%;padding-right:2.5rem}}.time-buttons{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;gap:2px;z-index:10}::ng-deep .p-button{width:2rem!important;height:2rem!important;min-width:2rem!important;min-height:2rem!important;padding:0!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;.p-button-icon{margin:0!important;font-size:.875rem!important}.p-button-label{display:none!important}}}
|
|
235
|
+
`, isInline: true, styles: [".time-field{width:100%;position:relative}.time-input-group{position:relative;width:100%;::ng-deep p-inputmask{width:100%;display:block;input{width:100%;padding-right:2.5rem}}.time-buttons{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;gap:2px;z-index:10}::ng-deep .p-button{width:2rem!important;height:2rem!important;min-width:2rem!important;min-height:2rem!important;padding:0!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;.p-button-icon{margin:0!important;font-size:.875rem!important}.p-button-label{display:none!important}}}.hidden-calendar-input,::ng-deep .hidden-calendar-input{position:absolute!important;width:0!important;height:0!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important;margin:0!important;padding:0!important;border:none!important;top:0;left:0;input{width:0!important;height:0!important;padding:0!important;border:none!important}}>p-calendar{position:absolute!important;width:0!important;height:0!important;overflow:hidden!important;pointer-events:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i4.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i5.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i6.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: DynamicFieldWrapperComponent, selector: "sia-dynamic-field-wrapper", inputs: ["field", "form", "mode"] }] });
|
|
121
236
|
}
|
|
122
237
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicFieldTimeComponent, decorators: [{
|
|
123
238
|
type: Component,
|
|
124
|
-
args: [{ selector: 'sia-dynamic-field-time', standalone: true, imports: [
|
|
239
|
+
args: [{ selector: 'sia-dynamic-field-time', standalone: true, host: { style: 'display: block; width: 100%;' }, imports: [
|
|
125
240
|
CommonModule,
|
|
126
|
-
ReactiveFormsModule,
|
|
127
241
|
FormsModule,
|
|
128
242
|
InputMaskModule,
|
|
129
243
|
CalendarModule,
|
|
@@ -132,18 +246,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
132
246
|
DynamicFieldWrapperComponent
|
|
133
247
|
], template: `
|
|
134
248
|
<sia-dynamic-field-wrapper [field]="field" [form]="form" [mode]="mode">
|
|
135
|
-
<div
|
|
249
|
+
<div class="time-field">
|
|
136
250
|
<div class="time-input-group">
|
|
137
251
|
<p-inputmask
|
|
138
252
|
[inputId]="field.field"
|
|
139
|
-
[
|
|
253
|
+
[(ngModel)]="displayValue"
|
|
254
|
+
[ngModelOptions]="{standalone: true}"
|
|
140
255
|
mask="99:99"
|
|
141
256
|
[placeholder]="getPlaceholder()"
|
|
142
257
|
slotChar="_"
|
|
143
258
|
[autoClear]="false"
|
|
144
|
-
styleClass="time-input"
|
|
259
|
+
styleClass="time-input w-full"
|
|
260
|
+
[style]="{'width': '100%', 'display': 'block'}"
|
|
145
261
|
[class.ng-invalid]="isFieldInvalid()"
|
|
146
|
-
[class.ng-dirty]="isFieldDirty()"
|
|
262
|
+
[class.ng-dirty]="isFieldDirty()"
|
|
263
|
+
[disabled]="isControlDisabled()"
|
|
264
|
+
(onComplete)="onDisplayValueComplete()"
|
|
265
|
+
(onBlur)="onDisplayValueBlur()">
|
|
147
266
|
</p-inputmask>
|
|
148
267
|
<div class="time-buttons">
|
|
149
268
|
<p-button
|
|
@@ -157,24 +276,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
157
276
|
size="small">
|
|
158
277
|
</p-button>
|
|
159
278
|
</div>
|
|
279
|
+
<p-calendar
|
|
280
|
+
*ngIf="showPicker"
|
|
281
|
+
#timePicker
|
|
282
|
+
[(ngModel)]="pickerValue"
|
|
283
|
+
[ngModelOptions]="{standalone: true}"
|
|
284
|
+
[timeOnly]="true"
|
|
285
|
+
[showSeconds]="false"
|
|
286
|
+
[hourFormat]="'24'"
|
|
287
|
+
[appendTo]="'body'"
|
|
288
|
+
[inline]="false"
|
|
289
|
+
[showIcon]="false"
|
|
290
|
+
(onSelect)="onTimeSelect($event)"
|
|
291
|
+
(onHide)="showPicker = false"
|
|
292
|
+
styleClass="hidden-calendar-input"
|
|
293
|
+
[style]="{'position': 'absolute', 'width': '0', 'height': '0', 'overflow': 'hidden', 'opacity': '0', 'pointer-events': 'none'}">
|
|
294
|
+
</p-calendar>
|
|
160
295
|
</div>
|
|
161
|
-
<p-calendar
|
|
162
|
-
#timePicker
|
|
163
|
-
[(ngModel)]="timeValue"
|
|
164
|
-
[timeOnly]="true"
|
|
165
|
-
[showSeconds]="false"
|
|
166
|
-
[hourFormat]="'24'"
|
|
167
|
-
[appendTo]="'body'"
|
|
168
|
-
[inline]="false"
|
|
169
|
-
[showIcon]="false"
|
|
170
|
-
(onSelect)="onTimeSelect($event)"
|
|
171
|
-
styleClass="hidden-calendar-input">
|
|
172
|
-
</p-calendar>
|
|
173
296
|
</div>
|
|
174
297
|
</sia-dynamic-field-wrapper>
|
|
175
|
-
`, styles: [".time-field{width:100%;position:relative}.time-input-group{position:relative;width:100%;::ng-deep p-inputmask{width:100%;display:block;input{width:100%;padding-right:2.5rem}}.time-buttons{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;gap:2px;z-index:10}::ng-deep .p-button{width:2rem!important;height:2rem!important;min-width:2rem!important;min-height:2rem!important;padding:0!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;.p-button-icon{margin:0!important;font-size:.875rem!important}.p-button-label{display:none!important}}}
|
|
298
|
+
`, styles: [".time-field{width:100%;position:relative}.time-input-group{position:relative;width:100%;::ng-deep p-inputmask{width:100%;display:block;input{width:100%;padding-right:2.5rem}}.time-buttons{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;gap:2px;z-index:10}::ng-deep .p-button{width:2rem!important;height:2rem!important;min-width:2rem!important;min-height:2rem!important;padding:0!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;.p-button-icon{margin:0!important;font-size:.875rem!important}.p-button-label{display:none!important}}}.hidden-calendar-input,::ng-deep .hidden-calendar-input{position:absolute!important;width:0!important;height:0!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important;margin:0!important;padding:0!important;border:none!important;top:0;left:0;input{width:0!important;height:0!important;padding:0!important;border:none!important}}>p-calendar{position:absolute!important;width:0!important;height:0!important;overflow:hidden!important;pointer-events:none!important}\n"] }]
|
|
176
299
|
}], ctorParameters: () => [{ type: i1.TranslationService }], propDecorators: { timePicker: [{
|
|
177
300
|
type: ViewChild,
|
|
178
301
|
args: ['timePicker']
|
|
179
302
|
}] } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWVsZHMvZHluYW1pYy1maWVsZC10aW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBZ0kzRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEseUJBQXlCO0lBQzdDLFVBQVUsQ0FBWTtJQUUvQyxTQUFTLEdBQWdCLElBQUksQ0FBQztJQUN0QixRQUFRLENBQWdCO0lBRWhDLFlBQVksa0JBQXNDO1FBQ2hELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJ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QU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRVEsY0FBYztRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQztJQUMzQyxDQUFDO3dHQWxFVSx5QkFBeUI7NEZBQXpCLHlCQUF5QixtTkFqSDFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1QsMjNCQW5EQyxZQUFZLDhCQUNaLG1CQUFtQixtbEJBQ25CLFdBQVcsc1BBQ1gsZUFBZSxxaUJBQ2YsY0FBYyxpekNBQ2QsWUFBWSxpYkFDWixhQUFhLHNYQUNiLDRCQUE0Qjs7NEZBbUhuQix5QkFBeUI7a0JBOUhyQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osYUFBYTt3QkFDYiw0QkFBNEI7cUJBQzdCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVDt1RkF3RXdCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRNYXNrTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG1hc2snO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUsIENhbGVuZGFyIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZpZWxkLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQtYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaWEtZHluYW1pYy1maWVsZC10aW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElucHV0TWFza01vZHVsZSxcbiAgICBDYWxlbmRhck1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNpYS1keW5hbWljLWZpZWxkLXdyYXBwZXIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIm1vZGVcIj5cbiAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ0aW1lLWZpZWxkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgPHAtaW5wdXRtYXNrXG4gICAgICAgICAgICBbaW5wdXRJZF09XCJmaWVsZC5maWVsZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmZpZWxkXCJcbiAgICAgICAgICAgIG1hc2s9XCI5OTo5OVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgICBzbG90Q2hhcj1cIl9cIlxuICAgICAgICAgICAgW2F1dG9DbGVhcl09XCJmYWxzZVwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwidGltZS1pbnB1dFwiXG4gICAgICAgICAgICBbY2xhc3MubmctaW52YWxpZF09XCJpc0ZpZWxkSW52YWxpZCgpXCJcbiAgICAgICAgICAgIFtjbGFzcy5uZy1kaXJ0eV09XCJpc0ZpZWxkRGlydHkoKVwiPlxuICAgICAgICAgIDwvcC1pbnB1dG1hc2s+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1jbG9ja1wiXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJ0b2dnbGVUaW1lUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICBwVG9vbHRpcD1cIkFicmlyIHNlbGV0b3IgZGUgaG9yYVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgI3RpbWVQaWNrZXJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRpbWVWYWx1ZVwiXG4gICAgICAgICAgW3RpbWVPbmx5XT1cInRydWVcIlxuICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiXG4gICAgICAgICAgW2hvdXJGb3JtYXRdPVwiJzI0J1wiXG4gICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgW2lubGluZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dJY29uXT1cImZhbHNlXCJcbiAgICAgICAgICAob25TZWxlY3QpPVwib25UaW1lU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJoaWRkZW4tY2FsZW5kYXItaW5wdXRcIj5cbiAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9zaWEtZHluYW1pYy1maWVsZC13cmFwcGVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLnRpbWUtZmllbGQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLnRpbWUtaW5wdXQtZ3JvdXAge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIDo6bmctZGVlcCBwLWlucHV0bWFzayB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMi41cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC50aW1lLWJ1dHRvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgIH1cblxuICAgICAgOjpuZy1kZWVwIC5wLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBtaW4td2lkdGg6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5wLWJ1dHRvbi1pY29uIHtcbiAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAucC1idXR0b24tbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIDo6bmctZGVlcCAuaGlkZGVuLWNhbGVuZGFyLWlucHV0IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgaW5wdXQge1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmllbGRUaW1lQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndGltZVBpY2tlcicpIHRpbWVQaWNrZXIhOiBDYWxlbmRhcjtcbiAgXG4gIHRpbWVWYWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHZhbHVlU3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7XG4gICAgc3VwZXIodHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuZmllbGQpO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh0aGlzLmRhdGVUb1RpbWVTdHJpbmcoY29udHJvbC52YWx1ZSksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWVTdWIgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh0aGlzLmRhdGVUb1RpbWVTdHJpbmcodmFsdWUpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGRhdGVUb1RpbWVTdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke1N0cmluZyhkYXRlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyl9OiR7U3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ1RvRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUuaW5jbHVkZXMoJ18nKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnOicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQocGFydHNbMF0sIDEwKTtcbiAgICBjb25zdCBtaW51dGVzID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTtcbiAgICBpZiAoaXNOYU4oaG91cnMpIHx8IGlzTmFOKG1pbnV0ZXMpIHx8IGhvdXJzIDwgMCB8fCBob3VycyA+IDIzIHx8IG1pbnV0ZXMgPCAwIHx8IG1pbnV0ZXMgPiA1OSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gICAgZC5zZXRIb3Vycyhob3VycywgbWludXRlcywgMCwgMCk7XG4gICAgcmV0dXJuIGQ7XG4gIH1cblxuICB0b2dnbGVUaW1lUGlja2VyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuZmllbGQpO1xuICAgIHRoaXMudGltZVZhbHVlID0gY29udHJvbD8udmFsdWUgPyB0aGlzLnN0cmluZ1RvRGF0ZShjb250cm9sLnZhbHVlKSA6IG5ldyBEYXRlKCk7XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50aW1lUGlja2VyKSB7XG4gICAgICAgIHRoaXMudGltZVBpY2tlci5zaG93T3ZlcmxheSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25UaW1lU2VsZWN0KGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmZpZWxkKTtcbiAgICBpZiAoY29udHJvbCAmJiBkYXRlKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKHRoaXMuZGF0ZVRvVGltZVN0cmluZyhkYXRlKSk7XG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wbGFjZWhvbGRlciB8fCAnSEg6bW0nO1xuICB9XG59XG4iXX0=
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWVsZHMvZHluYW1pYy1maWVsZC10aW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7OztBQUUzRTs7Ozs7O0dBTUc7QUFzSkgsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHlCQUF5QjtJQUM3QyxVQUFVLENBQVk7SUFFL0MsZ0NBQWdDO0lBQ2hDLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBRW5DLDZCQUE2QjtJQUM3QixXQUFXLEdBQWdCLElBQUksQ0FBQztJQUVoQyw0Q0FBNEM7SUFDNUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVYLFFBQVEsQ0FBZ0I7SUFDeEIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBRXBDLFlBQVksa0JBQXNDO1FBQ2hELEtBQUssQ0FBQyxrQkFBa0IsQ0FB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QWlCO1FBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFUSxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDO0lBQzNDLENBQUM7d0dBMUtVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDZRQXhJMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVCxxc0NBM0RDLFlBQVksa0lBQ1osV0FBVyw4VkFDWCxlQUFlLHFpQkFDZixjQUFjLGl6Q0FDZCxZQUFZLGliQUNaLGFBQWEsc1hBQ2IsNEJBQTRCOzs0RkEwSW5CLHlCQUF5QjtrQkFySnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksUUFDVixFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osYUFBYTt3QkFDYiw0QkFBNEI7cUJBQzdCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVDt1RkFzRndCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRNYXNrTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG1hc2snO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUsIENhbGVuZGFyIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZpZWxkLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQtYmFzZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIER5bmFtaWNGaWVsZFRpbWVDb21wb25lbnRcbiAqXG4gKiBPIEZvcm1Db250cm9sLnZhbHVlIGFybWF6ZW5hIG8gaG9yw6FyaW8gbm8gZm9ybWF0byBcIkhIOm1tXCIgKGV4OiBcIjE0OjMwXCIpLlxuICogQSB2YXJpw6F2ZWwgYGRpc3BsYXlWYWx1ZWAgbWFudMOpbSBvIHZhbG9yIGZvcm1hdGFkbyBwYXJhIGV4aWJpw6fDo28gbm8gaW5wdXQuXG4gKiBBY2VpdGEgdmFsb3JlcyBkZSBlbnRyYWRhIGVtIFwiSEg6bW1cIiBvdSBcIkhIOm1tOnNzXCIgKHRydW5jYW5kbyBvcyBzZWd1bmRvcykuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYS1keW5hbWljLWZpZWxkLXRpbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7IHN0eWxlOiAnZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOycgfSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJbnB1dE1hc2tNb2R1bGUsXG4gICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgRHluYW1pY0ZpZWxkV3JhcHBlckNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzaWEtZHluYW1pYy1maWVsZC13cmFwcGVyIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCJtb2RlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1maWVsZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICAgIDxwLWlucHV0bWFza1xuICAgICAgICAgICAgW2lucHV0SWRdPVwiZmllbGQuZmllbGRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICBtYXNrPVwiOTk6OTlcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgc2xvdENoYXI9XCJfXCJcbiAgICAgICAgICAgIFthdXRvQ2xlYXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInRpbWUtaW5wdXQgdy1mdWxsXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzogJzEwMCUnLCAnZGlzcGxheSc6ICdibG9jayd9XCJcbiAgICAgICAgICAgIFtjbGFzcy5uZy1pbnZhbGlkXT1cImlzRmllbGRJbnZhbGlkKClcIlxuICAgICAgICAgICAgW2NsYXNzLm5nLWRpcnR5XT1cImlzRmllbGREaXJ0eSgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0NvbnRyb2xEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIm9uRGlzcGxheVZhbHVlQ29tcGxldGUoKVwiXG4gICAgICAgICAgICAob25CbHVyKT1cIm9uRGlzcGxheVZhbHVlQmx1cigpXCI+XG4gICAgICAgICAgPC9wLWlucHV0bWFzaz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1idXR0b25zXCI+XG4gICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNsb2NrXCJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInRvZ2dsZVRpbWVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIHBUb29sdGlwPVwiQWJyaXIgc2VsZXRvciBkZSBob3JhXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgICAgICA8L3AtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dQaWNrZXJcIlxuICAgICAgICAgICAgI3RpbWVQaWNrZXJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGlja2VyVmFsdWVcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICBbdGltZU9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hvdXJGb3JtYXRdPVwiJzI0J1wiXG4gICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgIFtpbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3Nob3dJY29uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJvblRpbWVTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25IaWRlKT1cInNob3dQaWNrZXIgPSBmYWxzZVwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwiaGlkZGVuLWNhbGVuZGFyLWlucHV0XCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3dpZHRoJzogJzAnLCAnaGVpZ2h0JzogJzAnLCAnb3ZlcmZsb3cnOiAnaGlkZGVuJywgJ29wYWNpdHknOiAnMCcsICdwb2ludGVyLWV2ZW50cyc6ICdub25lJ31cIj5cbiAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9zaWEtZHluYW1pYy1maWVsZC13cmFwcGVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLnRpbWUtZmllbGQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLnRpbWUtaW5wdXQtZ3JvdXAge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIDo6bmctZGVlcCBwLWlucHV0bWFzayB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMi41cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC50aW1lLWJ1dHRvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgIH1cblxuICAgICAgOjpuZy1kZWVwIC5wLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBtaW4td2lkdGg6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5wLWJ1dHRvbi1pY29uIHtcbiAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAucC1idXR0b24tbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5oaWRkZW4tY2FsZW5kYXItaW5wdXQsXG4gICAgOjpuZy1kZWVwIC5oaWRkZW4tY2FsZW5kYXItaW5wdXQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gICAgICB3aWR0aDogMCAhaW1wb3J0YW50O1xuICAgICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG5cbiAgICAgIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDAgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBwLWNhbGVuZGFyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6IDAgIWltcG9ydGFudDtcbiAgICAgIGhlaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWVsZFRpbWVDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd0aW1lUGlja2VyJykgdGltZVBpY2tlciE6IENhbGVuZGFyO1xuXG4gIC8qKiBWYWxvciBkZSBleGliacOnw6NvIFwiSEg6bW1cIiAqL1xuICBkaXNwbGF5VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBWYWxvciBkbyBwaWNrZXIgKERhdGUpICovXG4gIHBpY2tlclZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENvbnRyb2xhIGEgcmVuZGVyaXphw6fDo28gZG8gcC1jYWxlbmRhciAqL1xuICBzaG93UGlja2VyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB2YWx1ZVN1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB1cGRhdGluZ0Zyb21Db250cm9sID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IodHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UpIHtcbiAgICBzdXBlcih0cmFuc2xhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5maWVsZCk7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIHRoaXMuc3luY0Rpc3BsYXlGcm9tQ29udHJvbChjb250cm9sLnZhbHVlKTtcblxuICAgICAgdGhpcy52YWx1ZVN1YiA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnVwZGF0aW5nRnJvbUNvbnRyb2wpIHsgcmV0dXJuOyB9XG4gICAgICAgIHRoaXMuc3luY0Rpc3BsYXlGcm9tQ29udHJvbCh2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbmNyb25pemEgbyBkaXNwbGF5VmFsdWUgYSBwYXJ0aXIgZG8gdmFsb3IgZG8gRm9ybUNvbnRyb2wuXG4gICAqIEFjZWl0YTogXCJISDptbVwiLCBcIkhIOm1tOnNzXCIsIERhdGUsIG91IG51bGwuXG4gICAqL1xuICBwcml2YXRlIHN5bmNEaXNwbGF5RnJvbUNvbnRyb2wodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgdGltZVN0ciA9IHRoaXMuZGF0ZVRvVGltZVN0cmluZyh2YWx1ZSk7XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aW1lU3RyKTtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGltZVN0cjtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzID0gU3RyaW5nKHZhbHVlKTtcblxuICAgIC8vIFwiSEg6bW06c3NcIiDihpIgdHJ1bmNhciBwYXJhIFwiSEg6bW1cIlxuICAgIGlmIChzLm1hdGNoKC9eXFxkezJ9OlxcZHsyfTpcXGR7Mn0kLykpIHtcbiAgICAgIGNvbnN0IHNob3J0ID0gcy5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHNob3J0O1xuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoc2hvcnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFwiSEg6bW1cIiDihpIgdXNhciBkaXJldG9cbiAgICBpZiAocy5tYXRjaCgvXlxcZHsyfTpcXGR7Mn0kLykpIHtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gcztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWYWxvciBpbmNvbXBsZXRvXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBudWxsO1xuICB9XG5cbiAgLyoqIENoYW1hZG8gcXVhbmRvIG8gdXN1w6FyaW8gY29tcGxldGEgYSBkaWdpdGHDp8OjbyBkYSBtw6FzY2FyYSAqL1xuICBvbkRpc3BsYXlWYWx1ZUNvbXBsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc3luY0NvbnRyb2xGcm9tRGlzcGxheSgpO1xuICB9XG5cbiAgLyoqIENoYW1hZG8gcXVhbmRvIG8gaW5wdXQgcGVyZGUgZm9jbyAqL1xuICBvbkRpc3BsYXlWYWx1ZUJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5zeW5jQ29udHJvbEZyb21EaXNwbGF5KCk7XG4gIH1cblxuICAvKiogQ29udmVydGUgbyBkaXNwbGF5VmFsdWUgcGFyYSBvIEZvcm1Db250cm9sICovXG4gIHByaXZhdGUgc3luY0NvbnRyb2xGcm9tRGlzcGxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmZpZWxkKTtcbiAgICBpZiAoIWNvbnRyb2wpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAoIXRoaXMuZGlzcGxheVZhbHVlIHx8IHRoaXMuZGlzcGxheVZhbHVlLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKG51bGwpO1xuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXIgSEg6bW1cbiAgICBpZiAodGhpcy5pc1ZhbGlkVGltZSh0aGlzLmRpc3BsYXlWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRoaXMuZGlzcGxheVZhbHVlKTtcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2V0YSBvIHZhbG9yIG5vIGNvbnRyb2wgc2VtIGRpc3BhcmFyIG8gc3Vic2NyaWJlciBpbnRlcm5vICovXG4gIHByaXZhdGUgc2V0Q29udHJvbFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5maWVsZCk7XG4gICAgaWYgKCFjb250cm9sKSB7IHJldHVybjsgfVxuICAgIHRoaXMudXBkYXRpbmdGcm9tQ29udHJvbCA9IHRydWU7XG4gICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgdGhpcy51cGRhdGluZ0Zyb21Db250cm9sID0gZmFsc2U7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PSBDT05WRVJTw5VFUyA9PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgZGF0ZVRvVGltZVN0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7U3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKX06JHtTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxuXG4gIHByaXZhdGUgdGltZVN0cmluZ1RvRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUuaW5jbHVkZXMoJ18nKSkgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQocGFydHNbMF0sIDEwKTtcbiAgICBjb25zdCBtaW51dGVzID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTtcbiAgICBpZiAoaXNOYU4oaG91cnMpIHx8IGlzTmFOKG1pbnV0ZXMpIHx8IGhvdXJzIDwgMCB8fCBob3VycyA+IDIzIHx8IG1pbnV0ZXMgPCAwIHx8IG1pbnV0ZXMgPiA1OSkgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICAgIGQuc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIDAsIDApO1xuICAgIHJldHVybiBkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkVGltZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnOicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgY29uc3QgaCA9IHBhcnNlSW50KHBhcnRzWzBdLCAxMCk7XG4gICAgY29uc3QgbSA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7XG4gICAgcmV0dXJuICFpc05hTihoKSAmJiAhaXNOYU4obSkgJiYgaCA+PSAwICYmIGggPD0gMjMgJiYgbSA+PSAwICYmIG0gPD0gNTk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PSBUSU1FIFBJQ0tFUiA9PT09PT09PT09PT09PT09PT09PVxuXG4gIHRvZ2dsZVRpbWVQaWNrZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzcGxheVZhbHVlICYmICF0aGlzLmRpc3BsYXlWYWx1ZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aGlzLnBpY2tlclZhbHVlID0gdGhpcy50aW1lU3RyaW5nVG9EYXRlKHRoaXMuZGlzcGxheVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5waWNrZXJWYWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UGlja2VyID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRpbWVQaWNrZXIgJiYgdGhpcy50aW1lUGlja2VyLmlucHV0ZmllbGRWaWV3Q2hpbGQpIHtcbiAgICAgICAgdGhpcy50aW1lUGlja2VyLmlucHV0ZmllbGRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25UaW1lU2VsZWN0KGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3QgdGltZVN0ciA9IHRoaXMuZGF0ZVRvVGltZVN0cmluZyhkYXRlKTtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGltZVN0cjtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRpbWVTdHIpO1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5maWVsZCk7XG4gICAgICBpZiAoY29udHJvbCkgeyBjb250cm9sLm1hcmtBc0RpcnR5KCk7IH1cbiAgICB9XG4gIH1cblxuICBpc0NvbnRyb2xEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmZpZWxkKTtcbiAgICByZXR1cm4gY29udHJvbCA/IGNvbnRyb2wuZGlzYWJsZWQgOiBmYWxzZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucGxhY2Vob2xkZXIgfHwgJ0hIOm1tJztcbiAgfVxufVxuIl19
|