@energycap/components 0.40.1-ECAP-27225-Carbon-Hub-Insights.20241125-1552 → 0.40.1-ECAP-26841-date-input-features.20241125-1709
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/esm2020/lib/components.module.mjs +15 -5
- package/esm2020/lib/controls/calendar/calendar-item.component.mjs +3 -3
- package/esm2020/lib/controls/calendar/calendar.component.mjs +126 -27
- package/esm2020/lib/controls/calendar/calendar.types.mjs +4 -1
- package/esm2020/lib/controls/date-input/date-input.component.mjs +6 -3
- package/esm2020/lib/controls/tabs/tabs.component.mjs +3 -3
- package/esm2020/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +57 -0
- package/esm2020/lib/shared/directives/keyboard-nav-target/keyboard-nav-target.directive.mjs +58 -0
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/energycap-components.mjs +322 -101
- package/fesm2015/energycap-components.mjs.map +1 -1
- package/fesm2020/energycap-components.mjs +319 -101
- package/fesm2020/energycap-components.mjs.map +1 -1
- package/lib/components.module.d.ts +10 -8
- package/lib/controls/calendar/calendar-item.component.d.ts +1 -1
- package/lib/controls/calendar/calendar.component.d.ts +17 -5
- package/lib/controls/calendar/calendar.types.d.ts +8 -2
- package/lib/controls/date-input/date-input.component.d.ts +3 -2
- package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +16 -0
- package/lib/shared/directives/keyboard-nav-target/keyboard-nav-target.directive.d.ts +14 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/assets/locales/en_US.json +8 -1
@@ -2,15 +2,22 @@ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, O
|
|
2
2
|
import { range } from 'lodash';
|
3
3
|
import moment from 'moment';
|
4
4
|
import { DateTimeHelper } from '../../core/date-time-helper';
|
5
|
-
import { isCalendarSelectionSingleDate } from './calendar.types';
|
5
|
+
import { isCalendarSelectionRange, isCalendarSelectionSingleDate } from './calendar.types';
|
6
6
|
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@
|
8
|
-
import * as i2 from "
|
7
|
+
import * as i1 from "@ngx-translate/core";
|
8
|
+
import * as i2 from "@angular/common";
|
9
|
+
import * as i3 from "./calendar-item.component";
|
10
|
+
import * as i4 from "../../shared/directives/keyboard-nav-target/keyboard-nav-target.directive";
|
11
|
+
import * as i5 from "../../shared/directives/keyboard-nav-container/keyboard-nav-container.directive";
|
9
12
|
export class CalendarComponent {
|
10
|
-
constructor() {
|
13
|
+
constructor(translateService) {
|
14
|
+
this.translateService = translateService;
|
11
15
|
this.id = 'calendar';
|
12
16
|
this.selection = null;
|
13
17
|
this.selectionChange = new EventEmitter();
|
18
|
+
this.selectionModeOptions = ['day'];
|
19
|
+
this.selectionMode = 'day';
|
20
|
+
this.selectionModeChange = new EventEmitter();
|
14
21
|
this.minDate = DateTimeHelper.minDatePickerDate;
|
15
22
|
this.maxDate = DateTimeHelper.maxDatePickerDate;
|
16
23
|
this.focusOutStart = new EventEmitter();
|
@@ -23,6 +30,9 @@ export class CalendarComponent {
|
|
23
30
|
this.calendarItemTrackByDate = (index, item) => item.date.toISOString();
|
24
31
|
this.disablePreviousButton = false;
|
25
32
|
this.disableNextButton = false;
|
33
|
+
this.selectionModeItems = [
|
34
|
+
{ label: this.translateService.instant('CalendarSelectionMode_day'), value: 'day' }
|
35
|
+
];
|
26
36
|
// By default, the active date is today.
|
27
37
|
// This is replaced with the date of the selection if one is provided on init.
|
28
38
|
this.activeDate = new Date();
|
@@ -41,22 +51,36 @@ export class CalendarComponent {
|
|
41
51
|
// TODO ECAP-26841: determine the active date for a range selection and draw the calendar
|
42
52
|
}
|
43
53
|
}
|
54
|
+
if (changes.selectionModeOptions) {
|
55
|
+
this.updateSelectionModes();
|
56
|
+
}
|
44
57
|
}
|
45
58
|
ngOnInit() {
|
46
59
|
if (!this.calendarItems.length) {
|
47
|
-
this.
|
60
|
+
if (this.selectionMode === 'year' ||
|
61
|
+
this.selectionMode === 'month' ||
|
62
|
+
this.selectionMode === 'quarter') {
|
63
|
+
this.drawCalendar(this.selectionMode);
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
this.drawCalendar('day');
|
67
|
+
}
|
48
68
|
}
|
49
69
|
}
|
50
70
|
onItemSelected(item) {
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
71
|
+
switch (this.view) {
|
72
|
+
case 'day':
|
73
|
+
this.onDaySelected(item);
|
74
|
+
break;
|
75
|
+
case 'month':
|
76
|
+
this.onMonthSelected(item);
|
77
|
+
break;
|
78
|
+
case 'quarter':
|
79
|
+
this.onQuarterSelected(item);
|
80
|
+
break;
|
81
|
+
case 'year':
|
82
|
+
this.onYearSelected(item);
|
83
|
+
break;
|
60
84
|
}
|
61
85
|
}
|
62
86
|
onNextClick() {
|
@@ -86,18 +110,76 @@ export class CalendarComponent {
|
|
86
110
|
onYearClick() {
|
87
111
|
this.drawCalendar('year');
|
88
112
|
}
|
89
|
-
|
90
|
-
//
|
91
|
-
if (
|
92
|
-
this.
|
113
|
+
updateSelectionModes() {
|
114
|
+
// Fall back to day selection mode if none are provided
|
115
|
+
if (!this.selectionModeOptions.length) {
|
116
|
+
this.selectionModeOptions = ['day'];
|
117
|
+
}
|
118
|
+
// Update the selection mode options for the calendar menu
|
119
|
+
this.selectionModeItems = this.selectionModeOptions.map(mode => ({
|
120
|
+
label: this.translateService.instant('CalendarSelectionMode_' + mode),
|
121
|
+
value: mode
|
122
|
+
}));
|
123
|
+
if (!this.selectionModeOptions.includes(this.selectionMode)) {
|
124
|
+
this.selectionMode = this.selectionModeOptions[0];
|
93
125
|
}
|
94
126
|
}
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
127
|
+
onDaySelected(item) {
|
128
|
+
if (this.selectionMode === 'day') {
|
129
|
+
this.updateSelection(item.date);
|
130
|
+
}
|
131
|
+
if (this.selectionMode === 'last7days') {
|
132
|
+
const startDate = moment(item.date).subtract(6, 'days').toDate();
|
133
|
+
this.updateSelection({ start: startDate, end: item.date });
|
134
|
+
}
|
135
|
+
if (this.selectionMode === 'last28days') {
|
136
|
+
const startDate = moment(item.date).subtract(27, 'days').toDate();
|
137
|
+
this.updateSelection({ start: startDate, end: item.date });
|
138
|
+
}
|
139
|
+
if (this.selectionMode === 'range') {
|
140
|
+
// If we don't have a selection or the existing selection is a range, start a new range selection.
|
141
|
+
// The next date the user clicks will complete the range.
|
142
|
+
if (!this.selection || isCalendarSelectionRange(this.selection)) {
|
143
|
+
this.updateSelection(item.date);
|
144
|
+
}
|
145
|
+
// If the user already selected a single date, determine if the newly selected date is before or after the existing date.
|
146
|
+
// This will determine the start and end of the range.
|
147
|
+
if (isCalendarSelectionSingleDate(this.selection)) {
|
148
|
+
if (item.date < this.selection) {
|
149
|
+
this.updateSelection({ start: item.date, end: this.selection });
|
150
|
+
}
|
151
|
+
else if (item.date > this.selection) {
|
152
|
+
this.updateSelection({ start: this.selection, end: item.date });
|
153
|
+
}
|
154
|
+
}
|
99
155
|
}
|
100
156
|
}
|
157
|
+
onMonthSelected(item) {
|
158
|
+
if (this.selectionMode === 'month') {
|
159
|
+
this.updateSelection(item.date);
|
160
|
+
}
|
161
|
+
else {
|
162
|
+
this.drawCalendar('day', item.date);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
onQuarterSelected(item) {
|
166
|
+
this.updateSelection(item.date);
|
167
|
+
}
|
168
|
+
onYearSelected(item) {
|
169
|
+
if (this.selectionMode === 'year') {
|
170
|
+
this.updateSelection(item.date);
|
171
|
+
}
|
172
|
+
else if (this.selectionMode === 'quarter') {
|
173
|
+
this.drawCalendar('quarter', item.date);
|
174
|
+
}
|
175
|
+
else {
|
176
|
+
this.drawCalendar('month', item.date);
|
177
|
+
}
|
178
|
+
}
|
179
|
+
updateSelection(selection) {
|
180
|
+
this.selection = selection;
|
181
|
+
this.selectionChange.emit(selection);
|
182
|
+
}
|
101
183
|
drawCalendar(view, goTo) {
|
102
184
|
// If a goTo date is provided, update the active date so we know what to increment on next/previous clicks.
|
103
185
|
if (goTo) {
|
@@ -129,6 +211,7 @@ export class CalendarComponent {
|
|
129
211
|
switch (view) {
|
130
212
|
case 'day': return this.getDayViewItems(activeDate);
|
131
213
|
case 'month': return this.getMonthViewItems(activeDate);
|
214
|
+
case 'quarter': return this.getQuarterViewItems(activeDate);
|
132
215
|
case 'year': return this.getYearViewItems(activeDate);
|
133
216
|
}
|
134
217
|
}
|
@@ -153,6 +236,16 @@ export class CalendarComponent {
|
|
153
236
|
};
|
154
237
|
});
|
155
238
|
}
|
239
|
+
getQuarterViewItems(activeDate) {
|
240
|
+
return range(0, 4).map(i => {
|
241
|
+
const date = moment(activeDate).startOf('year').add(i, 'quarter');
|
242
|
+
const endDate = moment(date).endOf('quarter');
|
243
|
+
return {
|
244
|
+
date: date.toDate(),
|
245
|
+
label: `${date.format('MMM')}–${endDate.format('MMM')}`
|
246
|
+
};
|
247
|
+
});
|
248
|
+
}
|
156
249
|
getYearViewItems(activeDate) {
|
157
250
|
// 4x4 grid of years = 16 years
|
158
251
|
return range(0, 16).map(i => {
|
@@ -174,12 +267,12 @@ export class CalendarComponent {
|
|
174
267
|
return date >= viewStart && date <= viewEnd;
|
175
268
|
}
|
176
269
|
}
|
177
|
-
CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
178
|
-
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CalendarComponent, selector: "ec-calendar", inputs: { id: "id", selection: "selection", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectionChange: "selectionChange", focusOutStart: "focusOutStart", focusOutEnd: "focusOutEnd" }, host: { properties: { "attr.id": "this.id" } }, usesOnChanges: true, ngImport: i0, template: "<
|
270
|
+
CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
271
|
+
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CalendarComponent, selector: "ec-calendar", inputs: { id: "id", selection: "selection", selectionModeOptions: "selectionModeOptions", selectionMode: "selectionMode", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectionChange: "selectionChange", selectionModeChange: "selectionModeChange", focusOutStart: "focusOutStart", focusOutEnd: "focusOutEnd" }, host: { properties: { "attr.id": "this.id" } }, usesOnChanges: true, ngImport: i0, template: "<article ecKeyboardNavContainer\r\n (focusOutStart)=\"focusOutStart.emit($event)\"\r\n (focusOutEnd)=\"focusOutEnd.emit($event)\">\r\n <ul *ngIf=\"selectionModeItems.length > 1\"\r\n class=\"selection-mode-menu border-right p-1\">\r\n <li *ngFor=\"let item of selectionModeItems\">\r\n <button id=\"{{id}}_selectionMode_{{item.value}}\"\r\n ecKeyboardNavTarget\r\n class=\"text-body-1\"\r\n [class.is-selected]=\"item.value === selectionMode\"\r\n (click)=\"selectionMode = item.value; selectionModeChange.emit(item.value);\">\r\n {{item.label}}\r\n </button>\r\n </li>\r\n </ul>\r\n\r\n <header class=\"d-flex align-items-center mt-1 px-1\">\r\n <button id=\"{{id}}_prev_button\"\r\n ecKeyboardNavTarget\r\n class=\"mr-auto\"\r\n (click)=\"onPreviousClick()\"\r\n [disabled]=\"disablePreviousButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"view === 'day'\"\r\n ecKeyboardNavTarget\r\n id=\"{{id}}_month_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onMonthClick()\">\r\n {{month}}\r\n </button>\r\n\r\n <button *ngIf=\"view !== 'year'\"\r\n id=\"{{id}}_year_button\"\r\n ecKeyboardNavTarget\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onYearClick()\">\r\n {{year}}\r\n </button>\r\n\r\n <div id=\"{{id}}_year_range\"\r\n *ngIf=\"view === 'year'\"\r\n class=\"text-body-1 font-weight-bold\"\r\n [innerHTML]=\"yearRange\">\r\n </div>\r\n\r\n <button id=\"{{id}}_next_button\"\r\n ecKeyboardNavTarget\r\n class=\"ml-auto\"\r\n (click)=\"onNextClick()\"\r\n [disabled]=\"disableNextButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\r\n </button>\r\n </header>\r\n\r\n <ul class=\"p-2 {{view}}-view\">\r\n <ng-container *ngIf=\"view === 'day'\">\r\n <li *ngFor=\"let day of weekDays\"\r\n class=\"d-flex align-items-center justify-content-center text-heading-3\">\r\n {{day}}\r\n </li>\r\n </ng-container>\r\n\r\n <li *ngFor=\"let item of calendarItems; trackBy: calendarItemTrackByDate;\">\r\n <button id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\r\n ec-calendar-item\r\n ecKeyboardNavTarget\r\n [item]=\"item\"\r\n [activeDate]=\"activeDate\"\r\n [selection]=\"selection\"\r\n [view]=\"view\"\r\n (click)=\"onItemSelected(item)\"\r\n [hidden]=\"item.date < minDate || item.date > maxDate\"\r\n [innerHTML]=\"item.label\">\r\n </button>\r\n </li>\r\n </ul>\r\n</article>\r\n", styles: [":host{display:inline-block}article{display:grid;grid-template-areas:\"menu header\" \"menu body\"}header{grid-area:header}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);opacity:1;--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}ul{grid-area:body;list-style:none;padding:0;margin:0;display:grid;align-items:stretch;justify-items:stretch;row-gap:.25rem}button[ec-calendar-item]{height:100%;width:100%}ul.day-view{grid-template-columns:repeat(7,2rem);grid-auto-rows:1.75rem}ul.month-view{grid-template-columns:repeat(3,4.67rem);grid-auto-rows:3.25rem}ul.quarter-view{grid-template-columns:repeat(2,7rem);grid-auto-rows:6.75rem}ul.year-view{grid-template-columns:repeat(4,3.5rem);grid-auto-rows:3.25rem}ul.selection-mode-menu{grid-area:menu;grid-template-columns:minmax(7rem,auto);grid-auto-rows:1.75rem}ul.selection-mode-menu button{justify-content:start;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CalendarItemComponent, selector: "button[ec-calendar-item]", inputs: ["item", "activeDate", "selection", "view"] }, { kind: "directive", type: i4.KeyboardNavTargetDirective, selector: "[ecKeyboardNavTarget]", outputs: ["focusOutNext", "focusOutPrevious"] }, { kind: "directive", type: i5.KeyboardNavContainerDirective, selector: "[ecKeyboardNavContainer]", outputs: ["focusOutStart", "focusOutEnd"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
179
272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, decorators: [{
|
180
273
|
type: Component,
|
181
|
-
args: [{ selector: 'ec-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
182
|
-
}], ctorParameters: function () { return []; }, propDecorators: { id: [{
|
274
|
+
args: [{ selector: 'ec-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article ecKeyboardNavContainer\r\n (focusOutStart)=\"focusOutStart.emit($event)\"\r\n (focusOutEnd)=\"focusOutEnd.emit($event)\">\r\n <ul *ngIf=\"selectionModeItems.length > 1\"\r\n class=\"selection-mode-menu border-right p-1\">\r\n <li *ngFor=\"let item of selectionModeItems\">\r\n <button id=\"{{id}}_selectionMode_{{item.value}}\"\r\n ecKeyboardNavTarget\r\n class=\"text-body-1\"\r\n [class.is-selected]=\"item.value === selectionMode\"\r\n (click)=\"selectionMode = item.value; selectionModeChange.emit(item.value);\">\r\n {{item.label}}\r\n </button>\r\n </li>\r\n </ul>\r\n\r\n <header class=\"d-flex align-items-center mt-1 px-1\">\r\n <button id=\"{{id}}_prev_button\"\r\n ecKeyboardNavTarget\r\n class=\"mr-auto\"\r\n (click)=\"onPreviousClick()\"\r\n [disabled]=\"disablePreviousButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"view === 'day'\"\r\n ecKeyboardNavTarget\r\n id=\"{{id}}_month_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onMonthClick()\">\r\n {{month}}\r\n </button>\r\n\r\n <button *ngIf=\"view !== 'year'\"\r\n id=\"{{id}}_year_button\"\r\n ecKeyboardNavTarget\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onYearClick()\">\r\n {{year}}\r\n </button>\r\n\r\n <div id=\"{{id}}_year_range\"\r\n *ngIf=\"view === 'year'\"\r\n class=\"text-body-1 font-weight-bold\"\r\n [innerHTML]=\"yearRange\">\r\n </div>\r\n\r\n <button id=\"{{id}}_next_button\"\r\n ecKeyboardNavTarget\r\n class=\"ml-auto\"\r\n (click)=\"onNextClick()\"\r\n [disabled]=\"disableNextButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\r\n </button>\r\n </header>\r\n\r\n <ul class=\"p-2 {{view}}-view\">\r\n <ng-container *ngIf=\"view === 'day'\">\r\n <li *ngFor=\"let day of weekDays\"\r\n class=\"d-flex align-items-center justify-content-center text-heading-3\">\r\n {{day}}\r\n </li>\r\n </ng-container>\r\n\r\n <li *ngFor=\"let item of calendarItems; trackBy: calendarItemTrackByDate;\">\r\n <button id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\r\n ec-calendar-item\r\n ecKeyboardNavTarget\r\n [item]=\"item\"\r\n [activeDate]=\"activeDate\"\r\n [selection]=\"selection\"\r\n [view]=\"view\"\r\n (click)=\"onItemSelected(item)\"\r\n [hidden]=\"item.date < minDate || item.date > maxDate\"\r\n [innerHTML]=\"item.label\">\r\n </button>\r\n </li>\r\n </ul>\r\n</article>\r\n", styles: [":host{display:inline-block}article{display:grid;grid-template-areas:\"menu header\" \"menu body\"}header{grid-area:header}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);opacity:1;--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}ul{grid-area:body;list-style:none;padding:0;margin:0;display:grid;align-items:stretch;justify-items:stretch;row-gap:.25rem}button[ec-calendar-item]{height:100%;width:100%}ul.day-view{grid-template-columns:repeat(7,2rem);grid-auto-rows:1.75rem}ul.month-view{grid-template-columns:repeat(3,4.67rem);grid-auto-rows:3.25rem}ul.quarter-view{grid-template-columns:repeat(2,7rem);grid-auto-rows:6.75rem}ul.year-view{grid-template-columns:repeat(4,3.5rem);grid-auto-rows:3.25rem}ul.selection-mode-menu{grid-area:menu;grid-template-columns:minmax(7rem,auto);grid-auto-rows:1.75rem}ul.selection-mode-menu button{justify-content:start;height:100%;width:100%}\n"] }]
|
275
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { id: [{
|
183
276
|
type: HostBinding,
|
184
277
|
args: ['attr.id']
|
185
278
|
}, {
|
@@ -188,6 +281,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
188
281
|
type: Input
|
189
282
|
}], selectionChange: [{
|
190
283
|
type: Output
|
284
|
+
}], selectionModeOptions: [{
|
285
|
+
type: Input
|
286
|
+
}], selectionMode: [{
|
287
|
+
type: Input
|
288
|
+
}], selectionModeChange: [{
|
289
|
+
type: Output
|
191
290
|
}], minDate: [{
|
192
291
|
type: Input
|
193
292
|
}], maxDate: [{
|
@@ -197,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
197
296
|
}], focusOutEnd: [{
|
198
297
|
type: Output
|
199
298
|
}] } });
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQWlELDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFRaEgsTUFBTSxPQUFPLGlCQUFpQjtJQTRDNUI7UUF6Q2dCLE9BQUUsR0FBVyxVQUFVLENBQUM7UUFFL0IsY0FBUyxHQUE2QixJQUFJLENBQUM7UUFDMUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUVoRSxZQUFPLEdBQVMsY0FBYyxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELFlBQU8sR0FBUyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFFaEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBVzFELCtEQUErRDtRQUN4RCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFLMUMsd0RBQXdEO1FBQ2pELFNBQUksR0FBaUIsS0FBSyxDQUFDO1FBUWxDLDhIQUE4SDtRQUM5SCw0QkFBdUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxGLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFHeEMsd0NBQXdDO1FBQ3hDLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0IscUVBQXFFO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2QyxnRUFBZ0U7WUFDaEUsSUFDRSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUM3QyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFDekU7Z0JBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLHlGQUF5RjthQUMxRjtTQUNGO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTSxjQUFjLENBQUMsSUFBa0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLG9EQUFvRDtRQUNwRCwwREFBMEQ7UUFDMUQsbURBQW1EO1FBQ25ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwRCxpR0FBaUc7UUFDakcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsb0RBQW9EO1FBQ3BELHdEQUF3RDtRQUN4RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDcEQsaUdBQWlHO1FBQ2pHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCwyQ0FBMkM7SUFDcEMsWUFBWTtRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCwwQ0FBMEM7SUFDbkMsV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFvQjtRQUM1QyxzRkFBc0Y7UUFDdEYsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQW9CO1FBQzNDLGtGQUFrRjtRQUNsRixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsSUFBa0IsRUFBRSxJQUFXO1FBQ2xELDJHQUEyRztRQUMzRyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUosSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBRS9GLHdHQUF3RztRQUN4RyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNyRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1NBQ3BDO1FBRUQsdUdBQXVHO1FBQ3ZHLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBa0IsRUFBRSxVQUFnQjtRQUMzRCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEQsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFTyxlQUFlLENBQUMsVUFBZ0I7UUFDdEMsNkJBQTZCO1FBQzdCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsMkRBQTJEO1lBQzNELHNFQUFzRTtZQUN0RSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9FLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUN4QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBZ0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEUsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQzFCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxVQUFnQjtRQUN2QywrQkFBK0I7UUFDL0IsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxQiwrREFBK0Q7WUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkYsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2FBQzNCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtRUFBbUU7SUFDM0QsWUFBWSxDQUFDLElBQVU7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzlCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2RSxPQUFPLElBQUksSUFBSSxTQUFTLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQztJQUM5QyxDQUFDOzs4R0F2TlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsMlRDWjlCLDh6RUE0REs7MkZEaERRLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU07MEVBSy9CLEVBQUU7c0JBRGpCLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVFLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVUaW1lSGVscGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRlLXRpbWUtaGVscGVyJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJJdGVtLCBDYWxlbmRhclNlbGVjdGlvbiwgQ2FsZW5kYXJWaWV3LCBpc0NhbGVuZGFyU2VsZWN0aW9uU2luZ2xlRGF0ZSB9IGZyb20gJy4vY2FsZW5kYXIudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXHJcbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmcgPSAnY2FsZW5kYXInO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3Rpb246IENhbGVuZGFyU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJTZWxlY3Rpb24gfCBudWxsPigpO1xyXG5cclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlID0gRGF0ZVRpbWVIZWxwZXIubWluRGF0ZVBpY2tlckRhdGU7XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSA9IERhdGVUaW1lSGVscGVyLm1heERhdGVQaWNrZXJEYXRlO1xyXG5cclxuICBAT3V0cHV0KCkgZm9jdXNPdXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgZm9jdXNPdXRFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XHJcblxyXG4gIC8qKiBNb250aCBvZiB0aGUgYWN0aXZlIGRhdGUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgYnV0dG9ucy4gKi9cclxuICBwdWJsaWMgbW9udGg/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBZZWFyIG9mIHRoZSBhY3RpdmUgZGF0ZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBidXR0b25zLiAqL1xyXG4gIHB1YmxpYyB5ZWFyPzogc3RyaW5nO1xyXG5cclxuICAvKiogUmFuZ2Ugb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgeWVhciB2aWV3LiAqL1xyXG4gIHB1YmxpYyB5ZWFyUmFuZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBBcnJheSBvZiBjYWxlbmRhciBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBjYWxlbmRhciBncmlkLiAqL1xyXG4gIHB1YmxpYyBjYWxlbmRhckl0ZW1zOiBDYWxlbmRhckl0ZW1bXSA9IFtdO1xyXG5cclxuICAvKiogV2Vla2RheSBsYWJlbHMgdG8gc2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBjYWxlbmRhciBpbiBkYXkgdmlldy4gKi9cclxuICBwdWJsaWMgd2Vla0RheXM6IHN0cmluZ1tdO1xyXG5cclxuICAvKiogRGV0ZXJtaW5lcyB0aGUgY3VycmVudCB2aWV3IG1vZGUgb2YgdGhlIGNhbGVuZGFyLiAqL1xyXG4gIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSAnZGF5JztcclxuXHJcbiAgLyoqIFxyXG4gICAqIFRyYWNrcyB0aGUgbW9udGggYW5kIHllYXIgYmVpbmcgdmlld2VkIGluIHRoZSBjYWxlbmRhci5cclxuICAgKiBUaGlzIGlzIHNlcGFyYXRlIGZyb20gdGhlIHNlbGVjdGlvbiwgd2hpY2ggbWF5IGJlIG91dCBvZiB2aWV3LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhY3RpdmVEYXRlOiBEYXRlO1xyXG5cclxuICAvKiogVHJhY2tCeSBmdW5jdGlvbiBmb3IgdGhlIGNhbGVuZGFyIGl0ZW1zLiBUaGlzIGF2b2lkcyByZS1kcmF3aW5nIGNhbGVuZGFyIGl0ZW1zIGlmIGEgZGF0ZSBpcyBzaGFyZWQgYmV0d2VlbiB2aWV3IHVwZGF0ZXMgKi9cclxuICBjYWxlbmRhckl0ZW1UcmFja0J5RGF0ZSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBDYWxlbmRhckl0ZW0pID0+IGl0ZW0uZGF0ZS50b0lTT1N0cmluZygpO1xyXG5cclxuICBwdWJsaWMgZGlzYWJsZVByZXZpb3VzQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGRpc2FibGVOZXh0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgLy8gQnkgZGVmYXVsdCwgdGhlIGFjdGl2ZSBkYXRlIGlzIHRvZGF5LlxyXG4gICAgLy8gVGhpcyBpcyByZXBsYWNlZCB3aXRoIHRoZSBkYXRlIG9mIHRoZSBzZWxlY3Rpb24gaWYgb25lIGlzIHByb3ZpZGVkIG9uIGluaXQuXHJcbiAgICB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgLy8gVXNpbmcgbW9tZW50IGhlcmUgdG8gZ2V0IHRoZSB3ZWVrZGF5IGxhYmVscyBzbyB0aGV5IGFyZSBsb2NhbGl6ZWQuXHJcbiAgICB0aGlzLndlZWtEYXlzID0gbW9tZW50LndlZWtkYXlzU2hvcnQoKS5tYXAoZCA9PiBkLnNsaWNlKDAsIDEpKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICAvLyBPbmx5IG5lZWQgdG8gdXBkYXRlIHRoZSB2aWV3IGlmIHRoZSBzZWxlY3Rpb24gaXMgb3V0IG9mIHZpZXcuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBpc0NhbGVuZGFyU2VsZWN0aW9uU2luZ2xlRGF0ZSh0aGlzLnNlbGVjdGlvbikgJiZcclxuICAgICAgICAhdGhpcy5pc0RhdGVJblZpZXcodGhpcy5zZWxlY3Rpb24pICYmXHJcbiAgICAgICAgbW9tZW50KHRoaXMuc2VsZWN0aW9uKS5pc0JldHdlZW4odGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsICdkYXknLCAnW10nKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmRyYXdDYWxlbmRhcignZGF5JywgdGhpcy5zZWxlY3Rpb24pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFRPRE8gRUNBUC0yNjg0MTogZGV0ZXJtaW5lIHRoZSBhY3RpdmUgZGF0ZSBmb3IgYSByYW5nZSBzZWxlY3Rpb24gYW5kIGRyYXcgdGhlIGNhbGVuZGFyXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFySXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKCdkYXknKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3RlZChpdGVtOiBDYWxlbmRhckl0ZW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uID0gaXRlbS5kYXRlO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKCdkYXknLCBpdGVtLmRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcignbW9udGgnLCBpdGVtLmRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmV4dENsaWNrKCk6IHZvaWQge1xyXG4gICAgLy8gSWYgd2UncmUgaW4gZGF5IHZpZXcsIHdlJ3JlIGluY3JlbWVudGluZyBieSBtb250aFxyXG4gICAgLy8gSW4gYm90aCBtb250aCBhbmQgeWVhciB2aWV3cyB3ZSdyZSBpbmNyZW1lbnRpbmcgYnkgeWVhclxyXG4gICAgLy8gSW4geWVhciB2aWV3LCB3ZSdyZSBtb3ZpbmcgYnkgMTYgeWVhcnMgYXQgYSB0aW1lXHJcbiAgICBjb25zdCB1bml0ID0gdGhpcy52aWV3ID09PSAnZGF5JyA/ICdtb250aCcgOiAneWVhcic7XHJcbiAgICAvLyBJbiB5ZWFyIHZpZXcsIHdlJ3JlIG1vdmluZyBieSAxNiB5ZWFycyBhdCBhIHRpbWUuIE90aGVyd2lzZSB3ZSdyZSBqdXN0IG1vdmluZyBieSAxIG1vbnRoL3llYXIuXHJcbiAgICBjb25zdCBjb3VudCA9IHRoaXMudmlldyA9PT0gJ3llYXInID8gMTYgOiAxO1xyXG4gICAgY29uc3QgZ29Ub0RhdGUgPSBtb21lbnQodGhpcy5hY3RpdmVEYXRlKS5hZGQoY291bnQsIHVuaXQpLnRvRGF0ZSgpO1xyXG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIodGhpcy52aWV3LCBnb1RvRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QcmV2aW91c0NsaWNrKCk6IHZvaWQge1xyXG4gICAgLy8gSWYgd2UncmUgaW4gZGF5IHZpZXcsIHdlJ3JlIGluY3JlbWVudGluZyBieSBtb250aFxyXG4gICAgLy8gSW4gYm90aCBtb250aCBhbmQgeWVhciB2aWV3cyB3ZSdyZSBpbmNyZW1lbnRpbmcgeWVhcnNcclxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcgPT09ICdkYXknID8gJ21vbnRoJyA6ICd5ZWFyJztcclxuICAgIC8vIEluIHllYXIgdmlldywgd2UncmUgbW92aW5nIGJ5IDE2IHllYXJzIGF0IGEgdGltZS4gT3RoZXJ3aXNlIHdlJ3JlIGp1c3QgbW92aW5nIGJ5IDEgbW9udGgveWVhci5cclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy52aWV3ID09PSAneWVhcicgPyAxNiA6IDE7XHJcbiAgICBjb25zdCBnb1RvRGF0ZSA9IG1vbWVudCh0aGlzLmFjdGl2ZURhdGUpLnN1YnRyYWN0KGNvdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIHRoaXMuZHJhd0NhbGVuZGFyKHRoaXMudmlldywgZ29Ub0RhdGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN3aXRjaGVzIHRoZSBjYWxlbmRhciB0byBtb250aCB2aWV3LiAqL1xyXG4gIHB1YmxpYyBvbk1vbnRoQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmRyYXdDYWxlbmRhcignbW9udGgnKTtcclxuICB9XHJcblxyXG4gIC8qKiBTd2l0Y2hlcyB0aGUgY2FsZW5kYXIgdG8geWVhciB2aWV3LiAqL1xyXG4gIHB1YmxpYyBvblllYXJDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZHJhd0NhbGVuZGFyKCd5ZWFyJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25GaXJzdEl0ZW1LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAvLyBJZiB0aGUgdXNlciBpcyB0YWJiaW5nIGJhY2t3YXJkcyBmcm9tIHRoZSBmaXJzdCBpdGVtLCBlbWl0IHRoZSBmb2N1c091dFN0YXJ0IGV2ZW50LlxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgZXZlbnQuc2hpZnRLZXkpIHtcclxuICAgICAgdGhpcy5mb2N1c091dFN0YXJ0LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTGFzdEl0ZW1LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAvLyBJZiB0aGUgdXNlciBpcyB0YWJiaW5nIGZvcndhcmRzIGZyb20gdGhlIGxhc3QgaXRlbSwgZW1pdCB0aGUgZm9jdXNPdXRFbmQgZXZlbnQuXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJyAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcclxuICAgICAgdGhpcy5mb2N1c091dEVuZC5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZHJhd0NhbGVuZGFyKHZpZXc6IENhbGVuZGFyVmlldywgZ29Ubz86IERhdGUpOiB2b2lkIHtcclxuICAgIC8vIElmIGEgZ29UbyBkYXRlIGlzIHByb3ZpZGVkLCB1cGRhdGUgdGhlIGFjdGl2ZSBkYXRlIHNvIHdlIGtub3cgd2hhdCB0byBpbmNyZW1lbnQgb24gbmV4dC9wcmV2aW91cyBjbGlja3MuXHJcbiAgICBpZiAoZ29Ubykge1xyXG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBnb1RvO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLm1vbnRoID0gbW9tZW50KHRoaXMuYWN0aXZlRGF0ZSkuZm9ybWF0KCdNTU0nKTtcclxuICAgIHRoaXMueWVhciA9IG1vbWVudCh0aGlzLmFjdGl2ZURhdGUpLmZvcm1hdCgnWVlZWScpO1xyXG4gICAgdGhpcy52aWV3ID0gdmlldztcclxuICAgIHRoaXMuY2FsZW5kYXJJdGVtcyA9IHRoaXMuZ2V0Q2FsZW5kYXJJdGVtcyh2aWV3LCB0aGlzLmFjdGl2ZURhdGUpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuY2FsZW5kYXJJdGVtc1swXS5kYXRlIDwgdGhpcy5taW5EYXRlID8gdGhpcy5taW5EYXRlIDogdGhpcy5jYWxlbmRhckl0ZW1zWzBdLmRhdGU7XHJcbiAgICBjb25zdCBlbmRZZWFyID0gdGhpcy5jYWxlbmRhckl0ZW1zW3RoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGggLSAxXS5kYXRlID4gdGhpcy5tYXhEYXRlID8gdGhpcy5tYXhEYXRlIDogdGhpcy5jYWxlbmRhckl0ZW1zW3RoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGggLSAxXS5kYXRlO1xyXG4gICAgdGhpcy55ZWFyUmFuZ2UgPSBgJHttb21lbnQoc3RhcnRZZWFyKS5mb3JtYXQoJ1lZWVknKX0mbmRhc2g7JHttb21lbnQoZW5kWWVhcikuZm9ybWF0KCdZWVlZJyl9YDtcclxuXHJcbiAgICAvLyBJZiB0aGUgYWN0aXZlIGRhdGUgaXMgbGVzcyB0aGFuIHRoZSBtaW4gZGF0ZSBvciB0aGUgbWluIGRhdGUgaXMgaW4gdmlldywgZGlzYWJsZSB0aGUgcHJldmlvdXMgYnV0dG9uLlxyXG4gICAgaWYgKHRoaXMuYWN0aXZlRGF0ZSA8IHRoaXMubWluRGF0ZSB8fCB0aGlzLmlzRGF0ZUluVmlldyh0aGlzLm1pbkRhdGUpKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgdGhlIGFjdGl2ZSBkYXRlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IGRhdGUgb3IgdGhlIG1heCBkYXRlIGlzIGluIHZpZXcsIGRpc2FibGUgdGhlIG5leHQgYnV0dG9uLlxyXG4gICAgaWYgKHRoaXMuYWN0aXZlRGF0ZSA+IHRoaXMubWF4RGF0ZSB8fCB0aGlzLmlzRGF0ZUluVmlldyh0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNhYmxlTmV4dEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYWxlbmRhckl0ZW1zKHZpZXc6IENhbGVuZGFyVmlldywgYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFySXRlbVtdIHtcclxuICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICBjYXNlICdkYXknOiByZXR1cm4gdGhpcy5nZXREYXlWaWV3SXRlbXMoYWN0aXZlRGF0ZSk7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuIHRoaXMuZ2V0TW9udGhWaWV3SXRlbXMoYWN0aXZlRGF0ZSk7XHJcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gdGhpcy5nZXRZZWFyVmlld0l0ZW1zKGFjdGl2ZURhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXlWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFySXRlbVtdIHtcclxuICAgIC8vIDYgcm93cyBvZiA3IGRheXMgPSA0MiBkYXlzXHJcbiAgICByZXR1cm4gcmFuZ2UoMCwgNDIpLm1hcChpID0+IHtcclxuICAgICAgLy8gVXNlIHRoZSBzdGFydCBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aC5cclxuICAgICAgLy8gVGhpcyBwYWRzIG91dCB0aGUgZmlyc3Qgd2VlayB3aXRoIGFueSBkYXlzIGZyb20gdGhlIHByZXZpb3VzIG1vbnRoLlxyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpLmFkZChpLCAnZGF5Jyk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICBsYWJlbDogZGF0ZS5mb3JtYXQoJ0QnKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1vbnRoVmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gcmFuZ2UoMCwgMTIpLm1hcChpID0+IHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChhY3RpdmVEYXRlKS5zdGFydE9mKCd5ZWFyJykuYWRkKGksICdtb250aCcpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgbGFiZWw6IGRhdGUuZm9ybWF0KCdNTU0nKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFllYXJWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFySXRlbVtdIHtcclxuICAgIC8vIDR4NCBncmlkIG9mIHllYXJzID0gMTYgeWVhcnNcclxuICAgIHJldHVybiByYW5nZSgwLCAxNikubWFwKGkgPT4ge1xyXG4gICAgICAvLyBQdXQgdGhlIGN1cnJlbnQgYWN0aXZlIHllYXIgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgM3JkIHJvdy5cclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChhY3RpdmVEYXRlKS5zdGFydE9mKCd5ZWFyJykuc3VidHJhY3QoOCwgJ3llYXInKS5hZGQoaSwgJ3llYXInKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRlOiBkYXRlLnRvRGF0ZSgpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnWVlZWScpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRhdGUgaXMgd2l0aGluIHRoZSBjdXJyZW50IGNhbGVuZGFyIHZpZXcgKi9cclxuICBwcml2YXRlIGlzRGF0ZUluVmlldyhkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZpZXdTdGFydCA9IHRoaXMuY2FsZW5kYXJJdGVtc1swXS5kYXRlO1xyXG4gICAgY29uc3Qgdmlld0VuZCA9IHRoaXMuY2FsZW5kYXJJdGVtc1t0aGlzLmNhbGVuZGFySXRlbXMubGVuZ3RoIC0gMV0uZGF0ZTtcclxuICAgIHJldHVybiBkYXRlID49IHZpZXdTdGFydCAmJiBkYXRlIDw9IHZpZXdFbmQ7XHJcbiAgfVxyXG59XHJcbiIsIjxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICA8YnV0dG9uIGlkPVwie3tpZH19X3ByZXZfYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwibXItYXV0b1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91c0NsaWNrKClcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwiIWRpc2FibGVQcmV2aW91c0J1dHRvbiA/IG9uRmlyc3RJdGVtS2V5ZG93bigkZXZlbnQpIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUHJldmlvdXNCdXR0b25cIj5cclxuICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTkwXCI+PC9pPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwidmlldyA9PT0gJ2RheSdcIlxyXG4gICAgICAgICAgaWQ9XCJ7e2lkfX1fbW9udGhfYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25Nb250aENsaWNrKClcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwiZGlzYWJsZVByZXZpb3VzQnV0dG9uID8gb25GaXJzdEl0ZW1LZXlkb3duKCRldmVudCkgOiB1bmRlZmluZWRcIj5cclxuICAgIHt7bW9udGh9fVxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwidmlldyAhPT0gJ3llYXInXCJcclxuICAgICAgICAgIGlkPVwie3tpZH19X3llYXJfYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25ZZWFyQ2xpY2soKVwiXHJcbiAgICAgICAgICAoa2V5ZG93bik9XCJkaXNhYmxlUHJldmlvdXNCdXR0b24gJiYgdmlldyAhPT0gJ2RheScgPyBvbkZpcnN0SXRlbUtleWRvd24oJGV2ZW50KSA6IHVuZGVmaW5lZFwiPlxyXG4gICAge3t5ZWFyfX1cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGRpdiBpZD1cInt7aWR9fV95ZWFyX3JhbmdlXCJcclxuICAgICAgICpuZ0lmPVwidmlldyA9PT0gJ3llYXInXCJcclxuICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICBbaW5uZXJIVE1MXT1cInllYXJSYW5nZVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uIGlkPVwie3tpZH19X25leHRfYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwibWwtYXV0b1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25OZXh0Q2xpY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZU5leHRCdXR0b25cIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwiZGlzYWJsZVByZXZpb3VzQnV0dG9uICYmIHZpZXcgPT09ICd5ZWFyJyA/IG9uRmlyc3RJdGVtS2V5ZG93bigkZXZlbnQpIDogdW5kZWZpbmVkXCI+XHJcbiAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1hbmdsZS1kb3duIHJvdGF0ZS0yNzBcIj48L2k+XHJcbiAgPC9idXR0b24+XHJcbjwvaGVhZGVyPlxyXG5cclxuPHVsIGNsYXNzPVwicHgtMSB7e3ZpZXd9fS12aWV3XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcgPT09ICdkYXknXCI+XHJcbiAgICA8bGkgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5c1wiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdGV4dC1oZWFkaW5nLTNcIj5cclxuICAgICAge3tkYXl9fVxyXG4gICAgPC9saT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNhbGVuZGFySXRlbXM7IGxhc3QgYXMgaXNMYXN0OyB0cmFja0J5OiBjYWxlbmRhckl0ZW1UcmFja0J5RGF0ZTtcIj5cclxuICAgIDxidXR0b24gaWQ9XCJ7e2lkfX1faXRlbV97e2l0ZW0uZGF0ZSB8IGRhdGU6J01NX2RkX3l5eXknfX1cIlxyXG4gICAgICAgICAgICBlYy1jYWxlbmRhci1pdGVtXHJcbiAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICBbYWN0aXZlRGF0ZV09XCJhY3RpdmVEYXRlXCJcclxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxyXG4gICAgICAgICAgICBbdmlld109XCJ2aWV3XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCJcclxuICAgICAgICAgICAgKGtleWRvd24pPVwiaXNMYXN0ID8gb25MYXN0SXRlbUtleWRvd24oJGV2ZW50KSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5kYXRlIDwgbWluRGF0ZSB8fCBpdGVtLmRhdGUgPiBtYXhEYXRlXCI+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2xpPlxyXG48L3VsPiJdfQ==
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRS9JLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RCxPQUFPLEVBQXdFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFRakssTUFBTSxPQUFPLGlCQUFpQjtJQXFENUIsWUFDVSxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQW5ENUIsT0FBRSxHQUFXLFVBQVUsQ0FBQztRQUUvQixjQUFTLEdBQTZCLElBQUksQ0FBQztRQUMxQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRWhFLHlCQUFvQixHQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhELGtCQUFhLEdBQTBCLEtBQUssQ0FBQztRQUM1Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUVqRSxZQUFPLEdBQVMsY0FBYyxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELFlBQU8sR0FBUyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFFaEQs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QUFtQjtzQkFBNUIsTUFBTTtnQkFFRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVUaW1lSGVscGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRlLXRpbWUtaGVscGVyJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJJdGVtLCBDYWxlbmRhclNlbGVjdGlvbiwgQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLCBDYWxlbmRhclZpZXcsIGlzQ2FsZW5kYXJTZWxlY3Rpb25SYW5nZSwgaXNDYWxlbmRhclNlbGVjdGlvblNpbmdsZURhdGUgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJ2NhbGVuZGFyJztcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uOiBDYWxlbmRhclNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyU2VsZWN0aW9uIHwgbnVsbD4oKTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZU9wdGlvbnM6IENhbGVuZGFyU2VsZWN0aW9uTW9kZVtdID0gWydkYXknXTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlID0gJ2RheSc7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbk1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyU2VsZWN0aW9uTW9kZT4oKTtcclxuXHJcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSA9IERhdGVUaW1lSGVscGVyLm1pbkRhdGVQaWNrZXJEYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgPSBEYXRlVGltZUhlbHBlci5tYXhEYXRlUGlja2VyRGF0ZTtcclxuXHJcbiAgQE91dHB1dCgpIGZvY3VzT3V0U3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzT3V0RW5kID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xyXG5cclxuICAvKiogTW9udGggb2YgdGhlIGFjdGl2ZSBkYXRlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyIGJ1dHRvbnMuICovXHJcbiAgcHVibGljIG1vbnRoPzogc3RyaW5nO1xyXG5cclxuICAvKiogWWVhciBvZiB0aGUgYWN0aXZlIGRhdGUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgYnV0dG9ucy4gKi9cclxuICBwdWJsaWMgeWVhcj86IHN0cmluZztcclxuXHJcbiAgLyoqIFJhbmdlIG9mIHllYXJzIHRvIGRpc3BsYXkgaW4gdGhlIHllYXIgdmlldy4gKi9cclxuICBwdWJsaWMgeWVhclJhbmdlPzogc3RyaW5nO1xyXG5cclxuICAvKiogQXJyYXkgb2YgY2FsZW5kYXIgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgY2FsZW5kYXIgZ3JpZC4gKi9cclxuICBwdWJsaWMgY2FsZW5kYXJJdGVtczogQ2FsZW5kYXJJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqIFdlZWtkYXkgbGFiZWxzIHRvIHNob3cgYXQgdGhlIHRvcCBvZiB0aGUgY2FsZW5kYXIgaW4gZGF5IHZpZXcuICovXHJcbiAgcHVibGljIHdlZWtEYXlzOiBzdHJpbmdbXTtcclxuXHJcbiAgLyoqIERldGVybWluZXMgdGhlIGN1cnJlbnQgdmlldyBtb2RlIG9mIHRoZSBjYWxlbmRhci4gKi9cclxuICBwdWJsaWMgdmlldzogQ2FsZW5kYXJWaWV3ID0gJ2RheSc7XHJcblxyXG4gIC8qKiBcclxuICAgKiBUcmFja3MgdGhlIG1vbnRoIGFuZCB5ZWFyIGJlaW5nIHZpZXdlZCBpbiB0aGUgY2FsZW5kYXIuXHJcbiAgICogVGhpcyBpcyBzZXBhcmF0ZSBmcm9tIHRoZSBzZWxlY3Rpb24sIHdoaWNoIG1heSBiZSBvdXQgb2Ygdmlldy5cclxuICAgKi9cclxuICBwdWJsaWMgYWN0aXZlRGF0ZTogRGF0ZTtcclxuXHJcbiAgLyoqIFRyYWNrQnkgZnVuY3Rpb24gZm9yIHRoZSBjYWxlbmRhciBpdGVtcy4gVGhpcyBhdm9pZHMgcmUtZHJhd2luZyBjYWxlbmRhciBpdGVtcyBpZiBhIGRhdGUgaXMgc2hhcmVkIGJldHdlZW4gdmlldyB1cGRhdGVzICovXHJcbiAgY2FsZW5kYXJJdGVtVHJhY2tCeURhdGUgPSAoaW5kZXg6IG51bWJlciwgaXRlbTogQ2FsZW5kYXJJdGVtKSA9PiBpdGVtLmRhdGUudG9JU09TdHJpbmcoKTtcclxuXHJcbiAgcHVibGljIGRpc2FibGVQcmV2aW91c0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkaXNhYmxlTmV4dEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc2VsZWN0aW9uTW9kZUl0ZW1zOiBNZW51SXRlbTxDYWxlbmRhclNlbGVjdGlvbk1vZGU+W10gPSBbXHJcbiAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlX2RheScpLCB2YWx1ZTogJ2RheScgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyBCeSBkZWZhdWx0LCB0aGUgYWN0aXZlIGRhdGUgaXMgdG9kYXkuXHJcbiAgICAvLyBUaGlzIGlzIHJlcGxhY2VkIHdpdGggdGhlIGRhdGUgb2YgdGhlIHNlbGVjdGlvbiBpZiBvbmUgaXMgcHJvdmlkZWQgb24gaW5pdC5cclxuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAvLyBVc2luZyBtb21lbnQgaGVyZSB0byBnZXQgdGhlIHdlZWtkYXkgbGFiZWxzIHNvIHRoZXkgYXJlIGxvY2FsaXplZC5cclxuICAgIHRoaXMud2Vla0RheXMgPSBtb21lbnQud2Vla2RheXNTaG9ydCgpLm1hcChkID0+IGQuc2xpY2UoMCwgMSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgIC8vIE9ubHkgbmVlZCB0byB1cGRhdGUgdGhlIHZpZXcgaWYgdGhlIHNlbGVjdGlvbiBpcyBvdXQgb2Ygdmlldy5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIGlzQ2FsZW5kYXJTZWxlY3Rpb25TaW5nbGVEYXRlKHRoaXMuc2VsZWN0aW9uKSAmJlxyXG4gICAgICAgICF0aGlzLmlzRGF0ZUluVmlldyh0aGlzLnNlbGVjdGlvbikgJiZcclxuICAgICAgICBtb21lbnQodGhpcy5zZWxlY3Rpb24pLmlzQmV0d2Vlbih0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgJ2RheScsICdbXScpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKCdkYXknLCB0aGlzLnNlbGVjdGlvbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVE9ETyBFQ0FQLTI2ODQxOiBkZXRlcm1pbmUgdGhlIGFjdGl2ZSBkYXRlIGZvciBhIHJhbmdlIHNlbGVjdGlvbiBhbmQgZHJhdyB0aGUgY2FsZW5kYXJcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGlvbk1vZGVPcHRpb25zKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uTW9kZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFySXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd5ZWFyJyB8fFxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRoJyB8fFxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3F1YXJ0ZXInXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKHRoaXMuc2VsZWN0aW9uTW9kZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kcmF3Q2FsZW5kYXIoJ2RheScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JdGVtU2VsZWN0ZWQoaXRlbTogQ2FsZW5kYXJJdGVtKTogdm9pZCB7XHJcbiAgICBzd2l0Y2godGhpcy52aWV3KSB7XHJcbiAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgdGhpcy5vbkRheVNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgdGhpcy5vbk1vbnRoU2VsZWN0ZWQoaXRlbSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxyXG4gICAgICAgIHRoaXMub25RdWFydGVyU2VsZWN0ZWQoaXRlbSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHRoaXMub25ZZWFyU2VsZWN0ZWQoaXRlbSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OZXh0Q2xpY2soKTogdm9pZCB7XHJcbiAgICAvLyBJZiB3ZSdyZSBpbiBkYXkgdmlldywgd2UncmUgaW5jcmVtZW50aW5nIGJ5IG1vbnRoXHJcbiAgICAvLyBJbiBib3RoIG1vbnRoIGFuZCB5ZWFyIHZpZXdzIHdlJ3JlIGluY3JlbWVudGluZyBieSB5ZWFyXHJcbiAgICAvLyBJbiB5ZWFyIHZpZXcsIHdlJ3JlIG1vdmluZyBieSAxNiB5ZWFycyBhdCBhIHRpbWVcclxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcgPT09ICdkYXknID8gJ21vbnRoJyA6ICd5ZWFyJztcclxuICAgIC8vIEluIHllYXIgdmlldywgd2UncmUgbW92aW5nIGJ5IDE2IHllYXJzIGF0IGEgdGltZS4gT3RoZXJ3aXNlIHdlJ3JlIGp1c3QgbW92aW5nIGJ5IDEgbW9udGgveWVhci5cclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy52aWV3ID09PSAneWVhcicgPyAxNiA6IDE7XHJcbiAgICBjb25zdCBnb1RvRGF0ZSA9IG1vbWVudCh0aGlzLmFjdGl2ZURhdGUpLmFkZChjb3VudCwgdW5pdCkudG9EYXRlKCk7XHJcbiAgICB0aGlzLmRyYXdDYWxlbmRhcih0aGlzLnZpZXcsIGdvVG9EYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblByZXZpb3VzQ2xpY2soKTogdm9pZCB7XHJcbiAgICAvLyBJZiB3ZSdyZSBpbiBkYXkgdmlldywgd2UncmUgaW5jcmVtZW50aW5nIGJ5IG1vbnRoXHJcbiAgICAvLyBJbiBib3RoIG1vbnRoIGFuZCB5ZWFyIHZpZXdzIHdlJ3JlIGluY3JlbWVudGluZyB5ZWFyc1xyXG4gICAgY29uc3QgdW5pdCA9IHRoaXMudmlldyA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xyXG4gICAgLy8gSW4geWVhciB2aWV3LCB3ZSdyZSBtb3ZpbmcgYnkgMTYgeWVhcnMgYXQgYSB0aW1lLiBPdGhlcndpc2Ugd2UncmUganVzdCBtb3ZpbmcgYnkgMSBtb250aC95ZWFyLlxyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnZpZXcgPT09ICd5ZWFyJyA/IDE2IDogMTtcclxuICAgIGNvbnN0IGdvVG9EYXRlID0gbW9tZW50KHRoaXMuYWN0aXZlRGF0ZSkuc3VidHJhY3QoY291bnQsIHVuaXQpLnRvRGF0ZSgpO1xyXG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIodGhpcy52aWV3LCBnb1RvRGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogU3dpdGNoZXMgdGhlIGNhbGVuZGFyIHRvIG1vbnRoIHZpZXcuICovXHJcbiAgcHVibGljIG9uTW9udGhDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZHJhd0NhbGVuZGFyKCdtb250aCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN3aXRjaGVzIHRoZSBjYWxlbmRhciB0byB5ZWFyIHZpZXcuICovXHJcbiAgcHVibGljIG9uWWVhckNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoJ3llYXInKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uTW9kZXMoKSB7XHJcbiAgICAvLyBGYWxsIGJhY2sgdG8gZGF5IHNlbGVjdGlvbiBtb2RlIGlmIG5vbmUgYXJlIHByb3ZpZGVkXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uTW9kZU9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZU9wdGlvbnMgPSBbJ2RheSddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0aW9uIG1vZGUgb3B0aW9ucyBmb3IgdGhlIGNhbGVuZGFyIG1lbnVcclxuICAgIHRoaXMuc2VsZWN0aW9uTW9kZUl0ZW1zID0gdGhpcy5zZWxlY3Rpb25Nb2RlT3B0aW9ucy5tYXAobW9kZSA9PiA8TWVudUl0ZW08Q2FsZW5kYXJTZWxlY3Rpb25Nb2RlPj57XHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlXycgKyBtb2RlKSxcclxuICAgICAgdmFsdWU6IG1vZGVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3Rpb25Nb2RlT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnNlbGVjdGlvbk1vZGUpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IHRoaXMuc2VsZWN0aW9uTW9kZU9wdGlvbnNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRGF5U2VsZWN0ZWQoaXRlbTogQ2FsZW5kYXJJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnZGF5Jykge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihpdGVtLmRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdsYXN0N2RheXMnKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChpdGVtLmRhdGUpLnN1YnRyYWN0KDYsICdkYXlzJykudG9EYXRlKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKHsgc3RhcnQ6IHN0YXJ0RGF0ZSwgZW5kOiBpdGVtLmRhdGUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ2xhc3QyOGRheXMnKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChpdGVtLmRhdGUpLnN1YnRyYWN0KDI3LCAnZGF5cycpLnRvRGF0ZSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbih7IHN0YXJ0OiBzdGFydERhdGUsIGVuZDogaXRlbS5kYXRlIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAncmFuZ2UnKSB7XHJcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBzZWxlY3Rpb24gb3IgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiBpcyBhIHJhbmdlLCBzdGFydCBhIG5ldyByYW5nZSBzZWxlY3Rpb24uXHJcbiAgICAgIC8vIFRoZSBuZXh0IGRhdGUgdGhlIHVzZXIgY2xpY2tzIHdpbGwgY29tcGxldGUgdGhlIHJhbmdlLlxyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uIHx8IGlzQ2FsZW5kYXJTZWxlY3Rpb25SYW5nZSh0aGlzLnNlbGVjdGlvbikpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihpdGVtLmRhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJZiB0aGUgdXNlciBhbHJlYWR5IHNlbGVjdGVkIGEgc2luZ2xlIGRhdGUsIGRldGVybWluZSBpZiB0aGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGV4aXN0aW5nIGRhdGUuXHJcbiAgICAgIC8vIFRoaXMgd2lsbCBkZXRlcm1pbmUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHJhbmdlLlxyXG4gICAgICBpZiAoaXNDYWxlbmRhclNlbGVjdGlvblNpbmdsZURhdGUodGhpcy5zZWxlY3Rpb24pKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0ZSA8IHRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbih7IHN0YXJ0OiBpdGVtLmRhdGUsIGVuZDogdGhpcy5zZWxlY3Rpb24gfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmRhdGUgPiB0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oeyBzdGFydDogdGhpcy5zZWxlY3Rpb24sIGVuZDogaXRlbS5kYXRlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk1vbnRoU2VsZWN0ZWQoaXRlbTogQ2FsZW5kYXJJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKGl0ZW0uZGF0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcignZGF5JywgaXRlbS5kYXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25RdWFydGVyU2VsZWN0ZWQoaXRlbTogQ2FsZW5kYXJJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihpdGVtLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblllYXJTZWxlY3RlZChpdGVtOiBDYWxlbmRhckl0ZW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihpdGVtLmRhdGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcigncXVhcnRlcicsIGl0ZW0uZGF0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcignbW9udGgnLCBpdGVtLmRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb24oc2VsZWN0aW9uOiBDYWxlbmRhclNlbGVjdGlvbiB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3Q2FsZW5kYXIodmlldzogQ2FsZW5kYXJWaWV3LCBnb1RvPzogRGF0ZSk6IHZvaWQge1xyXG4gICAgLy8gSWYgYSBnb1RvIGRhdGUgaXMgcHJvdmlkZWQsIHVwZGF0ZSB0aGUgYWN0aXZlIGRhdGUgc28gd2Uga25vdyB3aGF0IHRvIGluY3JlbWVudCBvbiBuZXh0L3ByZXZpb3VzIGNsaWNrcy5cclxuICAgIGlmIChnb1RvKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IGdvVG87XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMubW9udGggPSBtb21lbnQodGhpcy5hY3RpdmVEYXRlKS5mb3JtYXQoJ01NTScpO1xyXG4gICAgdGhpcy55ZWFyID0gbW9tZW50KHRoaXMuYWN0aXZlRGF0ZSkuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xyXG4gICAgdGhpcy5jYWxlbmRhckl0ZW1zID0gdGhpcy5nZXRDYWxlbmRhckl0ZW1zKHZpZXcsIHRoaXMuYWN0aXZlRGF0ZSk7XHJcblxyXG4gICAgY29uc3Qgc3RhcnRZZWFyID0gdGhpcy5jYWxlbmRhckl0ZW1zWzBdLmRhdGUgPCB0aGlzLm1pbkRhdGUgPyB0aGlzLm1pbkRhdGUgOiB0aGlzLmNhbGVuZGFySXRlbXNbMF0uZGF0ZTtcclxuICAgIGNvbnN0IGVuZFllYXIgPSB0aGlzLmNhbGVuZGFySXRlbXNbdGhpcy5jYWxlbmRhckl0ZW1zLmxlbmd0aCAtIDFdLmRhdGUgPiB0aGlzLm1heERhdGUgPyB0aGlzLm1heERhdGUgOiB0aGlzLmNhbGVuZGFySXRlbXNbdGhpcy5jYWxlbmRhckl0ZW1zLmxlbmd0aCAtIDFdLmRhdGU7XHJcbiAgICB0aGlzLnllYXJSYW5nZSA9IGAke21vbWVudChzdGFydFllYXIpLmZvcm1hdCgnWVlZWScpfSZuZGFzaDske21vbWVudChlbmRZZWFyKS5mb3JtYXQoJ1lZWVknKX1gO1xyXG5cclxuICAgIC8vIElmIHRoZSBhY3RpdmUgZGF0ZSBpcyBsZXNzIHRoYW4gdGhlIG1pbiBkYXRlIG9yIHRoZSBtaW4gZGF0ZSBpcyBpbiB2aWV3LCBkaXNhYmxlIHRoZSBwcmV2aW91cyBidXR0b24uXHJcbiAgICBpZiAodGhpcy5hY3RpdmVEYXRlIDwgdGhpcy5taW5EYXRlIHx8IHRoaXMuaXNEYXRlSW5WaWV3KHRoaXMubWluRGF0ZSkpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlUHJldmlvdXNCdXR0b24gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNhYmxlUHJldmlvdXNCdXR0b24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiB0aGUgYWN0aXZlIGRhdGUgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXggZGF0ZSBvciB0aGUgbWF4IGRhdGUgaXMgaW4gdmlldywgZGlzYWJsZSB0aGUgbmV4dCBidXR0b24uXHJcbiAgICBpZiAodGhpcy5hY3RpdmVEYXRlID4gdGhpcy5tYXhEYXRlIHx8IHRoaXMuaXNEYXRlSW5WaWV3KHRoaXMubWF4RGF0ZSkpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlTmV4dEJ1dHRvbiA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVOZXh0QnV0dG9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENhbGVuZGFySXRlbXModmlldzogQ2FsZW5kYXJWaWV3LCBhY3RpdmVEYXRlOiBEYXRlKTogQ2FsZW5kYXJJdGVtW10ge1xyXG4gICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgIGNhc2UgJ2RheSc6IHJldHVybiB0aGlzLmdldERheVZpZXdJdGVtcyhhY3RpdmVEYXRlKTtcclxuICAgICAgY2FzZSAnbW9udGgnOiByZXR1cm4gdGhpcy5nZXRNb250aFZpZXdJdGVtcyhhY3RpdmVEYXRlKTtcclxuICAgICAgY2FzZSAncXVhcnRlcic6IHJldHVybiB0aGlzLmdldFF1YXJ0ZXJWaWV3SXRlbXMoYWN0aXZlRGF0ZSk7XHJcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gdGhpcy5nZXRZZWFyVmlld0l0ZW1zKGFjdGl2ZURhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXlWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFySXRlbVtdIHtcclxuICAgIC8vIDYgcm93cyBvZiA3IGRheXMgPSA0MiBkYXlzXHJcbiAgICByZXR1cm4gcmFuZ2UoMCwgNDIpLm1hcChpID0+IHtcclxuICAgICAgLy8gVXNlIHRoZSBzdGFydCBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aC5cclxuICAgICAgLy8gVGhpcyBwYWRzIG91dCB0aGUgZmlyc3Qgd2VlayB3aXRoIGFueSBkYXlzIGZyb20gdGhlIHByZXZpb3VzIG1vbnRoLlxyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpLmFkZChpLCAnZGF5Jyk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICBsYWJlbDogZGF0ZS5mb3JtYXQoJ0QnKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1vbnRoVmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gcmFuZ2UoMCwgMTIpLm1hcChpID0+IHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChhY3RpdmVEYXRlKS5zdGFydE9mKCd5ZWFyJykuYWRkKGksICdtb250aCcpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgbGFiZWw6IGRhdGUuZm9ybWF0KCdNTU0nKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFF1YXJ0ZXJWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFySXRlbVtdIHtcclxuICAgIHJldHVybiByYW5nZSgwLCA0KS5tYXAoaSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoYWN0aXZlRGF0ZSkuc3RhcnRPZigneWVhcicpLmFkZChpLCAncXVhcnRlcicpO1xyXG4gICAgICBjb25zdCBlbmREYXRlID0gbW9tZW50KGRhdGUpLmVuZE9mKCdxdWFydGVyJyk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICBsYWJlbDogYCR7ZGF0ZS5mb3JtYXQoJ01NTScpfSZuZGFzaDske2VuZERhdGUuZm9ybWF0KCdNTU0nKX1gXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0WWVhclZpZXdJdGVtcyhhY3RpdmVEYXRlOiBEYXRlKTogQ2FsZW5kYXJJdGVtW10ge1xyXG4gICAgLy8gNHg0IGdyaWQgb2YgeWVhcnMgPSAxNiB5ZWFyc1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDE2KS5tYXAoaSA9PiB7XHJcbiAgICAgIC8vIFB1dCB0aGUgY3VycmVudCBhY3RpdmUgeWVhciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAzcmQgcm93LlxyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ3llYXInKS5zdWJ0cmFjdCg4LCAneWVhcicpLmFkZChpLCAneWVhcicpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgbGFiZWw6IGRhdGUuZm9ybWF0KCdZWVlZJylcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGF0ZSBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgY2FsZW5kYXIgdmlldyAqL1xyXG4gIHByaXZhdGUgaXNEYXRlSW5WaWV3KGRhdGU6IERhdGUpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jYWxlbmRhckl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgdmlld1N0YXJ0ID0gdGhpcy5jYWxlbmRhckl0ZW1zWzBdLmRhdGU7XHJcbiAgICBjb25zdCB2aWV3RW5kID0gdGhpcy5jYWxlbmRhckl0ZW1zW3RoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGggLSAxXS5kYXRlO1xyXG4gICAgcmV0dXJuIGRhdGUgPj0gdmlld1N0YXJ0ICYmIGRhdGUgPD0gdmlld0VuZDtcclxuICB9XHJcbn1cclxuIiwiPGFydGljbGUgZWNLZXlib2FyZE5hdkNvbnRhaW5lclxyXG4gICAgICAgICAoZm9jdXNPdXRTdGFydCk9XCJmb2N1c091dFN0YXJ0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgIChmb2N1c091dEVuZCk9XCJmb2N1c091dEVuZC5lbWl0KCRldmVudClcIj5cclxuICA8dWwgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlSXRlbXMubGVuZ3RoID4gMVwiXHJcbiAgICAgIGNsYXNzPVwic2VsZWN0aW9uLW1vZGUtbWVudSBib3JkZXItcmlnaHQgcC0xXCI+XHJcbiAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0aW9uTW9kZUl0ZW1zXCI+XHJcbiAgICAgIDxidXR0b24gaWQ9XCJ7e2lkfX1fc2VsZWN0aW9uTW9kZV97e2l0ZW0udmFsdWV9fVwiXHJcbiAgICAgICAgICAgICAgZWNLZXlib2FyZE5hdlRhcmdldFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTFcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpdGVtLnZhbHVlID09PSBzZWxlY3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZSA9IGl0ZW0udmFsdWU7IHNlbGVjdGlvbk1vZGVDaGFuZ2UuZW1pdChpdGVtLnZhbHVlKTtcIj5cclxuICAgICAgICB7e2l0ZW0ubGFiZWx9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuXHJcbiAgPGhlYWRlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBweC0xXCI+XHJcbiAgICA8YnV0dG9uIGlkPVwie3tpZH19X3ByZXZfYnV0dG9uXCJcclxuICAgICAgICAgICAgZWNLZXlib2FyZE5hdlRhcmdldFxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yLWF1dG9cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91c0NsaWNrKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVByZXZpb3VzQnV0dG9uXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTkwXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpZXcgPT09ICdkYXknXCJcclxuICAgICAgICAgICAgZWNLZXlib2FyZE5hdlRhcmdldFxyXG4gICAgICAgICAgICBpZD1cInt7aWR9fV9tb250aF9idXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xIGZvbnQtd2VpZ2h0LWJvbGRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb250aENsaWNrKClcIj5cclxuICAgICAge3ttb250aH19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uICpuZ0lmPVwidmlldyAhPT0gJ3llYXInXCJcclxuICAgICAgICAgICAgaWQ9XCJ7e2lkfX1feWVhcl9idXR0b25cIlxyXG4gICAgICAgICAgICBlY0tleWJvYXJkTmF2VGFyZ2V0XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblllYXJDbGljaygpXCI+XHJcbiAgICAgIHt7eWVhcn19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8ZGl2IGlkPVwie3tpZH19X3llYXJfcmFuZ2VcIlxyXG4gICAgICAgICAqbmdJZj1cInZpZXcgPT09ICd5ZWFyJ1wiXHJcbiAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICAgIFtpbm5lckhUTUxdPVwieWVhclJhbmdlXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIGlkPVwie3tpZH19X25leHRfYnV0dG9uXCJcclxuICAgICAgICAgICAgZWNLZXlib2FyZE5hdlRhcmdldFxyXG4gICAgICAgICAgICBjbGFzcz1cIm1sLWF1dG9cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25OZXh0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlTmV4dEJ1dHRvblwiPlxyXG4gICAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1hbmdsZS1kb3duIHJvdGF0ZS0yNzBcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2hlYWRlcj5cclxuXHJcbiAgPHVsIGNsYXNzPVwicC0yIHt7dmlld319LXZpZXdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3ID09PSAnZGF5J1wiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5c1wiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWhlYWRpbmctM1wiPlxyXG4gICAgICAgIHt7ZGF5fX1cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjYWxlbmRhckl0ZW1zOyB0cmFja0J5OiBjYWxlbmRhckl0ZW1UcmFja0J5RGF0ZTtcIj5cclxuICAgICAgPGJ1dHRvbiBpZD1cInt7aWR9fV9pdGVtX3t7aXRlbS5kYXRlIHwgZGF0ZTonTU1fZGRfeXl5eSd9fVwiXHJcbiAgICAgICAgICAgICAgZWMtY2FsZW5kYXItaXRlbVxyXG4gICAgICAgICAgICAgIGVjS2V5Ym9hcmROYXZUYXJnZXRcclxuICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICAgICAgICBbYWN0aXZlRGF0ZV09XCJhY3RpdmVEYXRlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlbGVjdGlvblwiXHJcbiAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCJcclxuICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uZGF0ZSA8IG1pbkRhdGUgfHwgaXRlbS5kYXRlID4gbWF4RGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9saT5cclxuICA8L3VsPlxyXG48L2FydGljbGU+XHJcbiJdfQ==
|
@@ -1,4 +1,7 @@
|
|
1
1
|
export function isCalendarSelectionSingleDate(selection) {
|
2
2
|
return selection instanceof Date;
|
3
3
|
}
|
4
|
-
|
4
|
+
export function isCalendarSelectionRange(selection) {
|
5
|
+
return !!selection && selection.start instanceof Date && selection.end instanceof Date;
|
6
|
+
}
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxVQUFVLDZCQUE2QixDQUFDLFNBQW9DO0lBQ2hGLE9BQU8sU0FBUyxZQUFZLElBQUksQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLFNBQW9DO0lBQzNFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSyxTQUEyQixDQUFDLEtBQUssWUFBWSxJQUFJLElBQUssU0FBMkIsQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDO0FBQy9ILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDYWxlbmRhckl0ZW0gPSB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBkYXRlOiBEYXRlO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJSYW5nZSA9IHsgc3RhcnQ6IERhdGU7IGVuZDogRGF0ZSB9O1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJTZWxlY3Rpb24gPSBEYXRlIHwgQ2FsZW5kYXJSYW5nZTtcclxuXHJcbmV4cG9ydCB0eXBlIENhbGVuZGFyU2VsZWN0aW9uTW9kZSA9ICdkYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDI4ZGF5cycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInIHwgJ3JhbmdlJztcclxuXHJcbmV4cG9ydCB0eXBlIENhbGVuZGFyVmlldyA9ICdkYXknIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0NhbGVuZGFyU2VsZWN0aW9uU2luZ2xlRGF0ZShzZWxlY3Rpb24/OiBDYWxlbmRhclNlbGVjdGlvbiB8IG51bGwpOiBzZWxlY3Rpb24gaXMgRGF0ZSB7XHJcbiAgcmV0dXJuIHNlbGVjdGlvbiBpbnN0YW5jZW9mIERhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0NhbGVuZGFyU2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uPzogQ2FsZW5kYXJTZWxlY3Rpb24gfCBudWxsKTogc2VsZWN0aW9uIGlzIENhbGVuZGFyUmFuZ2Uge1xyXG4gIHJldHVybiAhIXNlbGVjdGlvbiAmJiAoc2VsZWN0aW9uIGFzIENhbGVuZGFyUmFuZ2UpLnN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJiAoc2VsZWN0aW9uIGFzIENhbGVuZGFyUmFuZ2UpLmVuZCBpbnN0YW5jZW9mIERhdGU7XHJcbn1cclxuIl19
|