@skyux/datetime 4.12.0 → 4.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/bundles/skyux-datetime.umd.js +1321 -948
- package/bundles/skyux-datetime.umd.js.map +1 -1
- package/bundles/skyux-datetime.umd.min.js +2 -2
- package/bundles/skyux-datetime.umd.min.js.map +1 -1
- package/esm2015/modules/date-range-picker/date-range-picker.component.js +1 -1
- package/esm2015/modules/datepicker/datepicker-calendar-change.js +1 -0
- package/esm2015/modules/datepicker/datepicker-calendar-inner.component.js +30 -4
- package/esm2015/modules/datepicker/datepicker-calendar.component.js +15 -2
- package/esm2015/modules/datepicker/datepicker-custom-date.js +1 -0
- package/esm2015/modules/datepicker/datepicker-date.js +1 -1
- package/esm2015/modules/datepicker/datepicker-input-fuzzy.directive.js +10 -6
- package/esm2015/modules/datepicker/datepicker-input.directive.js +1 -1
- package/esm2015/modules/datepicker/datepicker.component.js +52 -7
- package/esm2015/modules/datepicker/datepicker.module.js +20 -9
- package/esm2015/modules/datepicker/datepicker.service.js +20 -0
- package/esm2015/modules/datepicker/daypicker-button.component.js +26 -0
- package/esm2015/modules/datepicker/daypicker-cell.component.js +131 -0
- package/esm2015/modules/datepicker/daypicker.component.js +96 -4
- package/esm2015/modules/datepicker/fuzzy-date.service.js +11 -1
- package/esm2015/modules/datepicker/monthpicker.component.js +1 -1
- package/esm2015/modules/datepicker/yearpicker.component.js +1 -1
- package/esm2015/modules/timepicker/timepicker.component.js +7 -4
- package/esm2015/modules/timepicker/timepicker.directive.js +3 -2
- package/esm2015/public_api.js +1 -1
- package/esm2015/skyux-datetime.js +6 -3
- package/esm5/modules/date-range-picker/date-range-picker.component.js +1 -1
- package/esm5/modules/datepicker/datepicker-calendar-change.js +1 -0
- package/esm5/modules/datepicker/datepicker-calendar-inner.component.js +30 -4
- package/esm5/modules/datepicker/datepicker-calendar.component.js +15 -2
- package/esm5/modules/datepicker/datepicker-custom-date.js +1 -0
- package/esm5/modules/datepicker/datepicker-date.js +1 -1
- package/esm5/modules/datepicker/datepicker-input-fuzzy.directive.js +10 -6
- package/esm5/modules/datepicker/datepicker-input.directive.js +1 -1
- package/esm5/modules/datepicker/datepicker.component.js +53 -7
- package/esm5/modules/datepicker/datepicker.module.js +20 -9
- package/esm5/modules/datepicker/datepicker.service.js +21 -0
- package/esm5/modules/datepicker/daypicker-button.component.js +27 -0
- package/esm5/modules/datepicker/daypicker-cell.component.js +134 -0
- package/esm5/modules/datepicker/daypicker.component.js +100 -4
- package/esm5/modules/datepicker/fuzzy-date.service.js +11 -1
- package/esm5/modules/datepicker/monthpicker.component.js +1 -1
- package/esm5/modules/datepicker/yearpicker.component.js +1 -1
- package/esm5/modules/timepicker/timepicker.component.js +7 -4
- package/esm5/modules/timepicker/timepicker.directive.js +3 -2
- package/esm5/public_api.js +1 -1
- package/esm5/skyux-datetime.js +6 -3
- package/fesm2015/skyux-datetime.js +1397 -1036
- package/fesm2015/skyux-datetime.js.map +1 -1
- package/fesm5/skyux-datetime.js +1316 -945
- package/fesm5/skyux-datetime.js.map +1 -1
- package/modules/datepicker/datepicker-calendar-change.d.ts +24 -0
- package/modules/datepicker/datepicker-calendar-inner.component.d.ts +12 -2
- package/modules/datepicker/datepicker-calendar.component.d.ts +6 -0
- package/modules/datepicker/datepicker-custom-date.d.ts +21 -0
- package/modules/datepicker/datepicker-date.d.ts +2 -0
- package/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +1 -0
- package/modules/datepicker/datepicker-input.directive.d.ts +1 -1
- package/modules/datepicker/datepicker.component.d.ts +15 -1
- package/modules/datepicker/datepicker.service.d.ts +12 -0
- package/modules/datepicker/daypicker-button.component.d.ts +13 -0
- package/modules/datepicker/daypicker-cell.component.d.ts +37 -0
- package/modules/datepicker/daypicker.component.d.ts +17 -2
- package/modules/datepicker/fuzzy-date.service.d.ts +5 -1
- package/modules/timepicker/timepicker.component.d.ts +2 -1
- package/package.json +3 -2
- package/public_api.d.ts +2 -0
- package/skyux-datetime.d.ts +5 -2
- package/skyux-datetime.metadata.json +1 -1
- package/src/assets/img/guidelines/date-range-picker/content-error.png +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, TemplateRef, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, TemplateRef, OnDestroy, OnInit, Optional, Output, ViewChild } from '@angular/core';
|
|
3
3
|
import { SkyAffixAutoFitContext, SkyAffixer, SkyAffixService, SkyCoreAdapterService, SkyOverlayInstance, SkyOverlayService } from '@skyux/core';
|
|
4
4
|
import { SkyInputBoxHostService } from '@skyux/forms';
|
|
5
5
|
import { SkyThemeService } from '@skyux/theme';
|
|
6
6
|
import { fromEvent, Subject } from 'rxjs';
|
|
7
|
-
import { takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
8
8
|
import { SkyDatepickerCalendarComponent } from './datepicker-calendar.component';
|
|
9
9
|
var nextId = 0;
|
|
10
10
|
/**
|
|
@@ -23,7 +23,14 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
23
23
|
* Adds a class to the datepicker.
|
|
24
24
|
*/
|
|
25
25
|
this.pickerClass = '';
|
|
26
|
+
/**
|
|
27
|
+
* Fires when the range of displayed dates in the calendar changes. Provides the
|
|
28
|
+
* current range of displayed dates and a mutable `customDate` property consumers can use
|
|
29
|
+
* to modify individual dates on the calendar.
|
|
30
|
+
*/
|
|
31
|
+
this.calendarDateRangeChange = new EventEmitter();
|
|
26
32
|
this.dateChange = new EventEmitter();
|
|
33
|
+
this.isDaypickerWaiting = false;
|
|
27
34
|
this.isOpen = false;
|
|
28
35
|
this.isVisible = false;
|
|
29
36
|
this.ngUnsubscribe = new Subject();
|
|
@@ -128,7 +135,6 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
128
135
|
configurable: true
|
|
129
136
|
});
|
|
130
137
|
SkyDatepickerComponent.prototype.ngOnInit = function () {
|
|
131
|
-
this.addTriggerButtonEventListeners();
|
|
132
138
|
if (this.inputBoxHostService) {
|
|
133
139
|
this.inputBoxHostService.populate({
|
|
134
140
|
inputTemplate: this.inputTemplateRef,
|
|
@@ -163,6 +169,34 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
163
169
|
this.openPicker();
|
|
164
170
|
}
|
|
165
171
|
};
|
|
172
|
+
SkyDatepickerComponent.prototype.onCalendarDateRangeChange = function (event) {
|
|
173
|
+
var _this = this;
|
|
174
|
+
/* istanbul ignore else */
|
|
175
|
+
if (event) {
|
|
176
|
+
this.cancelCustomDatesSubscription();
|
|
177
|
+
var args = {
|
|
178
|
+
startDate: event.startDate,
|
|
179
|
+
endDate: event.endDate,
|
|
180
|
+
customDates: undefined
|
|
181
|
+
};
|
|
182
|
+
this.calendarDateRangeChange.emit(args);
|
|
183
|
+
// If consumer has added an observable to the args, watch for incoming custom dates.
|
|
184
|
+
/* istanbul ignore else */
|
|
185
|
+
if (args.customDates) {
|
|
186
|
+
this.isDaypickerWaiting = true;
|
|
187
|
+
// Avoid an ExpressionChangedAfterItHasBeenCheckedError.
|
|
188
|
+
this.changeDetector.detectChanges();
|
|
189
|
+
this.customDatesSubscription = args.customDates
|
|
190
|
+
.pipe(debounceTime(250))
|
|
191
|
+
.subscribe(function (result) {
|
|
192
|
+
_this.customDates = result;
|
|
193
|
+
_this.isDaypickerWaiting = false;
|
|
194
|
+
// Trigger change detection in child components to show changes in the calendar.
|
|
195
|
+
_this.changeDetector.markForCheck();
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
};
|
|
166
200
|
SkyDatepickerComponent.prototype.closePicker = function () {
|
|
167
201
|
this.destroyAffixer();
|
|
168
202
|
this.destroyOverlay();
|
|
@@ -220,6 +254,7 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
220
254
|
_this.closePicker();
|
|
221
255
|
}
|
|
222
256
|
});
|
|
257
|
+
this.addKeydownListner();
|
|
223
258
|
overlay.attachTemplate(this.calendarTemplateRef);
|
|
224
259
|
this.overlay = overlay;
|
|
225
260
|
};
|
|
@@ -230,9 +265,9 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
230
265
|
this.overlay = undefined;
|
|
231
266
|
}
|
|
232
267
|
};
|
|
233
|
-
SkyDatepickerComponent.prototype.
|
|
268
|
+
SkyDatepickerComponent.prototype.addKeydownListner = function () {
|
|
234
269
|
var _this = this;
|
|
235
|
-
fromEvent(window.document, 'keydown')
|
|
270
|
+
this.overlayKeydownListner = fromEvent(window.document, 'keydown')
|
|
236
271
|
.pipe(takeUntil(this.ngUnsubscribe))
|
|
237
272
|
.subscribe(function (event) {
|
|
238
273
|
var _a;
|
|
@@ -243,12 +278,20 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
243
278
|
});
|
|
244
279
|
};
|
|
245
280
|
SkyDatepickerComponent.prototype.removePickerEventListeners = function () {
|
|
281
|
+
var _a;
|
|
246
282
|
/* istanbul ignore else */
|
|
247
283
|
if (this.calendarUnsubscribe) {
|
|
248
284
|
this.calendarUnsubscribe.next();
|
|
249
285
|
this.calendarUnsubscribe.complete();
|
|
250
286
|
this.calendarUnsubscribe = undefined;
|
|
251
287
|
}
|
|
288
|
+
(_a = this.overlayKeydownListner) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
289
|
+
};
|
|
290
|
+
SkyDatepickerComponent.prototype.cancelCustomDatesSubscription = function () {
|
|
291
|
+
if (this.customDatesSubscription) {
|
|
292
|
+
this.customDatesSubscription.unsubscribe();
|
|
293
|
+
this.customDatesSubscription = undefined;
|
|
294
|
+
}
|
|
252
295
|
};
|
|
253
296
|
SkyDatepickerComponent.ctorParameters = function () { return [
|
|
254
297
|
{ type: SkyAffixService },
|
|
@@ -261,6 +304,9 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
261
304
|
__decorate([
|
|
262
305
|
Input()
|
|
263
306
|
], SkyDatepickerComponent.prototype, "pickerClass", void 0);
|
|
307
|
+
__decorate([
|
|
308
|
+
Output()
|
|
309
|
+
], SkyDatepickerComponent.prototype, "calendarDateRangeChange", void 0);
|
|
264
310
|
__decorate([
|
|
265
311
|
ViewChild(SkyDatepickerCalendarComponent)
|
|
266
312
|
], SkyDatepickerComponent.prototype, "calendar", void 0);
|
|
@@ -294,7 +340,7 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
294
340
|
SkyDatepickerComponent = __decorate([
|
|
295
341
|
Component({
|
|
296
342
|
selector: 'sky-datepicker',
|
|
297
|
-
template: "<div\n class=\"sky-datepicker\"\n>\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div\n class=\"sky-input-group\"\n >\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-datepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? calendarId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"calendar\"\n size=\"lg\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"calendar\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #calendarTemplateRef>\n <div\n class=\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"calendarId\"\n [class.sky-datepicker-hidden]=\"!isVisible\"\n #calendarRef\n >\n <sky-datepicker-calendar\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [startingDay]=\"startingDay\"\n (calendarModeChange)=\"onCalendarModeChange()\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n </sky-datepicker-calendar>\n </div>\n</ng-template>\n",
|
|
343
|
+
template: "<div\n class=\"sky-datepicker\"\n>\n <ng-container *ngIf=\"!inputBoxHostService\">\n <div\n class=\"sky-input-group\"\n >\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n <ng-container *ngTemplateOutlet=\"triggerButtonTemplateRef\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #inputTemplateRef>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #triggerButtonTemplateRef>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-btn sky-btn-default sky-input-group-datepicker-btn\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? calendarId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"'skyux_datepicker_trigger_button_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"calendar\"\n size=\"lg\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"calendar\"\n size=\"lg\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #calendarTemplateRef>\n <div\n class=\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"calendarId\"\n [class.sky-datepicker-hidden]=\"!isVisible\"\n #calendarRef\n >\n <sky-datepicker-calendar\n [customDates]=\"customDates\"\n [isDaypickerWaiting]=\"isDaypickerWaiting\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [startingDay]=\"startingDay\"\n (calendarDateRangeChange)=\"onCalendarDateRangeChange($event)\"\n (calendarModeChange)=\"onCalendarModeChange()\"\n (selectedDateChange)=\"onSelectedDateChange($event)\"\n >\n </sky-datepicker-calendar>\n </div>\n</ng-template>\n",
|
|
298
344
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
299
345
|
styles: [".sky-datepicker-calendar-container{position:fixed;border-radius:5px}.sky-datepicker-hidden{visibility:hidden}"]
|
|
300
346
|
}),
|
|
@@ -304,4 +350,4 @@ var SkyDatepickerComponent = /** @class */ (function () {
|
|
|
304
350
|
return SkyDatepickerComponent;
|
|
305
351
|
}());
|
|
306
352
|
export { SkyDatepickerComponent };
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCw4QkFBOEIsRUFDL0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7O0dBR0c7QUFPSDtJQXFKRSxnQ0FDVSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxXQUFrQyxFQUNsQyxjQUFpQyxFQUN0QixtQkFBNEMsRUFDbkQsUUFBMEI7UUFOeEMsaUJBa0JDO1FBakJTLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUN0Qix3QkFB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LGVBQWUsdUJBQXJDLFFBQVE7O0lBckpYO1FBREMsS0FBSyxFQUFFOytEQUNnQjtJQXlFeEI7UUFEQyxTQUFTLENBQUMsOEJBQThCLENBQUM7NERBQ087SUFLakQ7UUFIQyxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQ3hCLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUM7NkRBd0JEO0lBU0Q7UUFIQyxTQUFTLENBQUMscUJBQXFCLEVBQUU7WUFDaEMsSUFBSSxFQUFFLFdBQVc7U0FDbEIsQ0FBQzt1RUFDNEM7SUFLOUM7UUFIQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQztvRUFDbUM7SUFNckM7UUFKQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO29FQUN5QztJQU0zQztRQUpDLFNBQVMsQ0FBQywwQkFBMEIsRUFBRTtZQUNyQyxJQUFJLEVBQUUsV0FBVztZQUNqQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7NEVBQ2lEO0lBckl4QyxzQkFBc0I7UUFObEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixxNkRBQTBDO1lBRTFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO1FBMkpHLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLFFBQVEsRUFBRSxDQUFBO09BM0pGLHNCQUFzQixDQXFUbEM7SUFBRCw2QkFBQztDQUFBLEFBclRELElBcVRDO1NBclRZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4ZXIsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5SW5wdXRCb3hIb3N0U2VydmljZVxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZVNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50LFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGRhdGVwaWNrZXIgYnV0dG9uIGFuZCBjYWxlbmRhci5cbiAqIFlvdSBtdXN0IHdyYXAgdGhpcyBjb21wb25lbnQgYXJvdW5kIGFuIGlucHV0IHdpdGggdGhlIGBza3lEYXRlcGlja2VySW5wdXRgIGRpcmVjdGl2ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICAvKipcbiAgICogQWRkcyBhIGNsYXNzIHRvIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBpY2tlckNsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGNhbGVuZGFyIGJ1dHRvbiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gaGF2ZSBmb2N1cy5cbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBidXR0b25Jc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJCdXR0b25SZWYpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWw7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGhhdmUgZm9jdXMuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyUmVmKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGZvY3VzZWRFbCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCdzIHZpc2libGl0eSBwcm9wZXJ0eSBpcyAndmlzaWJsZScuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXIgPyB0aGlzLmNhbGVuZGFyLmlzVmlzaWJsZSA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbGVuZGFySWQ6IHN0cmluZztcblxuICBwdWJsaWMgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlO1xuXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlO1xuXG4gIHB1YmxpYyBzdGFydGluZ0RheTogbnVtYmVyO1xuXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudClcbiAgcHJpdmF0ZSBjYWxlbmRhcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgfSlcbiAgcHJpdmF0ZSBzZXQgY2FsZW5kYXJSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2NhbGVuZGFyUmVmID0gdmFsdWU7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSBjYWxlbmRhciBjb21wb25lbnQgdG8gcmVuZGVyIGJlZm9yZSBnYXVnaW5nIGRpbWVuc2lvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG5cbiAgICAgICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZUFmZml4ZXIoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvcmVBZGFwdGVyLmdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJSZWYsXG4gICAgICAgICAgICAnLnNreS1kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhbGVuZGFyUmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWZcbiAgfSlcbiAgcHJpdmF0ZSBjYWxlbmRhclRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSB0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgY2FsZW5kYXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIHByaXZhdGUgX2NhbGVuZGFyUmVmOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWREYXRlOiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTZXJ2aWNlPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICBjb25zdCB1bmlxdWVJZCA9IG5leHRJZCsrO1xuICAgIHRoaXMuY2FsZW5kYXJJZCA9IGBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LWRhdGVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRUcmlnZ2VyQnV0dG9uRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UpIHtcbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZS5wb3B1bGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhck1vZGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgLy8gTGV0IHRoZSBjYWxlbmRhciBwb3B1bGF0ZSBpbiB0aGUgRE9NIGJlZm9yZSByZWNhbGN1bGF0aW5nIHBsYWNlbWVudC5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZERhdGVDaGFuZ2UodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUGlja2VyKCkge1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLnJlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcih0aGlzLmNhbGVuZGFyUmVmKTtcblxuICAgIC8vIEhpZGUgY2FsZW5kYXIgd2hlbiB0cmlnZ2VyIGJ1dHRvbiBpcyBzY3JvbGxlZCBvZmYgc2NyZWVuLlxuICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IChjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICBwbGFjZW1lbnQ6ICdiZWxvdydcbiAgICB9KTtcblxuICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLmFmZml4ZXIpIHtcbiAgICAgIHRoaXMuYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLmFmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMucGlja2VyQ2xhc3MsXG4gICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLmNhbGVuZGFyVGVtcGxhdGVSZWYpO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgdGhpcy5vdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJpZ2dlckJ1dHRvbkV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGZyb21FdmVudCh3aW5kb3cuZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDbEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLHNCQUFzQixFQUN2QixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDhCQUE4QixFQUMvQixNQUFNLGlDQUFpQyxDQUFDO0FBTXpDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7R0FHRztBQU9IO0lBcUtFLGdDQUNVLFlBQTZCLEVBQzdCLGNBQWlDLEVBQ2pDLFdBQWtDLEVBQ2xDLGNBQWlDLEVBQ3RCLG1CQUE0QyxFQUNuRCxRQUEwQjtRQU54QyxpQkFrQkM7UUFqQlMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbEMsbUJBQWMsR0FBZCxj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Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeGVyLFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgU2t5T3ZlcmxheUluc3RhbmNlLFxuICBTa3lPdmVybGF5U2VydmljZVxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZVxufSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBkYXRlcGlja2VyIGJ1dHRvbiBhbmQgY2FsZW5kYXIuXG4gKiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBpbnB1dCB3aXRoIHRoZSBgc2t5RGF0ZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjbGFzcyB0byB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwaWNrZXJDbGFzcyA9ICcnO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSByYW5nZSBvZiBkaXNwbGF5ZWQgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyIGNoYW5nZXMuIFByb3ZpZGVzIHRoZVxuICAgKiBjdXJyZW50IHJhbmdlIG9mIGRpc3BsYXllZCBkYXRlcyBhbmQgYSBtdXRhYmxlIGBjdXN0b21EYXRlYCBwcm9wZXJ0eSBjb25zdW1lcnMgY2FuIHVzZVxuICAgKiB0byBtb2RpZnkgaW5kaXZpZHVhbCBkYXRlcyBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGNhbGVuZGFyIGJ1dHRvbiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gaGF2ZSBmb2N1cy5cbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBidXR0b25Jc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJCdXR0b25SZWYpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWw7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGhhdmUgZm9jdXMuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyUmVmKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGZvY3VzZWRFbCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY2FsZW5kYXIgZWxlbWVudCdzIHZpc2libGl0eSBwcm9wZXJ0eSBpcyAndmlzaWJsZScuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXJJc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXIgPyB0aGlzLmNhbGVuZGFyLmlzVmlzaWJsZSA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbGVuZGFySWQ6IHN0cmluZztcblxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW107XG5cbiAgcHVibGljIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHVibGljIGlzRGF5cGlja2VyV2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG1heERhdGU6IERhdGU7XG5cbiAgcHVibGljIG1pbkRhdGU6IERhdGU7XG5cbiAgcHVibGljIHN0YXJ0aW5nRGF5OiBudW1iZXI7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50KVxuICBwcml2YXRlIGNhbGVuZGFyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwcml2YXRlIHNldCBjYWxlbmRhclJlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fY2FsZW5kYXJSZWYgPSB2YWx1ZTtcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIGNhbGVuZGFyIGNvbXBvbmVudCB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyLndyaXRlVmFsdWUodGhpcy5fc2VsZWN0ZWREYXRlKTtcblxuICAgICAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlZixcbiAgICAgICAgICAgICcuc2t5LWRhdGVwaWNrZXItY2FsZW5kYXItaW5uZXInLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY2FsZW5kYXJSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyUmVmO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZlxuICB9KVxuICBwcml2YXRlIGNhbGVuZGFyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmXG4gIH0pXG4gIHByaXZhdGUgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGFmZml4ZXI6IFNreUFmZml4ZXI7XG5cbiAgcHJpdmF0ZSBjYWxlbmRhclVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+O1xuXG4gIHByaXZhdGUgY3VzdG9tRGF0ZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIHByaXZhdGUgb3ZlcmxheUtleWRvd25MaXN0bmVyOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFNlcnZpY2U/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV4dElkKys7XG4gICAgdGhpcy5jYWxlbmRhcklkID0gYHNreS1kYXRlcGlja2VyLWNhbGVuZGFyLSR7dW5pcXVlSWR9YDtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25JZCA9IGBza3ktZGF0ZXBpY2tlci1idXR0b24tJHt1bmlxdWVJZH1gO1xuXG4gICAgLy8gVXBkYXRlIGljb25zIHdoZW4gdGhlbWUgY2hhbmdlcy5cbiAgICB0aGVtZVN2Yz8uc2V0dGluZ3NDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UucG9wdWxhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgICAgYnV0dG9uc1RlbXBsYXRlOiB0aGlzLnRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMucmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJNb2RlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgY2FsZW5kYXIgcG9wdWxhdGUgaW4gdGhlIERPTSBiZWZvcmUgcmVjYWxjdWxhdGluZyBwbGFjZW1lbnQuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFmZml4ZXIucmVhZmZpeCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRyaWdnZXJCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoZXZlbnQ6IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLmNhbmNlbEN1c3RvbURhdGVzU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgIGNvbnN0IGFyZ3M6IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSA9IHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXG4gICAgICAgIGN1c3RvbURhdGVzOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLmVtaXQoYXJncyk7XG4gICAgICAvLyBJZiBjb25zdW1lciBoYXMgYWRkZWQgYW4gb2JzZXJ2YWJsZSB0byB0aGUgYXJncywgd2F0Y2ggZm9yIGluY29taW5nIGN1c3RvbSBkYXRlcy5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoYXJncy5jdXN0b21EYXRlcykge1xuXG4gICAgICAgIHRoaXMuaXNEYXlwaWNrZXJXYWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgLy8gQXZvaWQgYW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbiA9IGFyZ3MuY3VzdG9tRGF0ZXNcbiAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRGF0ZXMgPSByZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLmlzRGF5cGlja2VyV2FpdGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaW4gY2hpbGQgY29tcG9uZW50cyB0byBzaG93IGNoYW5nZXMgaW4gdGhlIGNhbGVuZGFyLlxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMucmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5jYWxlbmRhclJlZik7XG5cbiAgICAvLyBIaWRlIGNhbGVuZGFyIHdoZW4gdHJpZ2dlciBidXR0b24gaXMgc2Nyb2xsZWQgb2ZmIHNjcmVlbi5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSAoY2hhbmdlLnBsYWNlbWVudCAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ3JpZ2h0JyxcbiAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgcGxhY2VtZW50OiAnYmVsb3cnXG4gICAgfSk7XG5cbiAgICB0aGlzLmFmZml4ZXIgPSBhZmZpeGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5hZmZpeGVyKSB7XG4gICAgICB0aGlzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5hZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgd3JhcHBlckNsYXNzOiB0aGlzLnBpY2tlckNsYXNzLFxuICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2VcbiAgICB9KTtcblxuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY2FsZW5kYXJVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWRkS2V5ZG93bkxpc3RuZXIoKTtcblxuICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5jYWxlbmRhclRlbXBsYXRlUmVmKTtcblxuICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEtleWRvd25MaXN0bmVyKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheUtleWRvd25MaXN0bmVyID0gZnJvbUV2ZW50KHdpbmRvdy5kb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgdGhpcy5jYWxlbmRhclVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLmNhbGVuZGFyVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheUtleWRvd25MaXN0bmVyPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxDdXN0b21EYXRlc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jdXN0b21EYXRlc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,19 +4,23 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { SkyAffixModule, SkyAppWindowRef, SkyCoreAdapterService, SkyOverlayModule } from '@skyux/core';
|
|
6
6
|
import { SkyI18nModule } from '@skyux/i18n';
|
|
7
|
-
import { SkyIconModule } from '@skyux/indicators';
|
|
7
|
+
import { SkyIconModule, SkyWaitModule } from '@skyux/indicators';
|
|
8
8
|
import { SkyThemeModule, SkyThemeService } from '@skyux/theme';
|
|
9
|
+
import { SkyPopoverModule } from '@skyux/popovers';
|
|
9
10
|
import { SkyDateTimeResourcesModule } from '../shared/datetime-resources.module';
|
|
10
11
|
import { SkyDatepickerCalendarComponent } from './datepicker-calendar.component';
|
|
11
12
|
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
|
12
|
-
import { SkyDayPickerComponent } from './daypicker.component';
|
|
13
|
-
import { SkyMonthPickerComponent } from './monthpicker.component';
|
|
14
|
-
import { SkyYearPickerComponent } from './yearpicker.component';
|
|
15
13
|
import { SkyDatepickerComponent } from './datepicker.component';
|
|
16
14
|
import { SkyDatepickerConfigService } from './datepicker-config.service';
|
|
17
15
|
import { SkyDatepickerInputDirective } from './datepicker-input.directive';
|
|
18
16
|
import { SkyFuzzyDatepickerInputDirective } from './datepicker-input-fuzzy.directive';
|
|
17
|
+
import { SkyDatepickerService } from './datepicker.service';
|
|
18
|
+
import { SkyDayPickerButtonComponent } from './daypicker-button.component';
|
|
19
|
+
import { SkyDayPickerCellComponent } from './daypicker-cell.component';
|
|
20
|
+
import { SkyDayPickerComponent } from './daypicker.component';
|
|
19
21
|
import { SkyFuzzyDateService } from './fuzzy-date.service';
|
|
22
|
+
import { SkyMonthPickerComponent } from './monthpicker.component';
|
|
23
|
+
import { SkyYearPickerComponent } from './yearpicker.component';
|
|
20
24
|
var SkyDatepickerModule = /** @class */ (function () {
|
|
21
25
|
function SkyDatepickerModule() {
|
|
22
26
|
}
|
|
@@ -30,7 +34,9 @@ var SkyDatepickerModule = /** @class */ (function () {
|
|
|
30
34
|
SkyYearPickerComponent,
|
|
31
35
|
SkyDatepickerComponent,
|
|
32
36
|
SkyDatepickerInputDirective,
|
|
33
|
-
SkyFuzzyDatepickerInputDirective
|
|
37
|
+
SkyFuzzyDatepickerInputDirective,
|
|
38
|
+
SkyDayPickerCellComponent,
|
|
39
|
+
SkyDayPickerButtonComponent
|
|
34
40
|
],
|
|
35
41
|
imports: [
|
|
36
42
|
CommonModule,
|
|
@@ -40,7 +46,9 @@ var SkyDatepickerModule = /** @class */ (function () {
|
|
|
40
46
|
SkyDateTimeResourcesModule,
|
|
41
47
|
SkyAffixModule,
|
|
42
48
|
SkyOverlayModule,
|
|
43
|
-
SkyThemeModule
|
|
49
|
+
SkyThemeModule,
|
|
50
|
+
SkyPopoverModule,
|
|
51
|
+
SkyWaitModule
|
|
44
52
|
],
|
|
45
53
|
exports: [
|
|
46
54
|
SkyDatepickerCalendarComponent,
|
|
@@ -50,18 +58,21 @@ var SkyDatepickerModule = /** @class */ (function () {
|
|
|
50
58
|
SkyYearPickerComponent,
|
|
51
59
|
SkyDatepickerComponent,
|
|
52
60
|
SkyDatepickerInputDirective,
|
|
53
|
-
SkyFuzzyDatepickerInputDirective
|
|
61
|
+
SkyFuzzyDatepickerInputDirective,
|
|
62
|
+
SkyDayPickerCellComponent,
|
|
63
|
+
SkyDayPickerButtonComponent
|
|
54
64
|
],
|
|
55
65
|
providers: [
|
|
56
66
|
SkyAppWindowRef,
|
|
57
67
|
SkyDatepickerConfigService,
|
|
58
68
|
SkyFuzzyDateService,
|
|
59
69
|
SkyCoreAdapterService,
|
|
60
|
-
SkyThemeService
|
|
70
|
+
SkyThemeService,
|
|
71
|
+
SkyDatepickerService
|
|
61
72
|
]
|
|
62
73
|
})
|
|
63
74
|
], SkyDatepickerModule);
|
|
64
75
|
return SkyDatepickerModule;
|
|
65
76
|
}());
|
|
66
77
|
export { SkyDatepickerModule };
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFlBQVksRUFDYixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDTCxXQUFXLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxhQUFhLEVBQ2QsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2QsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDaEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDTCwwQkFBMEIsRUFDM0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsOEJBQThCLEVBQy9CLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUNMLG1DQUFtQyxFQUNwQyxNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFDTCxzQkFBc0IsRUFDdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsMEJBQTBCLEVBQzNCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUNMLDJCQUEyQixFQUM1QixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1QyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNMLDJCQUEyQixFQUM1QixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFDTCx1QkFBdUIsRUFDeEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sd0JBQXdCLENBQUM7QUFnRGhDO0lBQUE7SUFBbUMsQ0FBQztJQUF2QixtQkFBbUI7UUE5Qy9CLFFBQVEsQ0FBQztZQUNSLFlBQVksRUFBRTtnQkFDWiw4QkFBOEI7Z0JBQzlCLG1DQUFtQztnQkFDbkMscUJBQXFCO2dCQUNyQix1QkFBdUI7Z0JBQ3ZCLHNCQUFzQjtnQkFDdEIsc0JBQXNCO2dCQUN0QiwyQkFBMkI7Z0JBQzNCLGdDQUFnQztnQkFDaEMseUJBQXlCO2dCQUN6QiwyQkFBMkI7YUFDNUI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsWUFBWTtnQkFDWixhQUFhO2dCQUNiLFdBQVc7Z0JBQ1gsYUFBYTtnQkFDYiwwQkFBMEI7Z0JBQzFCLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixjQUFjO2dCQUNkLGdCQUFnQjtnQkFDaEIsYUFBYTthQUNkO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLDhCQUE4QjtnQkFDOUIsbUNBQW1DO2dCQUNuQyxxQkFBcUI7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsc0JBQXNCO2dCQUN0QixzQkFBc0I7Z0JBQ3RCLDJCQUEyQjtnQkFDM0IsZ0NBQWdDO2dCQUNoQyx5QkFBeUI7Z0JBQ3pCLDJCQUEyQjthQUM1QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxlQUFlO2dCQUNmLDBCQUEwQjtnQkFDMUIsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2Ysb0JBQW9CO2FBQ3JCO1NBQ0YsQ0FBQztPQUNXLG1CQUFtQixDQUFJO0lBQUQsMEJBQUM7Q0FBQSxBQUFwQyxJQUFvQztTQUF2QixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhNb2R1bGUsXG4gIFNreUFwcFdpbmRvd1JlZixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5TW9kdWxlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZVxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7XG4gIFNreUljb25Nb2R1bGUsXG4gIFNreVdhaXRNb2R1bGVcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZU1vZHVsZSxcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIFNreVBvcG92ZXJNb2R1bGVcbn0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZVRpbWVSZXNvdXJjZXNNb2R1bGVcbn0gZnJvbSAnLi4vc2hhcmVkL2RhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZVxufSBmcm9tICcuL2RhdGVwaWNrZXItY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmVcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0LmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7XG4gIFNreUZ1enp5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlXG59IGZyb20gJy4vZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyU2VydmljZVxufSBmcm9tICcuL2RhdGVwaWNrZXIuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudFxufSBmcm9tICcuL2RheXBpY2tlci1idXR0b24uY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudFxufSBmcm9tICcuL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURheVBpY2tlckNvbXBvbmVudFxufSBmcm9tICcuL2RheXBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lGdXp6eURhdGVTZXJ2aWNlXG59IGZyb20gJy4vZnV6enktZGF0ZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5TW9udGhQaWNrZXJDb21wb25lbnRcbn0gZnJvbSAnLi9tb250aHBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lZZWFyUGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4veWVhcnBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgU2t5RGF5UGlja2VyQ29tcG9uZW50LFxuICAgIFNreU1vbnRoUGlja2VyQ29tcG9uZW50LFxuICAgIFNreVllYXJQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmUsXG4gICAgU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmUsXG4gICAgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lJMThuTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5RGF0ZVRpbWVSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5T3ZlcmxheU1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lQb3BvdmVyTW9kdWxlLFxuICAgIFNreVdhaXRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5WWVhclBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50LFxuICAgIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lBcHBXaW5kb3dSZWYsXG4gICAgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UsXG4gICAgU2t5RnV6enlEYXRlU2VydmljZSxcbiAgICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgU2t5VGhlbWVTZXJ2aWNlLFxuICAgIFNreURhdGVwaWNrZXJTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlck1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
var SkyDatepickerService = /** @class */ (function () {
|
|
8
|
+
function SkyDatepickerService() {
|
|
9
|
+
/**
|
|
10
|
+
* Specifies if a key date popover is currently displayed.
|
|
11
|
+
* Useful for communicating across all daypicker siblings when a popover is displayed.
|
|
12
|
+
*/
|
|
13
|
+
this.keyDatePopoverStream = new Subject();
|
|
14
|
+
}
|
|
15
|
+
SkyDatepickerService = __decorate([
|
|
16
|
+
Injectable()
|
|
17
|
+
], SkyDatepickerService);
|
|
18
|
+
return SkyDatepickerService;
|
|
19
|
+
}());
|
|
20
|
+
export { SkyDatepickerService };
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2RhdGV0aW1lLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBTWQ7O0dBRUc7QUFFSDtJQUFBO1FBRUU7OztXQUdHO1FBQ0kseUJBQW9CLEdBQStCLElBQUksT0FBTyxFQUFxQixDQUFDO0lBRTdGLENBQUM7SUFSWSxvQkFBb0I7UUFEaEMsVUFBVSxFQUFFO09BQ0Esb0JBQW9CLENBUWhDO0lBQUQsMkJBQUM7Q0FBQSxBQVJELElBUUM7U0FSWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyRGF0ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiBhIGtleSBkYXRlIHBvcG92ZXIgaXMgY3VycmVudGx5IGRpc3BsYXllZC5cbiAgICogVXNlZnVsIGZvciBjb21tdW5pY2F0aW5nIGFjcm9zcyBhbGwgZGF5cGlja2VyIHNpYmxpbmdzIHdoZW4gYSBwb3BvdmVyIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIHB1YmxpYyBrZXlEYXRlUG9wb3ZlclN0cmVhbTogU3ViamVjdDxTa3lEYXRlcGlja2VyRGF0ZT4gPSBuZXcgU3ViamVjdDxTa3lEYXRlcGlja2VyRGF0ZT4oKTtcblxufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
var SkyDayPickerButtonComponent = /** @class */ (function () {
|
|
8
|
+
function SkyDayPickerButtonComponent(datepicker) {
|
|
9
|
+
this.datepicker = datepicker;
|
|
10
|
+
}
|
|
11
|
+
SkyDayPickerButtonComponent.ctorParameters = function () { return [
|
|
12
|
+
{ type: SkyDatepickerCalendarInnerComponent }
|
|
13
|
+
]; };
|
|
14
|
+
__decorate([
|
|
15
|
+
Input()
|
|
16
|
+
], SkyDayPickerButtonComponent.prototype, "date", void 0);
|
|
17
|
+
SkyDayPickerButtonComponent = __decorate([
|
|
18
|
+
Component({
|
|
19
|
+
selector: 'sky-daypicker-button',
|
|
20
|
+
template: "<button\n class=\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"date.disabled\"\n [ngClass]=\"{\n 'sky-datepicker-btn-selected': date.selected,\n 'sky-btn-disabled': date.disabled,\n 'sky-btn-active': datepicker.isActive(date),\n 'sky-datepicker-btn-disabled': date.disabled,\n 'sky-datepicker-btn-key-date': date.keyDate\n }\"\n (click)=\"datepicker.selectCalendar($event, date.date, true)\"\n>\n <span\n [ngClass]=\"{ 'sky-datepicker-secondary': date.secondary }\"\n >\n {{date.label}}\n </span>\n</button>\n",
|
|
21
|
+
styles: [".sky-datepicker-btn-disabled{font-style:italic}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date::before{position:absolute;content:\"\";height:5px;width:5px;background-color:#d93a3d;border-radius:50%;left:15px;top:22px}:host-context(.sky-theme-modern) .sky-datepicker-btn-key-date::before{left:12px}.sky-theme-modern .sky-datepicker-btn-key-date::before{left:12px}"]
|
|
22
|
+
})
|
|
23
|
+
], SkyDayPickerButtonComponent);
|
|
24
|
+
return SkyDayPickerButtonComponent;
|
|
25
|
+
}());
|
|
26
|
+
export { SkyDayPickerButtonComponent };
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvZGF0ZXRpbWUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RhdGVwaWNrZXIvZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSx1Q0FBdUMsQ0FBQztBQU0vQzs7R0FFRztBQU1IO0lBUUUscUNBQ1MsVUFBK0M7UUFBL0MsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7SUFDckQsQ0FBQzs7Z0JBRGlCLG1DQUFtQzs7SUFIeEQ7UUFEQyxLQUFLLEVBQUU7NkRBQ3VCO0lBTnBCLDJCQUEyQjtRQUx2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLHVuQkFBOEM7O1NBRS9DLENBQUM7T0FDVywyQkFBMkIsQ0FZdkM7SUFBRCxrQ0FBQztDQUFBLEFBWkQsSUFZQztTQVpZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50XG59IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lEYXRlcGlja2VyRGF0ZVxufSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXlwaWNrZXItYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXlwaWNrZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGF0ZSB0aGlzIHBpY2tlciBidXR0b24gd2lsbCByZXByZXNlbnQgb24gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGU6IFNreURhdGVwaWNrZXJEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudFxuICApIHt9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
3
|
+
import { SkyPopoverMessageType } from '@skyux/popovers';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
|
7
|
+
import { SkyDatepickerService } from './datepicker.service';
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
var SkyDayPickerCellComponent = /** @class */ (function () {
|
|
12
|
+
function SkyDayPickerCellComponent(datepicker, datepickerService) {
|
|
13
|
+
this.datepicker = datepicker;
|
|
14
|
+
this.datepickerService = datepickerService;
|
|
15
|
+
this.hasTooltip = false;
|
|
16
|
+
this.popoverController = new Subject();
|
|
17
|
+
this.activeUid = '';
|
|
18
|
+
this.cancelPopover = false;
|
|
19
|
+
this.popoverOpen = false;
|
|
20
|
+
this.ngUnsubscribe = new Subject();
|
|
21
|
+
}
|
|
22
|
+
SkyDayPickerCellComponent.prototype.ngOnInit = function () {
|
|
23
|
+
var _this = this;
|
|
24
|
+
this.hasTooltip =
|
|
25
|
+
this.date.keyDate &&
|
|
26
|
+
this.date.keyDateText &&
|
|
27
|
+
this.date.keyDateText.length > 0 &&
|
|
28
|
+
this.date.keyDateText[0].length > 0;
|
|
29
|
+
// show the tooltip if this is the active date and is not the
|
|
30
|
+
// initial active date (activeDateHasChanged)
|
|
31
|
+
if (this.datepicker.isActive(this.date) &&
|
|
32
|
+
this.activeDateHasChanged &&
|
|
33
|
+
this.hasTooltip) {
|
|
34
|
+
this.activeUid = this.date.uid;
|
|
35
|
+
this.showTooltip();
|
|
36
|
+
}
|
|
37
|
+
if (this.hasTooltip) {
|
|
38
|
+
this.datepickerService.keyDatePopoverStream
|
|
39
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
40
|
+
.subscribe(function (date) {
|
|
41
|
+
if (date) {
|
|
42
|
+
_this.activeUid = date.uid;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
_this.activeUid = '';
|
|
46
|
+
}
|
|
47
|
+
// If this day has an open popover and they have moved off of the day close the popover.
|
|
48
|
+
if (_this.date.uid !== _this.activeUid) {
|
|
49
|
+
_this.hideTooltip();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
SkyDayPickerCellComponent.prototype.ngOnDestroy = function () {
|
|
55
|
+
this.ngUnsubscribe.next();
|
|
56
|
+
this.ngUnsubscribe.complete();
|
|
57
|
+
};
|
|
58
|
+
SkyDayPickerCellComponent.prototype.onDayMouseenter = function () {
|
|
59
|
+
this.cancelPopover = false;
|
|
60
|
+
if (this.hasTooltip) {
|
|
61
|
+
this.showTooltip();
|
|
62
|
+
this.datepickerService.keyDatePopoverStream.next(this.date);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
SkyDayPickerCellComponent.prototype.onDayMouseleave = function () {
|
|
66
|
+
this.cancelPopover = true;
|
|
67
|
+
if (this.hasTooltip) {
|
|
68
|
+
this.hideTooltip();
|
|
69
|
+
}
|
|
70
|
+
this.datepickerService.keyDatePopoverStream.next(undefined);
|
|
71
|
+
};
|
|
72
|
+
SkyDayPickerCellComponent.prototype.onPopoverClosed = function () {
|
|
73
|
+
this.popoverOpen = false;
|
|
74
|
+
};
|
|
75
|
+
SkyDayPickerCellComponent.prototype.onPopoverOpened = function () {
|
|
76
|
+
this.popoverOpen = true;
|
|
77
|
+
/* istanbul ignore else */
|
|
78
|
+
if (this.cancelPopover) {
|
|
79
|
+
// If the popover gets opened just as a mouseout event happens, close it.
|
|
80
|
+
this.hideTooltip();
|
|
81
|
+
this.cancelPopover = false;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
SkyDayPickerCellComponent.prototype.getKeyDateLabel = function () {
|
|
85
|
+
if (this.hasTooltip) {
|
|
86
|
+
return this.date.keyDateText.join(', ');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return '';
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
SkyDayPickerCellComponent.prototype.hideTooltip = function () {
|
|
93
|
+
/* istanbul ignore else */
|
|
94
|
+
if (this.popoverOpen) {
|
|
95
|
+
this.popoverController.next({ type: SkyPopoverMessageType.Close });
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
SkyDayPickerCellComponent.prototype.showTooltip = function () {
|
|
99
|
+
var _this = this;
|
|
100
|
+
/* istanbul ignore else */
|
|
101
|
+
if (this.hasTooltip &&
|
|
102
|
+
!this.popoverOpen) {
|
|
103
|
+
/**
|
|
104
|
+
* Delay 1/2 second before opening the popover as long as mouse hasn't moved off the date.
|
|
105
|
+
*/
|
|
106
|
+
setTimeout(function () {
|
|
107
|
+
if (!_this.cancelPopover &&
|
|
108
|
+
_this.activeUid === _this.date.uid) {
|
|
109
|
+
_this.popoverController.next({ type: SkyPopoverMessageType.Open });
|
|
110
|
+
}
|
|
111
|
+
}, 500);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
SkyDayPickerCellComponent.ctorParameters = function () { return [
|
|
115
|
+
{ type: SkyDatepickerCalendarInnerComponent },
|
|
116
|
+
{ type: SkyDatepickerService }
|
|
117
|
+
]; };
|
|
118
|
+
__decorate([
|
|
119
|
+
Input()
|
|
120
|
+
], SkyDayPickerCellComponent.prototype, "activeDateHasChanged", void 0);
|
|
121
|
+
__decorate([
|
|
122
|
+
Input()
|
|
123
|
+
], SkyDayPickerCellComponent.prototype, "date", void 0);
|
|
124
|
+
SkyDayPickerCellComponent = __decorate([
|
|
125
|
+
Component({
|
|
126
|
+
selector: 'sky-daypicker-cell',
|
|
127
|
+
template: "<div *ngIf=\"hasTooltip\"\n class=\"sky-daypicker-cell\"\n [attr.aria-label]=\"getKeyDateLabel()\"\n [skyPopover]=\"dayInfoPopover\"\n skyPopoverPlacement=\"left\"\n [skyPopoverMessageStream]=\"popoverController\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n>\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\"></ng-container>\n <sky-popover\n (popoverClosed)=\"onPopoverClosed()\"\n (popoverOpened)=\"onPopoverOpened()\"\n #dayInfoPopover\n >\n <div *ngFor=\"let text of date.keyDateText\">\n {{text}}\n </div>\n </sky-popover>\n</div>\n<div *ngIf=\"!hasTooltip\"\n class=\"sky-daypicker-cell\"\n (mouseenter)=\"onDayMouseenter()\"\n (mouseleave)=\"onDayMouseleave()\"\n>\n <ng-container *ngTemplateOutlet=\"daypickerButtonTemplateRef\"></ng-container>\n</div>\n\n<ng-template #daypickerButtonTemplateRef>\n <sky-daypicker-button\n [date]=\"date\"\n >\n </sky-daypicker-button>\n</ng-template>\n",
|
|
128
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
129
|
+
})
|
|
130
|
+
], SkyDayPickerCellComponent);
|
|
131
|
+
return SkyDayPickerCellComponent;
|
|
132
|
+
}());
|
|
133
|
+
export { SkyDayPickerCellComponent };
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2RhdGV0aW1lLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxxQkFBcUIsRUFDdEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSx1Q0FBdUMsQ0FBQztBQU0vQyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUI7O0dBRUc7QUFNSDtJQTBCRSxtQ0FDVSxVQUErQyxFQUMvQyxpQkFBdUM7UUFEdkMsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7UUFDL0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQWQxQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBRXBELGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0IsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0Isa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBS3pDLENBQUM7SUFFRyw0Q0FBUSxHQUFmO1FBQUEsaUJBa0NDO1FBakNDLElBQUksQ0FBQyxVQUFVO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxD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QUM7U0FDcEU7SUFDSCxDQUFDO0lBRU8sK0NBQVcsR0FBbkI7UUFBQSxpQkFrQkM7UUFqQkMsMEJBQTBCO1FBQzFCLElBQ0UsSUFBSSxDQUFDLFVBQVU7WUFDZixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ2pCO1lBQ0E7O2VBRUc7WUFDSCxVQUFVLENBQUM7Z0JBQ1QsSUFDRSxDQUFDLEtBQUksQ0FBQyxhQUFhO29CQUNuQixLQUFJLENBQUMsU0FBUyxLQUFLLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUNoQztvQkFDQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ25FO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDOztnQkE1R3FCLG1DQUFtQztnQkFDNUIsb0JBQW9COztJQXRCakQ7UUFEQyxLQUFLLEVBQUU7MkVBQzZCO0lBTXJDO1FBREMsS0FBSyxFQUFFOzJEQUN1QjtJQVpwQix5QkFBeUI7UUFMckMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixrK0JBQTRDO1lBQzVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1NBQ2hELENBQUM7T0FDVyx5QkFBeUIsQ0F3SXJDO0lBQUQsZ0NBQUM7Q0FBQSxBQXhJRCxJQXdJQztTQXhJWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreVBvcG92ZXJNZXNzYWdlLFxuICBTa3lQb3BvdmVyTWVzc2FnZVR5cGVcbn0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHtcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreURhdGVwaWNrZXJEYXRlXG59IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxuaW1wb3J0IHtcbiAgU2t5RGF0ZXBpY2tlclNlcnZpY2Vcbn0gZnJvbSAnLi9kYXRlcGlja2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF5cGlja2VyLWNlbGwnLFxuICB0ZW1wbGF0ZVVybDogJ2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIHRoZSBhY3RpdmUgZGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRhdGUgdGhpcyBwaWNrZXIgY2VsbCB3aWxsIHJlcHJlc2VudCBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZTogU2t5RGF0ZXBpY2tlckRhdGU7XG5cbiAgcHVibGljIGhhc1Rvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgcG9wb3ZlckNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lQb3BvdmVyTWVzc2FnZT4oKTtcblxuICBwcml2YXRlIGFjdGl2ZVVpZDogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBjYW5jZWxQb3BvdmVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBwb3BvdmVyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBkYXRlcGlja2VyU2VydmljZTogU2t5RGF0ZXBpY2tlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Rvb2x0aXAgPVxuICAgICAgdGhpcy5kYXRlLmtleURhdGUgJiZcbiAgICAgIHRoaXMuZGF0ZS5rZXlEYXRlVGV4dCAmJlxuICAgICAgdGhpcy5kYXRlLmtleURhdGVUZXh0Lmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuZGF0ZS5rZXlEYXRlVGV4dFswXS5sZW5ndGggPiAwO1xuXG4gICAgLy8gc2hvdyB0aGUgdG9vbHRpcCBpZiB0aGlzIGlzIHRoZSBhY3RpdmUgZGF0ZSBhbmQgaXMgbm90IHRoZVxuICAgIC8vIGluaXRpYWwgYWN0aXZlIGRhdGUgKGFjdGl2ZURhdGVIYXNDaGFuZ2VkKVxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5pc0FjdGl2ZSh0aGlzLmRhdGUpICYmXG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkICYmXG4gICAgICB0aGlzLmhhc1Rvb2x0aXBcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlVWlkID0gdGhpcy5kYXRlLnVpZDtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoZGF0ZSA9PiB7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVVaWQgPSBkYXRlLnVpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVVpZCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoaXMgZGF5IGhhcyBhbiBvcGVuIHBvcG92ZXIgYW5kIHRoZXkgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhlIGRheSBjbG9zZSB0aGUgcG9wb3Zlci5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZS51aWQgIT09IHRoaXMuYWN0aXZlVWlkKSB7XG4gICAgICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRGF5TW91c2VlbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbFBvcG92ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICB0aGlzLnNob3dUb29sdGlwKCk7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtLm5leHQodGhpcy5kYXRlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25EYXlNb3VzZWxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsUG9wb3ZlciA9IHRydWU7XG4gICAgaWYgKHRoaXMuaGFzVG9vbHRpcCkge1xuICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXJTZXJ2aWNlLmtleURhdGVQb3BvdmVyU3RyZWFtLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvcG92ZXJDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uUG9wb3Zlck9wZW5lZCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXJPcGVuID0gdHJ1ZTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNhbmNlbFBvcG92ZXIpIHtcbiAgICAgIC8vIElmIHRoZSBwb3BvdmVyIGdldHMgb3BlbmVkIGp1c3QgYXMgYSBtb3VzZW91dCBldmVudCBoYXBwZW5zLCBjbG9zZSBpdC5cbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMuY2FuY2VsUG9wb3ZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRLZXlEYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmtleURhdGVUZXh0LmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucG9wb3Zlck9wZW4pIHtcbiAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgdGhpcy5oYXNUb29sdGlwICYmXG4gICAgICAhdGhpcy5wb3BvdmVyT3BlblxuICAgICkge1xuICAgICAgLyoqXG4gICAgICAgKiBEZWxheSAxLzIgc2Vjb25kIGJlZm9yZSBvcGVuaW5nIHRoZSBwb3BvdmVyIGFzIGxvbmcgYXMgbW91c2UgaGFzbid0IG1vdmVkIG9mZiB0aGUgZGF0ZS5cbiAgICAgICAqL1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5jYW5jZWxQb3BvdmVyICYmXG4gICAgICAgICAgdGhpcy5hY3RpdmVVaWQgPT09IHRoaXMuZGF0ZS51aWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLk9wZW4gfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwMCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|