nxt-pick-datetime 16.0.0-alpha.6 → 16.0.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/{esm2020 → esm2022}/lib/class/date-time-adapter.class.mjs +96 -96
- package/{esm2020 → esm2022}/lib/class/date-time-format.class.mjs +3 -3
- package/esm2022/lib/class/date-time.class.mjs +96 -0
- package/{esm2020 → esm2022}/lib/class/dialog-config.class.mjs +46 -46
- package/{esm2020 → esm2022}/lib/class/dialog-ref.class.mjs +118 -118
- package/esm2022/lib/date-time/calendar/calendar.component.mjs +347 -0
- package/esm2022/lib/date-time/calendar-body/calendar-body.component.mjs +152 -0
- package/esm2022/lib/date-time/calendar-month-view/calendar-month-view.component.mjs +430 -0
- package/esm2022/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.mjs +359 -0
- package/esm2022/lib/date-time/calendar-year-view/calendar-year-view.component.mjs +363 -0
- package/esm2022/lib/date-time/date-time-inline/date-time-inline.component.mjs +276 -0
- package/esm2022/lib/date-time/date-time-picker/date-time-picker.component.mjs +542 -0
- package/{esm2020 → esm2022}/lib/date-time/date-time-picker-container/date-time-picker-container.animations.mjs +18 -18
- package/esm2022/lib/date-time/date-time-picker-container/date-time-picker-container.component.mjs +390 -0
- package/esm2022/lib/date-time/date-time-picker-input.directive.mjs +619 -0
- package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +62 -0
- package/esm2022/lib/date-time/date-time-picker-trigger.directive.mjs +71 -0
- package/esm2022/lib/date-time/date-time.module.mjs +97 -0
- package/esm2022/lib/date-time/number-fixed-len.pipe.mjs +23 -0
- package/esm2022/lib/date-time/timer/timer.component.mjs +300 -0
- package/esm2022/lib/date-time/timer-box/timer-box.component.mjs +96 -0
- package/esm2022/lib/dialog/dialog-container/dialog-container.component.mjs +249 -0
- package/esm2022/lib/dialog/dialog.module.mjs +43 -0
- package/esm2022/lib/dialog/dialog.service.mjs +252 -0
- package/esm2022/lib/utils/object.mjs +24 -0
- package/esm2022/moment-adapter/date-time-adapter.class.mjs +221 -0
- package/{esm2020 → esm2022}/moment-adapter/date-time-format.class.mjs +12 -12
- package/esm2022/moment-adapter/moment-adapter.module.mjs +38 -0
- package/{esm2020 → esm2022}/moment-adapter/nxt-pick-datetime-moment-adapter.mjs +4 -4
- package/{esm2020 → esm2022}/moment-adapter/public-api.mjs +2 -2
- package/esm2022/native-adapter/date-time-adapter.class.mjs +367 -0
- package/{esm2020 → esm2022}/native-adapter/date-time-format.class.mjs +12 -12
- package/esm2022/native-adapter/native-adapter.module.mjs +38 -0
- package/{esm2020 → esm2022}/native-adapter/nxt-pick-datetime-native-adapter.mjs +4 -4
- package/{esm2020 → esm2022}/native-adapter/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/nxt-pick-datetime.mjs +4 -4
- package/{esm2020 → esm2022}/public-api.mjs +13 -13
- package/{fesm2020 → fesm2022}/nxt-pick-datetime-moment-adapter.mjs +257 -257
- package/{fesm2020 → fesm2022}/nxt-pick-datetime-moment-adapter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/nxt-pick-datetime-native-adapter.mjs +402 -402
- package/{fesm2020 → fesm2022}/nxt-pick-datetime-native-adapter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/nxt-pick-datetime.mjs +4858 -4860
- package/{fesm2020 → fesm2022}/nxt-pick-datetime.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/class/date-time-adapter.class.d.ts +176 -176
- package/lib/class/date-time-format.class.d.ts +12 -12
- package/lib/class/date-time.class.d.ts +76 -76
- package/lib/class/dialog-config.class.d.ts +90 -90
- package/lib/class/dialog-ref.class.d.ts +50 -50
- package/lib/date-time/calendar/calendar.component.d.ts +147 -147
- package/lib/date-time/calendar-body/calendar-body.component.d.ts +79 -79
- package/lib/date-time/calendar-month-view/calendar-month-view.component.d.ts +139 -139
- package/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.d.ts +115 -115
- package/lib/date-time/calendar-year-view/calendar-year-view.component.d.ts +123 -123
- package/lib/date-time/date-time-inline/date-time-inline.component.d.ts +106 -106
- package/lib/date-time/date-time-picker/date-time-picker.component.d.ts +172 -172
- package/lib/date-time/date-time-picker-container/date-time-picker-container.animations.d.ts +6 -6
- package/lib/date-time/date-time-picker-container/date-time-picker-container.component.d.ts +129 -129
- package/lib/date-time/date-time-picker-input.directive.d.ts +167 -167
- package/lib/date-time/date-time-picker-intl.service.d.ts +51 -51
- package/lib/date-time/date-time-picker-trigger.directive.d.ts +22 -22
- package/lib/date-time/date-time.module.d.ts +23 -23
- package/lib/date-time/number-fixed-len.pipe.d.ts +8 -8
- package/lib/date-time/timer/timer.component.d.ts +131 -131
- package/lib/date-time/timer-box/timer-box.component.d.ts +37 -37
- package/lib/dialog/dialog-container/dialog-container.component.d.ts +69 -69
- package/lib/dialog/dialog.module.d.ts +12 -12
- package/lib/dialog/dialog.service.d.ts +78 -78
- package/lib/utils/object.d.ts +9 -10
- package/moment-adapter/date-time-adapter.class.d.ts +64 -64
- package/moment-adapter/date-time-format.class.d.ts +5 -5
- package/moment-adapter/index.d.ts +5 -5
- package/moment-adapter/moment-adapter.module.d.ts +6 -6
- package/moment-adapter/public-api.d.ts +2 -2
- package/native-adapter/date-time-adapter.class.d.ts +72 -72
- package/native-adapter/date-time-format.class.d.ts +5 -5
- package/native-adapter/index.d.ts +5 -5
- package/native-adapter/native-adapter.module.d.ts +7 -7
- package/native-adapter/public-api.d.ts +1 -1
- package/package.json +18 -28
- package/public-api.d.ts +14 -14
- package/esm2020/lib/class/date-time.class.mjs +0 -95
- package/esm2020/lib/date-time/calendar/calendar.component.mjs +0 -346
- package/esm2020/lib/date-time/calendar-body/calendar-body.component.mjs +0 -151
- package/esm2020/lib/date-time/calendar-month-view/calendar-month-view.component.mjs +0 -429
- package/esm2020/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.mjs +0 -358
- package/esm2020/lib/date-time/calendar-year-view/calendar-year-view.component.mjs +0 -362
- package/esm2020/lib/date-time/date-time-inline/date-time-inline.component.mjs +0 -275
- package/esm2020/lib/date-time/date-time-picker/date-time-picker.component.mjs +0 -541
- package/esm2020/lib/date-time/date-time-picker-container/date-time-picker-container.component.mjs +0 -389
- package/esm2020/lib/date-time/date-time-picker-input.directive.mjs +0 -618
- package/esm2020/lib/date-time/date-time-picker-intl.service.mjs +0 -61
- package/esm2020/lib/date-time/date-time-picker-trigger.directive.mjs +0 -70
- package/esm2020/lib/date-time/date-time.module.mjs +0 -96
- package/esm2020/lib/date-time/number-fixed-len.pipe.mjs +0 -22
- package/esm2020/lib/date-time/timer/timer.component.mjs +0 -299
- package/esm2020/lib/date-time/timer-box/timer-box.component.mjs +0 -95
- package/esm2020/lib/dialog/dialog-container/dialog-container.component.mjs +0 -248
- package/esm2020/lib/dialog/dialog.module.mjs +0 -42
- package/esm2020/lib/dialog/dialog.service.mjs +0 -252
- package/esm2020/lib/utils/object.mjs +0 -25
- package/esm2020/moment-adapter/date-time-adapter.class.mjs +0 -220
- package/esm2020/moment-adapter/moment-adapter.module.mjs +0 -37
- package/esm2020/native-adapter/date-time-adapter.class.mjs +0 -366
- package/esm2020/native-adapter/native-adapter.module.mjs +0 -37
- package/fesm2015/nxt-pick-datetime-moment-adapter.mjs +0 -274
- package/fesm2015/nxt-pick-datetime-moment-adapter.mjs.map +0 -1
- package/fesm2015/nxt-pick-datetime-native-adapter.mjs +0 -420
- package/fesm2015/nxt-pick-datetime-native-adapter.mjs.map +0 -1
- package/fesm2015/nxt-pick-datetime.mjs +0 -5014
- package/fesm2015/nxt-pick-datetime.mjs.map +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class DateTimeIntl {
|
|
5
|
+
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* Stream that emits whenever the labels here are changed. Use this to notify
|
|
8
|
+
* components if the labels have changed after initialization.
|
|
9
|
+
*/
|
|
10
|
+
this.changes = new Subject();
|
|
11
|
+
/** A label for the up second button (used by screen readers). */
|
|
12
|
+
this.upSecondLabel = $localize `:@@nxt-pick-datetime.up-second:Add a second`;
|
|
13
|
+
/** A label for the down second button (used by screen readers). */
|
|
14
|
+
this.downSecondLabel = $localize `:@@nxt-pick-datetime.down-second:Minus a second`;
|
|
15
|
+
/** A label for the up minute button (used by screen readers). */
|
|
16
|
+
this.upMinuteLabel = $localize `:@@nxt-pick-datetime.up-minute:Add a minute`;
|
|
17
|
+
/** A label for the down minute button (used by screen readers). */
|
|
18
|
+
this.downMinuteLabel = $localize `:@@nxt-pick-datetime.down-minute:Minus a minute`;
|
|
19
|
+
/** A label for the up hour button (used by screen readers). */
|
|
20
|
+
this.upHourLabel = $localize `:@@nxt-pick-datetime.up-hour:Add a hour`;
|
|
21
|
+
/** A label for the down hour button (used by screen readers). */
|
|
22
|
+
this.downHourLabel = $localize `:@@nxt-pick-datetime.down-hour:Minus a hour`;
|
|
23
|
+
/** A label for the previous month button (used by screen readers) */
|
|
24
|
+
this.prevMonthLabel = $localize `:@@nxt-pick-datetime.prev-month:Previous month`;
|
|
25
|
+
/** A label for the next month button (used by screen readers) */
|
|
26
|
+
this.nextMonthLabel = $localize `:@@nxt-pick-datetime.next-month:Next month`;
|
|
27
|
+
/** A label for the previous year button (used by screen readers) */
|
|
28
|
+
this.prevYearLabel = $localize `:@@nxt-pick-datetime.prev-year:Previous year`;
|
|
29
|
+
/** A label for the next year button (used by screen readers) */
|
|
30
|
+
this.nextYearLabel = $localize `:@@nxt-pick-datetime.next-year:Next year`;
|
|
31
|
+
/** A label for the previous multi-year button (used by screen readers) */
|
|
32
|
+
this.prevMultiYearLabel = $localize `:@@nxt-pick-datetime.prev-multi-year:Previous 21 years`;
|
|
33
|
+
/** A label for the next multi-year button (used by screen readers) */
|
|
34
|
+
this.nextMultiYearLabel = $localize `:@@nxt-pick-datetime.next-multi-year:Next 21 years`;
|
|
35
|
+
/** A label for the 'switch to month view' button (used by screen readers) */
|
|
36
|
+
this.switchToMonthViewLabel = $localize `:@@nxt-pick-datetime.switch-to-month:Change to month view`;
|
|
37
|
+
/** A label for the 'switch to year view' button (used by screen readers) */
|
|
38
|
+
this.switchToMultiYearViewLabel = $localize `:@@nxt-pick-datetime.switch-to-year-month:Choose month and year`;
|
|
39
|
+
/** A label for the cancel button */
|
|
40
|
+
this.cancelBtnLabel = $localize `:@@nxt-pick-datetime.cancel:Cancel`;
|
|
41
|
+
/** A label for the set button */
|
|
42
|
+
this.setBtnLabel = $localize `:@@nxt-pick-datetime.set:Set`;
|
|
43
|
+
/** A label for the range 'from' in picker info */
|
|
44
|
+
this.rangeFromLabel = $localize `:@@nxt-pick-datetime.from:From`;
|
|
45
|
+
/** A label for the range 'to' in picker info */
|
|
46
|
+
this.rangeToLabel = $localize `:@@nxt-pick-datetime.to:To`;
|
|
47
|
+
/** A label for the hour12 button (AM) */
|
|
48
|
+
this.hour12AMLabel = $localize `:@@nxt-pick-datetime.time-am:AM`;
|
|
49
|
+
/** A label for the hour12 button (PM) */
|
|
50
|
+
this.hour12PMLabel = $localize `:@@nxt-pick-datetime.time-pm:PM`;
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeIntl, providedIn: 'root' }); }
|
|
54
|
+
}
|
|
55
|
+
export { DateTimeIntl };
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeIntl, decorators: [{
|
|
57
|
+
type: Injectable,
|
|
58
|
+
args: [{
|
|
59
|
+
providedIn: 'root'
|
|
60
|
+
}]
|
|
61
|
+
}] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1pbnRsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9waWNrLWRhdGV0aW1lL3NyYy9saWIvZGF0ZS10aW1lL2RhdGUtdGltZS1waWNrZXItaW50bC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTs7QUFLOUIsTUFHYSxZQUFZO0lBSHpCO1FBS0k7OztXQUdHO1FBQ00sWUFBTyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFBO1FBRXJELGtFQUFrRTtRQUNsRSxrQkFBYSxHQUFHLFNBQVMsQ0FBQSw2Q0FBNkMsQ0FBQTtRQUV0RSxvRUFBb0U7UUFDcEUsb0JBQWUsR0FBRyxTQUFTLENBQUEsaURBQWlELENBQUE7UUFFNUUsa0VBQWtFO1FBQ2xFLGtCQUFhLEdBQUcsU0FBUyxDQUFBLDZDQUE2QyxDQUFBO1FBRXRFLG9FQUFvRTtRQUNwRSxvQkFBZSxHQUFHLFNBQVMsQ0FBQSxpREFBaUQsQ0FBQTtRQUU1RSxnRUFBZ0U7UUFDaEUsZ0JBQVcsR0FBRyxTQUFTLENBQUEseUNBQXlDLENBQUE7UUFFaEUsa0VBQWtFO1FBQ2xFLGtCQUFhLEdBQUcsU0FBUyxDQUFBLDZDQUE2QyxDQUFBO1FBRXRFLHFFQUFxRTtRQUNyRSxtQkFBYyxHQUFHLFNBQVMsQ0FBQSxnREFBZ0QsQ0FBQTtRQUUxRSxpRUFBaUU7UUFDakUsbUJBQWMsR0FBRyxTQUFTLENBQUEsNENBQTRDLENBQUE7UUFFdEUsb0VBQW9FO1FBQ3BFLGtCQUFhLEdBQUcsU0FBUyxDQUFBLDhDQUE4QyxDQUFBO1FBRXZFLGdFQUFnRTtRQUNoRSxrQkFBYSxHQUFHLFNBQVMsQ0FBQSwwQ0FBMEMsQ0FBQTtRQUVuRSwwRUFBMEU7UUFDMUUsdUJBQWtCLEdBQUcsU0FBUyxDQUFBLHdEQUF3RCxDQUFBO1FBRXRGLHNFQUFzRTtRQUN0RSx1QkFBa0IsR0FBRyxTQUFTLENBQUEsb0RBQW9ELENBQUE7UUFFbEYsNkVBQTZFO1FBQzdFLDJCQUFzQixHQUFHLFNBQVMsQ0FBQSwyREFBMkQsQ0FBQTtRQUU3Riw0RUFBNEU7UUFDNUUsK0JBQTBCLEdBQUcsU0FBUyxDQUFBLGlFQUFpRSxDQUFBO1FBRXZHLG9DQUFvQztRQUNwQyxtQkFBYyxHQUFHLFNBQVMsQ0FBQSxvQ0FBb0MsQ0FBQTtRQUU5RCxpQ0FBaUM7UUFDakMsZ0JBQVcsR0FBRyxTQUFTLENBQUEsOEJBQThCLENBQUE7UUFFckQsa0RBQWtEO1FBQ2xELG1CQUFjLEdBQUcsU0FBUyxDQUFBLGdDQUFnQyxDQUFBO1FBRTFELGdEQUFnRDtRQUNoRCxpQkFBWSxHQUFHLFNBQVMsQ0FBQSw0QkFBNEIsQ0FBQTtRQUVwRCx5Q0FBeUM7UUFDekMsa0JBQWEsR0FBRyxTQUFTLENBQUEsaUNBQWlDLENBQUE7UUFFMUQseUNBQXlDO1FBQ3pDLGtCQUFhLEdBQUcsU0FBUyxDQUFBLGlDQUFpQyxDQUFBO0tBQzdEOzhHQW5FWSxZQUFZO2tIQUFaLFlBQVksY0FGVCxNQUFNOztTQUVULFlBQVk7MkZBQVosWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IExvY2FsaXplRm4gfSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZS9pbml0J1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5cbi8qKiBAaW50ZXJuYWwgKi9cbmRlY2xhcmUgY29uc3QgJGxvY2FsaXplOiBMb2NhbGl6ZUZuXG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVJbnRsIHtcblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBsYWJlbHMgaGVyZSBhcmUgY2hhbmdlZC4gVXNlIHRoaXMgdG8gbm90aWZ5XG4gICAgICogY29tcG9uZW50cyBpZiB0aGUgbGFiZWxzIGhhdmUgY2hhbmdlZCBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAgICAgKi9cbiAgICByZWFkb25seSBjaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSB1cCBzZWNvbmQgYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKS4gICovXG4gICAgdXBTZWNvbmRMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS51cC1zZWNvbmQ6QWRkIGEgc2Vjb25kYFxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSBkb3duIHNlY29uZCBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgICBkb3duU2Vjb25kTGFiZWwgPSAkbG9jYWxpemVgOkBAbnh0LXBpY2stZGF0ZXRpbWUuZG93bi1zZWNvbmQ6TWludXMgYSBzZWNvbmRgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIHVwIG1pbnV0ZSBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgICB1cE1pbnV0ZUxhYmVsID0gJGxvY2FsaXplYDpAQG54dC1waWNrLWRhdGV0aW1lLnVwLW1pbnV0ZTpBZGQgYSBtaW51dGVgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIGRvd24gbWludXRlIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykuICAqL1xuICAgIGRvd25NaW51dGVMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS5kb3duLW1pbnV0ZTpNaW51cyBhIG1pbnV0ZWBcblxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgdXAgaG91ciBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgICB1cEhvdXJMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS51cC1ob3VyOkFkZCBhIGhvdXJgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIGRvd24gaG91ciBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpLiAgKi9cbiAgICBkb3duSG91ckxhYmVsID0gJGxvY2FsaXplYDpAQG54dC1waWNrLWRhdGV0aW1lLmRvd24taG91cjpNaW51cyBhIGhvdXJgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIG1vbnRoIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykgKi9cbiAgICBwcmV2TW9udGhMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS5wcmV2LW1vbnRoOlByZXZpb3VzIG1vbnRoYFxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSBuZXh0IG1vbnRoIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykgKi9cbiAgICBuZXh0TW9udGhMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS5uZXh0LW1vbnRoOk5leHQgbW9udGhgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIHllYXIgYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKSAqL1xuICAgIHByZXZZZWFyTGFiZWwgPSAkbG9jYWxpemVgOkBAbnh0LXBpY2stZGF0ZXRpbWUucHJldi15ZWFyOlByZXZpb3VzIHllYXJgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIG5leHQgeWVhciBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpICovXG4gICAgbmV4dFllYXJMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS5uZXh0LXllYXI6TmV4dCB5ZWFyYFxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSBwcmV2aW91cyBtdWx0aS15ZWFyIGJ1dHRvbiAodXNlZCBieSBzY3JlZW4gcmVhZGVycykgKi9cbiAgICBwcmV2TXVsdGlZZWFyTGFiZWwgPSAkbG9jYWxpemVgOkBAbnh0LXBpY2stZGF0ZXRpbWUucHJldi1tdWx0aS15ZWFyOlByZXZpb3VzIDIxIHllYXJzYFxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSBuZXh0IG11bHRpLXllYXIgYnV0dG9uICh1c2VkIGJ5IHNjcmVlbiByZWFkZXJzKSAqL1xuICAgIG5leHRNdWx0aVllYXJMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS5uZXh0LW11bHRpLXllYXI6TmV4dCAyMSB5ZWFyc2BcblxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgJ3N3aXRjaCB0byBtb250aCB2aWV3JyBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpICovXG4gICAgc3dpdGNoVG9Nb250aFZpZXdMYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS5zd2l0Y2gtdG8tbW9udGg6Q2hhbmdlIHRvIG1vbnRoIHZpZXdgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlICdzd2l0Y2ggdG8geWVhciB2aWV3JyBidXR0b24gKHVzZWQgYnkgc2NyZWVuIHJlYWRlcnMpICovXG4gICAgc3dpdGNoVG9NdWx0aVllYXJWaWV3TGFiZWwgPSAkbG9jYWxpemVgOkBAbnh0LXBpY2stZGF0ZXRpbWUuc3dpdGNoLXRvLXllYXItbW9udGg6Q2hvb3NlIG1vbnRoIGFuZCB5ZWFyYFxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSBjYW5jZWwgYnV0dG9uICovXG4gICAgY2FuY2VsQnRuTGFiZWwgPSAkbG9jYWxpemVgOkBAbnh0LXBpY2stZGF0ZXRpbWUuY2FuY2VsOkNhbmNlbGBcblxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgc2V0IGJ1dHRvbiAqL1xuICAgIHNldEJ0bkxhYmVsID0gJGxvY2FsaXplYDpAQG54dC1waWNrLWRhdGV0aW1lLnNldDpTZXRgXG5cbiAgICAvKiogQSBsYWJlbCBmb3IgdGhlIHJhbmdlICdmcm9tJyBpbiBwaWNrZXIgaW5mbyAqL1xuICAgIHJhbmdlRnJvbUxhYmVsID0gJGxvY2FsaXplYDpAQG54dC1waWNrLWRhdGV0aW1lLmZyb206RnJvbWBcblxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgcmFuZ2UgJ3RvJyBpbiBwaWNrZXIgaW5mbyAqL1xuICAgIHJhbmdlVG9MYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS50bzpUb2BcblxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgaG91cjEyIGJ1dHRvbiAoQU0pICovXG4gICAgaG91cjEyQU1MYWJlbCA9ICRsb2NhbGl6ZWA6QEBueHQtcGljay1kYXRldGltZS50aW1lLWFtOkFNYFxuXG4gICAgLyoqIEEgbGFiZWwgZm9yIHRoZSBob3VyMTIgYnV0dG9uIChQTSkgKi9cbiAgICBob3VyMTJQTUxhYmVsID0gJGxvY2FsaXplYDpAQG54dC1waWNrLWRhdGV0aW1lLnRpbWUtcG06UE1gXG59XG4iXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Directive, HostBinding, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { merge, of as observableOf } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class DateTimeTriggerDirective {
|
|
5
|
+
get disabled() {
|
|
6
|
+
return this._disabled ?? !!this.dtPicker?.disabled;
|
|
7
|
+
}
|
|
8
|
+
set disabled(value) {
|
|
9
|
+
this._disabled = value;
|
|
10
|
+
}
|
|
11
|
+
/** @internal */
|
|
12
|
+
get triggerDisabledClass() {
|
|
13
|
+
return this.disabled;
|
|
14
|
+
}
|
|
15
|
+
constructor(changeDetector) {
|
|
16
|
+
this.changeDetector = changeDetector;
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
}
|
|
20
|
+
ngOnChanges(changes) {
|
|
21
|
+
if ('datepicker' in changes) {
|
|
22
|
+
this.watchStateChanges();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ngAfterContentInit() {
|
|
26
|
+
this.watchStateChanges();
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.stateChanges?.unsubscribe();
|
|
30
|
+
this.stateChanges = undefined;
|
|
31
|
+
}
|
|
32
|
+
handleClickOnHost(event) {
|
|
33
|
+
if (this.dtPicker) {
|
|
34
|
+
this.dtPicker.open();
|
|
35
|
+
event.stopPropagation();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
watchStateChanges() {
|
|
39
|
+
this.stateChanges?.unsubscribe();
|
|
40
|
+
this.stateChanges = undefined;
|
|
41
|
+
const inputDisabled = this.dtPicker && this.dtPicker.dtInput ?
|
|
42
|
+
this.dtPicker.dtInput.disabledChange : observableOf();
|
|
43
|
+
const pickerDisabled = this.dtPicker ?
|
|
44
|
+
this.dtPicker.disabledChange : observableOf();
|
|
45
|
+
this.stateChanges = merge(pickerDisabled, inputDisabled)
|
|
46
|
+
.subscribe(() => {
|
|
47
|
+
this.changeDetector.markForCheck();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeTriggerDirective, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
51
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DateTimeTriggerDirective, selector: "[nxtDateTimeTrigger]", inputs: { dtPicker: ["nxtDateTimeTrigger", "dtPicker"], disabled: "disabled" }, host: { listeners: { "click": "handleClickOnHost($event)" }, properties: { "class.nxt-dt-trigger-disabled": "this.triggerDisabledClass" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
52
|
+
}
|
|
53
|
+
export { DateTimeTriggerDirective };
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeTriggerDirective, decorators: [{
|
|
55
|
+
type: Directive,
|
|
56
|
+
args: [{
|
|
57
|
+
selector: '[nxtDateTimeTrigger]'
|
|
58
|
+
}]
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { dtPicker: [{
|
|
60
|
+
type: Input,
|
|
61
|
+
args: ['nxtDateTimeTrigger']
|
|
62
|
+
}], disabled: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], triggerDisabledClass: [{
|
|
65
|
+
type: HostBinding,
|
|
66
|
+
args: ['class.nxt-dt-trigger-disabled']
|
|
67
|
+
}], handleClickOnHost: [{
|
|
68
|
+
type: HostListener,
|
|
69
|
+
args: ['click', ['$event']]
|
|
70
|
+
}] } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BpY2stZGF0ZXRpbWUvc3JjL2xpYi9kYXRlLXRpbWUvZGF0ZS10aW1lLXBpY2tlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVDLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUE7QUFDN0osT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLElBQUksWUFBWSxFQUFnQixNQUFNLE1BQU0sQ0FBQTs7QUFHMUUsTUFHYSx3QkFBd0I7SUFNakMsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLElBQ0ksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN4QixDQUFDO0lBSUQsWUFDdUIsY0FBaUM7UUFBakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO0lBQ3BELENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7U0FDM0I7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFBO0lBQ2pDLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxLQUFZO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDcEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO1NBQzFCO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFBO1FBRTdCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBRXpELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFakQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBcUMsRUFBRSxhQUFvQyxDQUFDO2FBQ2pHLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3RDLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQzs4R0FuRVEsd0JBQXdCO2tHQUF4Qix3QkFBd0I7O1NBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DO3dHQUlHLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBS3ZCLFFBQVE7c0JBRFgsS0FBSztnQkFXRixvQkFBb0I7c0JBRHZCLFdBQVc7dUJBQUMsK0JBQStCO2dCQThCNUMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCdcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbnh0RGF0ZVRpbWVUcmlnZ2VyXSdcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVUcmlnZ2VyRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoJ254dERhdGVUaW1lVHJpZ2dlcicpXG4gICAgZHRQaWNrZXI/OiBEYXRlVGltZUNvbXBvbmVudDxUPlxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA/PyAhIXRoaXMuZHRQaWNrZXI/LmRpc2FibGVkXG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ueHQtZHQtdHJpZ2dlci1kaXNhYmxlZCcpXG4gICAgZ2V0IHRyaWdnZXJEaXNhYmxlZENsYXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGVDaGFuZ2VzPzogU3Vic2NyaXB0aW9uXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICgnZGF0ZXBpY2tlcicgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy53YXRjaFN0YXRlQ2hhbmdlcygpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMud2F0Y2hTdGF0ZUNoYW5nZXMoKVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcz8udW5zdWJzY3JpYmUoKVxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcyA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVDbGlja09uSG9zdChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZHRQaWNrZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZHRQaWNrZXIub3BlbigpXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YXRjaFN0YXRlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXM/LnVuc3Vic2NyaWJlKClcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMgPSB1bmRlZmluZWRcblxuICAgICAgICBjb25zdCBpbnB1dERpc2FibGVkID0gdGhpcy5kdFBpY2tlciAmJiB0aGlzLmR0UGlja2VyLmR0SW5wdXQgP1xuICAgICAgICAgICAgdGhpcy5kdFBpY2tlci5kdElucHV0LmRpc2FibGVkQ2hhbmdlIDogb2JzZXJ2YWJsZU9mKClcblxuICAgICAgICBjb25zdCBwaWNrZXJEaXNhYmxlZCA9IHRoaXMuZHRQaWNrZXIgP1xuICAgICAgICAgICAgdGhpcy5kdFBpY2tlci5kaXNhYmxlZENoYW5nZSA6IG9ic2VydmFibGVPZigpXG5cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMgPSBtZXJnZShwaWNrZXJEaXNhYmxlZCBhcyBPYnNlcnZhYmxlPGJvb2xlYW4+LCBpbnB1dERpc2FibGVkIGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpXG4gICAgICAgICAgICB9KVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
2
|
+
import { OverlayModule } from '@angular/cdk/overlay';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { NgModule } from '@angular/core';
|
|
5
|
+
import { DialogModule } from '../dialog/dialog.module';
|
|
6
|
+
import { CalendarBodyComponent } from './calendar-body/calendar-body.component';
|
|
7
|
+
import { MonthViewComponent } from './calendar-month-view/calendar-month-view.component';
|
|
8
|
+
import { MultiYearViewComponent } from './calendar-multi-year-view/calendar-multi-year-view.component';
|
|
9
|
+
import { YearViewComponent } from './calendar-year-view/calendar-year-view.component';
|
|
10
|
+
import { CalendarComponent } from './calendar/calendar.component';
|
|
11
|
+
import { DateTimeInlineComponent } from './date-time-inline/date-time-inline.component';
|
|
12
|
+
import { DateTimeContainerComponent } from './date-time-picker-container/date-time-picker-container.component';
|
|
13
|
+
import { DateTimeInputDirective } from './date-time-picker-input.directive';
|
|
14
|
+
import { DateTimeIntl } from './date-time-picker-intl.service';
|
|
15
|
+
import { DateTimeTriggerDirective } from './date-time-picker-trigger.directive';
|
|
16
|
+
import { DateTimeComponent, NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER } from './date-time-picker/date-time-picker.component';
|
|
17
|
+
import { NumberFixedLenPipe } from './number-fixed-len.pipe';
|
|
18
|
+
import { TimerBoxComponent } from './timer-box/timer-box.component';
|
|
19
|
+
import { TimerComponent } from './timer/timer.component';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
class DateTimeModule {
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
23
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: DateTimeModule, declarations: [DateTimeTriggerDirective,
|
|
24
|
+
DateTimeInputDirective,
|
|
25
|
+
DateTimeComponent,
|
|
26
|
+
DateTimeContainerComponent,
|
|
27
|
+
MultiYearViewComponent,
|
|
28
|
+
YearViewComponent,
|
|
29
|
+
MonthViewComponent,
|
|
30
|
+
TimerComponent,
|
|
31
|
+
TimerBoxComponent,
|
|
32
|
+
CalendarComponent,
|
|
33
|
+
CalendarBodyComponent,
|
|
34
|
+
NumberFixedLenPipe,
|
|
35
|
+
DateTimeInlineComponent], imports: [CommonModule,
|
|
36
|
+
OverlayModule,
|
|
37
|
+
DialogModule,
|
|
38
|
+
A11yModule], exports: [CalendarComponent,
|
|
39
|
+
TimerComponent,
|
|
40
|
+
DateTimeTriggerDirective,
|
|
41
|
+
DateTimeInputDirective,
|
|
42
|
+
DateTimeComponent,
|
|
43
|
+
DateTimeInlineComponent,
|
|
44
|
+
MultiYearViewComponent,
|
|
45
|
+
YearViewComponent,
|
|
46
|
+
MonthViewComponent] }); }
|
|
47
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeModule, providers: [
|
|
48
|
+
DateTimeIntl,
|
|
49
|
+
NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER
|
|
50
|
+
], imports: [CommonModule,
|
|
51
|
+
OverlayModule,
|
|
52
|
+
DialogModule,
|
|
53
|
+
A11yModule] }); }
|
|
54
|
+
}
|
|
55
|
+
export { DateTimeModule };
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DateTimeModule, decorators: [{
|
|
57
|
+
type: NgModule,
|
|
58
|
+
args: [{
|
|
59
|
+
declarations: [
|
|
60
|
+
DateTimeTriggerDirective,
|
|
61
|
+
DateTimeInputDirective,
|
|
62
|
+
DateTimeComponent,
|
|
63
|
+
DateTimeContainerComponent,
|
|
64
|
+
MultiYearViewComponent,
|
|
65
|
+
YearViewComponent,
|
|
66
|
+
MonthViewComponent,
|
|
67
|
+
TimerComponent,
|
|
68
|
+
TimerBoxComponent,
|
|
69
|
+
CalendarComponent,
|
|
70
|
+
CalendarBodyComponent,
|
|
71
|
+
NumberFixedLenPipe,
|
|
72
|
+
DateTimeInlineComponent
|
|
73
|
+
],
|
|
74
|
+
imports: [
|
|
75
|
+
CommonModule,
|
|
76
|
+
OverlayModule,
|
|
77
|
+
DialogModule,
|
|
78
|
+
A11yModule
|
|
79
|
+
],
|
|
80
|
+
exports: [
|
|
81
|
+
CalendarComponent,
|
|
82
|
+
TimerComponent,
|
|
83
|
+
DateTimeTriggerDirective,
|
|
84
|
+
DateTimeInputDirective,
|
|
85
|
+
DateTimeComponent,
|
|
86
|
+
DateTimeInlineComponent,
|
|
87
|
+
MultiYearViewComponent,
|
|
88
|
+
YearViewComponent,
|
|
89
|
+
MonthViewComponent
|
|
90
|
+
],
|
|
91
|
+
providers: [
|
|
92
|
+
DateTimeIntl,
|
|
93
|
+
NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER
|
|
94
|
+
]
|
|
95
|
+
}]
|
|
96
|
+
}] });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BpY2stZGF0ZXRpbWUvc3JjL2xpYi9kYXRlLXRpbWUvZGF0ZS10aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQTtBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQTtBQUN2RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQTtBQUM5RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFDQUFxQyxFQUFFLE1BQU0sK0NBQStDLENBQUE7QUFDeEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBOztBQUV4RCxNQXNDYSxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFwQ25CLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsaUJBQWlCO1lBQ2pCLDBCQUEwQjtZQUMxQixzQkFBc0I7WUFDdEIsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsa0JBQWtCO1lBQ2xCLHVCQUF1QixhQUd2QixZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixVQUFVLGFBR1YsaUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCx3QkFBd0I7WUFDeEIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFDdkIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixrQkFBa0I7K0dBT2IsY0FBYyxhQUxaO1lBQ1AsWUFBWTtZQUNaLHFDQUFxQztTQUN4QyxZQW5CRyxZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixVQUFVOztTQWtCTCxjQUFjOzJGQUFkLGNBQWM7a0JBdEMxQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRTt3QkFDVix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQiwwQkFBMEI7d0JBQzFCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQix1QkFBdUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixVQUFVO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDTCxpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3FCQUNyQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixxQ0FBcUM7cUJBQ3hDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5J1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnXG5pbXBvcnQgeyBDYWxlbmRhckJvZHlDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWJvZHkvY2FsZW5kYXItYm9keS5jb21wb25lbnQnXG5pbXBvcnQgeyBNb250aFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLW1vbnRoLXZpZXcvY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQnXG5pbXBvcnQgeyBNdWx0aVllYXJWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1tdWx0aS15ZWFyLXZpZXcvY2FsZW5kYXItbXVsdGkteWVhci12aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IFllYXJWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci15ZWFyLXZpZXcvY2FsZW5kYXIteWVhci12aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRlVGltZUlubGluZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS10aW1lLWlubGluZS9kYXRlLXRpbWUtaW5saW5lLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGVUaW1lQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLWNvbnRhaW5lci9kYXRlLXRpbWUtcGlja2VyLWNvbnRhaW5lci5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRlVGltZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLWlucHV0LmRpcmVjdGl2ZSdcbmltcG9ydCB7IERhdGVUaW1lSW50bCB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci1pbnRsLnNlcnZpY2UnXG5pbXBvcnQgeyBEYXRlVGltZVRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXItdHJpZ2dlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCwgTlhUX0RUUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUiB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCdcbmltcG9ydCB7IE51bWJlckZpeGVkTGVuUGlwZSB9IGZyb20gJy4vbnVtYmVyLWZpeGVkLWxlbi5waXBlJ1xuaW1wb3J0IHsgVGltZXJCb3hDb21wb25lbnQgfSBmcm9tICcuL3RpbWVyLWJveC90aW1lci1ib3guY29tcG9uZW50J1xuaW1wb3J0IHsgVGltZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVyL3RpbWVyLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgRGF0ZVRpbWVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgICAgICBEYXRlVGltZUlucHV0RGlyZWN0aXZlLFxuICAgICAgICBEYXRlVGltZUNvbXBvbmVudCxcbiAgICAgICAgRGF0ZVRpbWVDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIE11bHRpWWVhclZpZXdDb21wb25lbnQsXG4gICAgICAgIFllYXJWaWV3Q29tcG9uZW50LFxuICAgICAgICBNb250aFZpZXdDb21wb25lbnQsXG4gICAgICAgIFRpbWVyQ29tcG9uZW50LFxuICAgICAgICBUaW1lckJveENvbXBvbmVudCxcbiAgICAgICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgICAgIENhbGVuZGFyQm9keUNvbXBvbmVudCxcbiAgICAgICAgTnVtYmVyRml4ZWRMZW5QaXBlLFxuICAgICAgICBEYXRlVGltZUlubGluZUNvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgQTExeU1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICAgICAgVGltZXJDb21wb25lbnQsXG4gICAgICAgIERhdGVUaW1lVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICAgICAgRGF0ZVRpbWVJbnB1dERpcmVjdGl2ZSxcbiAgICAgICAgRGF0ZVRpbWVDb21wb25lbnQsXG4gICAgICAgIERhdGVUaW1lSW5saW5lQ29tcG9uZW50LFxuICAgICAgICBNdWx0aVllYXJWaWV3Q29tcG9uZW50LFxuICAgICAgICBZZWFyVmlld0NvbXBvbmVudCxcbiAgICAgICAgTW9udGhWaWV3Q29tcG9uZW50XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRGF0ZVRpbWVJbnRsLFxuICAgICAgICBOWFRfRFRQSUNLRVJfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZU1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** @internal */
|
|
4
|
+
class NumberFixedLenPipe {
|
|
5
|
+
transform(num, len) {
|
|
6
|
+
if (num == undefined || !Number.isFinite(num))
|
|
7
|
+
return undefined;
|
|
8
|
+
const number = Math.floor(num);
|
|
9
|
+
if (len == undefined || !Number.isFinite(len))
|
|
10
|
+
return number;
|
|
11
|
+
return number.toFixed(0).padStart(Math.floor(len), '0');
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NumberFixedLenPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
14
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NumberFixedLenPipe, name: "numberFixedLen" }); }
|
|
15
|
+
}
|
|
16
|
+
export { NumberFixedLenPipe };
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NumberFixedLenPipe, decorators: [{
|
|
18
|
+
type: Pipe,
|
|
19
|
+
args: [{
|
|
20
|
+
name: 'numberFixedLen'
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpeGVkLWxlbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGljay1kYXRldGltZS9zcmMvbGliL2RhdGUtdGltZS9udW1iZXItZml4ZWQtbGVuLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUE7O0FBRW5ELGdCQUFnQjtBQUNoQixNQUdhLGtCQUFrQjtJQUMzQixTQUFTLENBQUMsR0FBdUIsRUFBRSxHQUF1QjtRQUN0RCxJQUFJLEdBQUcsSUFBSSxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUN6QyxPQUFPLFNBQVMsQ0FBQTtRQUVwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRTlCLElBQUksR0FBRyxJQUFJLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxDQUFBO1FBRWpCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMzRCxDQUFDOzhHQVhRLGtCQUFrQjs0R0FBbEIsa0JBQWtCOztTQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFIOUIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZ0JBQWdCO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG4vKiogQGludGVybmFsICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ251bWJlckZpeGVkTGVuJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJGaXhlZExlblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0obnVtOiBudW1iZXIgfCB1bmRlZmluZWQsIGxlbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChudW0gPT0gdW5kZWZpbmVkIHx8ICFOdW1iZXIuaXNGaW5pdGUobnVtKSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcblxuICAgICAgICBjb25zdCBudW1iZXIgPSBNYXRoLmZsb29yKG51bSlcblxuICAgICAgICBpZiAobGVuID09IHVuZGVmaW5lZCB8fCAhTnVtYmVyLmlzRmluaXRlKGxlbikpXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyXG5cbiAgICAgICAgcmV0dXJuIG51bWJlci50b0ZpeGVkKDApLnBhZFN0YXJ0KE1hdGguZmxvb3IobGVuKSwgJzAnKVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
|
+
import { take } from 'rxjs/operators';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../date-time-picker-intl.service";
|
|
5
|
+
import * as i2 from "../../class/date-time-adapter.class";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "../timer-box/timer-box.component";
|
|
8
|
+
class TimerComponent {
|
|
9
|
+
get pickerMoment() {
|
|
10
|
+
return this._pickerMoment;
|
|
11
|
+
}
|
|
12
|
+
set pickerMoment(value) {
|
|
13
|
+
value = this.dateTimeAdapter.deserialize(value);
|
|
14
|
+
this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();
|
|
15
|
+
}
|
|
16
|
+
get min() {
|
|
17
|
+
return this._minDateTime;
|
|
18
|
+
}
|
|
19
|
+
set min(value) {
|
|
20
|
+
value = this.dateTimeAdapter.deserialize(value);
|
|
21
|
+
this._minDateTime = this.getValidDate(value);
|
|
22
|
+
}
|
|
23
|
+
get max() {
|
|
24
|
+
return this._maxDateTime;
|
|
25
|
+
}
|
|
26
|
+
set max(value) {
|
|
27
|
+
value = this.dateTimeAdapter.deserialize(value);
|
|
28
|
+
this._maxDateTime = this.getValidDate(value);
|
|
29
|
+
}
|
|
30
|
+
get hourValue() {
|
|
31
|
+
return this.dateTimeAdapter.getHours(this.pickerMoment);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The value would be displayed in hourBox.
|
|
35
|
+
* We need this because the value displayed in hourBox it not
|
|
36
|
+
* the same as the hourValue when the timer is in hour12Timer mode.
|
|
37
|
+
*/
|
|
38
|
+
get hourBoxValue() {
|
|
39
|
+
let hours = this.hourValue;
|
|
40
|
+
if (!this.hour12Timer) {
|
|
41
|
+
return hours;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
if (hours === 0) {
|
|
45
|
+
hours = 12;
|
|
46
|
+
this.isPM = false;
|
|
47
|
+
}
|
|
48
|
+
else if (hours > 0 && hours < 12) {
|
|
49
|
+
this.isPM = false;
|
|
50
|
+
}
|
|
51
|
+
else if (hours === 12) {
|
|
52
|
+
this.isPM = true;
|
|
53
|
+
}
|
|
54
|
+
else if (hours > 12 && hours < 24) {
|
|
55
|
+
hours = hours - 12;
|
|
56
|
+
this.isPM = true;
|
|
57
|
+
}
|
|
58
|
+
return hours;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
get minuteValue() {
|
|
62
|
+
return this.dateTimeAdapter.getMinutes(this.pickerMoment);
|
|
63
|
+
}
|
|
64
|
+
get secondValue() {
|
|
65
|
+
return this.dateTimeAdapter.getSeconds(this.pickerMoment);
|
|
66
|
+
}
|
|
67
|
+
get upHourButtonLabel() {
|
|
68
|
+
return this.pickerIntl.upHourLabel;
|
|
69
|
+
}
|
|
70
|
+
get downHourButtonLabel() {
|
|
71
|
+
return this.pickerIntl.downHourLabel;
|
|
72
|
+
}
|
|
73
|
+
get upMinuteButtonLabel() {
|
|
74
|
+
return this.pickerIntl.upMinuteLabel;
|
|
75
|
+
}
|
|
76
|
+
get downMinuteButtonLabel() {
|
|
77
|
+
return this.pickerIntl.downMinuteLabel;
|
|
78
|
+
}
|
|
79
|
+
get upSecondButtonLabel() {
|
|
80
|
+
return this.pickerIntl.upSecondLabel;
|
|
81
|
+
}
|
|
82
|
+
get downSecondButtonLabel() {
|
|
83
|
+
return this.pickerIntl.downSecondLabel;
|
|
84
|
+
}
|
|
85
|
+
get hour12ButtonLabel() {
|
|
86
|
+
return this.isPM
|
|
87
|
+
? this.pickerIntl.hour12PMLabel
|
|
88
|
+
: this.pickerIntl.hour12AMLabel;
|
|
89
|
+
}
|
|
90
|
+
/** @internal */
|
|
91
|
+
get timerClass() {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
/** @internal */
|
|
95
|
+
get timeTabIndex() {
|
|
96
|
+
return -1;
|
|
97
|
+
}
|
|
98
|
+
constructor(ngZone, elmRef, pickerIntl, cdRef, dateTimeAdapter) {
|
|
99
|
+
this.ngZone = ngZone;
|
|
100
|
+
this.elmRef = elmRef;
|
|
101
|
+
this.pickerIntl = pickerIntl;
|
|
102
|
+
this.cdRef = cdRef;
|
|
103
|
+
this.dateTimeAdapter = dateTimeAdapter;
|
|
104
|
+
this.isPM = false; // a flag indicates the current timer moment is in PM or AM
|
|
105
|
+
/**
|
|
106
|
+
* Whether to show the second's timer
|
|
107
|
+
*/
|
|
108
|
+
this.showSecondsTimer = false;
|
|
109
|
+
/**
|
|
110
|
+
* Whether the timer is in hour12 format
|
|
111
|
+
*/
|
|
112
|
+
this.hour12Timer = false;
|
|
113
|
+
/**
|
|
114
|
+
* Hours to change per step
|
|
115
|
+
*/
|
|
116
|
+
this.stepHour = 1;
|
|
117
|
+
/**
|
|
118
|
+
* Minutes to change per step
|
|
119
|
+
*/
|
|
120
|
+
this.stepMinute = 1;
|
|
121
|
+
/**
|
|
122
|
+
* Seconds to change per step
|
|
123
|
+
*/
|
|
124
|
+
this.stepSecond = 1;
|
|
125
|
+
this.selectedChange = new EventEmitter();
|
|
126
|
+
}
|
|
127
|
+
ngOnInit() { }
|
|
128
|
+
/**
|
|
129
|
+
* Focus to the host element
|
|
130
|
+
*/
|
|
131
|
+
focus() {
|
|
132
|
+
this.ngZone.runOutsideAngular(() => {
|
|
133
|
+
this.ngZone.onStable
|
|
134
|
+
.asObservable()
|
|
135
|
+
.pipe(take(1))
|
|
136
|
+
.subscribe(() => {
|
|
137
|
+
this.elmRef.nativeElement.focus();
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Set the hour value via typing into timer box input
|
|
143
|
+
* We need this to handle the hour value when the timer is in hour12 mode
|
|
144
|
+
*/
|
|
145
|
+
setHourValueViaInput(hours) {
|
|
146
|
+
if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {
|
|
147
|
+
hours = hours + 12;
|
|
148
|
+
}
|
|
149
|
+
else if (this.hour12Timer && !this.isPM && hours === 12) {
|
|
150
|
+
hours = 0;
|
|
151
|
+
}
|
|
152
|
+
this.setHourValue(hours);
|
|
153
|
+
}
|
|
154
|
+
setHourValue(hours) {
|
|
155
|
+
const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);
|
|
156
|
+
this.selectedChange.emit(m);
|
|
157
|
+
this.cdRef.markForCheck();
|
|
158
|
+
}
|
|
159
|
+
setMinuteValue(minutes) {
|
|
160
|
+
const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);
|
|
161
|
+
this.selectedChange.emit(m);
|
|
162
|
+
this.cdRef.markForCheck();
|
|
163
|
+
}
|
|
164
|
+
setSecondValue(seconds) {
|
|
165
|
+
const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);
|
|
166
|
+
this.selectedChange.emit(m);
|
|
167
|
+
this.cdRef.markForCheck();
|
|
168
|
+
}
|
|
169
|
+
setMeridiem(event) {
|
|
170
|
+
this.isPM = !this.isPM;
|
|
171
|
+
let hours = this.hourValue;
|
|
172
|
+
if (this.isPM) {
|
|
173
|
+
hours = hours + 12;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
hours = hours - 12;
|
|
177
|
+
}
|
|
178
|
+
if (hours >= 0 && hours <= 23) {
|
|
179
|
+
this.setHourValue(hours);
|
|
180
|
+
}
|
|
181
|
+
this.cdRef.markForCheck();
|
|
182
|
+
event.preventDefault();
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if the up hour button is enabled
|
|
186
|
+
*/
|
|
187
|
+
upHourEnabled() {
|
|
188
|
+
return (!this.max ||
|
|
189
|
+
this.compareHours(this.stepHour, this.max) < 1);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check if the down hour button is enabled
|
|
193
|
+
*/
|
|
194
|
+
downHourEnabled() {
|
|
195
|
+
return (!this.min ||
|
|
196
|
+
this.compareHours(-this.stepHour, this.min) > -1);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Check if the up minute button is enabled
|
|
200
|
+
*/
|
|
201
|
+
upMinuteEnabled() {
|
|
202
|
+
return (!this.max ||
|
|
203
|
+
this.compareMinutes(this.stepMinute, this.max) < 1);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Check if the down minute button is enabled
|
|
207
|
+
*/
|
|
208
|
+
downMinuteEnabled() {
|
|
209
|
+
return (!this.min ||
|
|
210
|
+
this.compareMinutes(-this.stepMinute, this.min) > -1);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Check if the up second button is enabled
|
|
214
|
+
*/
|
|
215
|
+
upSecondEnabled() {
|
|
216
|
+
return (!this.max ||
|
|
217
|
+
this.compareSeconds(this.stepSecond, this.max) < 1);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check if the down second button is enabled
|
|
221
|
+
*/
|
|
222
|
+
downSecondEnabled() {
|
|
223
|
+
return (!this.min ||
|
|
224
|
+
this.compareSeconds(-this.stepSecond, this.min) > -1);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* PickerMoment's hour value +/- certain amount and compare it to the give date
|
|
228
|
+
* 1 is after the comparedDate
|
|
229
|
+
* -1 is before the comparedDate
|
|
230
|
+
* 0 is equal the comparedDate
|
|
231
|
+
*/
|
|
232
|
+
compareHours(amount, comparedDate) {
|
|
233
|
+
const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;
|
|
234
|
+
const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);
|
|
235
|
+
return this.dateTimeAdapter.compare(result, comparedDate);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* PickerMoment's minute value +/- certain amount and compare it to the give date
|
|
239
|
+
* 1 is after the comparedDate
|
|
240
|
+
* -1 is before the comparedDate
|
|
241
|
+
* 0 is equal the comparedDate
|
|
242
|
+
*/
|
|
243
|
+
compareMinutes(amount, comparedDate) {
|
|
244
|
+
const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;
|
|
245
|
+
const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);
|
|
246
|
+
return this.dateTimeAdapter.compare(result, comparedDate);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* PickerMoment's second value +/- certain amount and compare it to the give date
|
|
250
|
+
* 1 is after the comparedDate
|
|
251
|
+
* -1 is before the comparedDate
|
|
252
|
+
* 0 is equal the comparedDate
|
|
253
|
+
*/
|
|
254
|
+
compareSeconds(amount, comparedDate) {
|
|
255
|
+
const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;
|
|
256
|
+
const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);
|
|
257
|
+
return this.dateTimeAdapter.compare(result, comparedDate);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get a valid date object
|
|
261
|
+
*/
|
|
262
|
+
getValidDate(obj) {
|
|
263
|
+
return this.dateTimeAdapter.isDateInstance(obj) &&
|
|
264
|
+
this.dateTimeAdapter.isValid(obj)
|
|
265
|
+
? obj
|
|
266
|
+
: undefined;
|
|
267
|
+
}
|
|
268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: TimerComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.DateTimeIntl }, { token: i0.ChangeDetectorRef }, { token: i2.DateTimeAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
269
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: TimerComponent, selector: "nxt-date-time-timer", inputs: { pickerMoment: "pickerMoment", min: "min", max: "max", showSecondsTimer: "showSecondsTimer", hour12Timer: "hour12Timer", stepHour: "stepHour", stepMinute: "stepMinute", stepSecond: "stepSecond" }, outputs: { selectedChange: "selectedChange" }, host: { properties: { "class.nxt-dt-timer": "this.timerClass", "attr.tabindex": "this.timeTabIndex" } }, ngImport: i0, template: "<nxt-date-time-timer-box [upBtnAriaLabel]=\"upHourButtonLabel\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [boxValue]=\"hourBoxValue\"\n [value]=\"hourValue\"\n [min]=\"0\"\n [max]=\"23\"\n [step]=\"stepHour\"\n inputLabel=\"Hour\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"></nxt-date-time-timer-box>\n<nxt-date-time-timer-box [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [value]=\"minuteValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepMinute\"\n inputLabel=\"Minute\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"></nxt-date-time-timer-box>\n<nxt-date-time-timer-box *ngIf=\"showSecondsTimer\"\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [value]=\"secondValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepSecond\"\n inputLabel=\"Second\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"></nxt-date-time-timer-box>\n\n<div *ngIf=\"hour12Timer\"\n class=\"nxt-dt-timer-hour12\">\n <button class=\"nxt-dt-control-button nxt-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridiem($event)\">\n <span class=\"nxt-dt-control-button-content\"\n tabindex=\"-1\">\n {{hour12ButtonLabel}}\n </span>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TimerBoxComponent, selector: "nxt-date-time-timer-box", inputs: ["showDivider", "upBtnAriaLabel", "upBtnDisabled", "downBtnAriaLabel", "downBtnDisabled", "boxValue", "value", "min", "max", "step", "inputLabel"], outputs: ["valueChange", "inputChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
270
|
+
}
|
|
271
|
+
export { TimerComponent };
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: TimerComponent, decorators: [{
|
|
273
|
+
type: Component,
|
|
274
|
+
args: [{ selector: 'nxt-date-time-timer', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nxt-date-time-timer-box [upBtnAriaLabel]=\"upHourButtonLabel\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [boxValue]=\"hourBoxValue\"\n [value]=\"hourValue\"\n [min]=\"0\"\n [max]=\"23\"\n [step]=\"stepHour\"\n inputLabel=\"Hour\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"></nxt-date-time-timer-box>\n<nxt-date-time-timer-box [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [value]=\"minuteValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepMinute\"\n inputLabel=\"Minute\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"></nxt-date-time-timer-box>\n<nxt-date-time-timer-box *ngIf=\"showSecondsTimer\"\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [value]=\"secondValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepSecond\"\n inputLabel=\"Second\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"></nxt-date-time-timer-box>\n\n<div *ngIf=\"hour12Timer\"\n class=\"nxt-dt-timer-hour12\">\n <button class=\"nxt-dt-control-button nxt-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridiem($event)\">\n <span class=\"nxt-dt-control-button-content\"\n tabindex=\"-1\">\n {{hour12ButtonLabel}}\n </span>\n </button>\n</div>\n" }]
|
|
275
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.DateTimeIntl }, { type: i0.ChangeDetectorRef }, { type: i2.DateTimeAdapter }]; }, propDecorators: { pickerMoment: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], min: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], max: [{
|
|
280
|
+
type: Input
|
|
281
|
+
}], showSecondsTimer: [{
|
|
282
|
+
type: Input
|
|
283
|
+
}], hour12Timer: [{
|
|
284
|
+
type: Input
|
|
285
|
+
}], stepHour: [{
|
|
286
|
+
type: Input
|
|
287
|
+
}], stepMinute: [{
|
|
288
|
+
type: Input
|
|
289
|
+
}], stepSecond: [{
|
|
290
|
+
type: Input
|
|
291
|
+
}], selectedChange: [{
|
|
292
|
+
type: Output
|
|
293
|
+
}], timerClass: [{
|
|
294
|
+
type: HostBinding,
|
|
295
|
+
args: ['class.nxt-dt-timer']
|
|
296
|
+
}], timeTabIndex: [{
|
|
297
|
+
type: HostBinding,
|
|
298
|
+
args: ['attr.tabindex']
|
|
299
|
+
}] } });
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGljay1kYXRldGltZS9zcmMvbGliL2RhdGUtdGltZS90aW1lci90aW1lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9waWNrLWRhdGV0aW1lL3NyYy9saWIvZGF0ZS10aW1lL3RpbWVyL3RpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDM0osT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7Ozs7QUFJckMsTUFPYSxjQUFjO0lBR3ZCLElBQ0ksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsS0FBb0I7UUFDakMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQy9FLENBQUM7SUFJRCxJQUNJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDNUIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLEtBQW9CO1FBQ3hCLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUlELElBQ0ks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dGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgTmdab25lLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBEYXRlVGltZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jbGFzcy9kYXRlLXRpbWUtYWRhcHRlci5jbGFzcydcbmltcG9ydCB7IERhdGVUaW1lSW50bCB9IGZyb20gJy4uL2RhdGUtdGltZS1waWNrZXItaW50bC5zZXJ2aWNlJ1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ254dC1kYXRlLXRpbWUtdGltZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lckNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIFRoZSBjdXJyZW50IHBpY2tlciBtb21lbnQgKi9cbiAgICBwcml2YXRlIF9waWNrZXJNb21lbnQ/OiBUXG4gICAgQElucHV0KClcbiAgICBnZXQgcGlja2VyTW9tZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGlja2VyTW9tZW50XG4gICAgfVxuXG4gICAgc2V0IHBpY2tlck1vbWVudCh2YWx1ZTogVCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKVxuICAgICAgICB0aGlzLl9waWNrZXJNb21lbnQgPSB0aGlzLmdldFZhbGlkRGF0ZSh2YWx1ZSkgfHwgdGhpcy5kYXRlVGltZUFkYXB0ZXIubm93KClcbiAgICB9XG5cbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlIHRpbWUgKi9cbiAgICBwcml2YXRlIF9taW5EYXRlVGltZT86IFRcbiAgICBASW5wdXQoKVxuICAgIGdldCBtaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EYXRlVGltZVxuICAgIH1cblxuICAgIHNldCBtaW4odmFsdWU6IFQgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSlcbiAgICAgICAgdGhpcy5fbWluRGF0ZVRpbWUgPSB0aGlzLmdldFZhbGlkRGF0ZSh2YWx1ZSlcbiAgICB9XG5cbiAgICAvKiogVGhlIG1heGltdW0gc2VsZWN0YWJsZSBkYXRlIHRpbWUgKi9cbiAgICBwcml2YXRlIF9tYXhEYXRlVGltZT86IFRcbiAgICBASW5wdXQoKVxuICAgIGdldCBtYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhEYXRlVGltZVxuICAgIH1cblxuICAgIHNldCBtYXgodmFsdWU6IFQgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSlcbiAgICAgICAgdGhpcy5fbWF4RGF0ZVRpbWUgPSB0aGlzLmdldFZhbGlkRGF0ZSh2YWx1ZSlcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUE06IGJvb2xlYW4gPSBmYWxzZSAvLyBhIGZsYWcgaW5kaWNhdGVzIHRoZSBjdXJyZW50IHRpbWVyIG1vbWVudCBpcyBpbiBQTSBvciBBTVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IHRoZSBzZWNvbmQncyB0aW1lclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlY29uZHNUaW1lcjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0aW1lciBpcyBpbiBob3VyMTIgZm9ybWF0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBob3VyMTJUaW1lcjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICAvKipcbiAgICAgKiBIb3VycyB0byBjaGFuZ2UgcGVyIHN0ZXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0ZXBIb3VyID0gMVxuXG4gICAgLyoqXG4gICAgICogTWludXRlcyB0byBjaGFuZ2UgcGVyIHN0ZXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0ZXBNaW51dGUgPSAxXG5cbiAgICAvKipcbiAgICAgKiBTZWNvbmRzIHRvIGNoYW5nZSBwZXIgc3RlcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RlcFNlY29uZCA9IDFcblxuICAgIGdldCBob3VyVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldEhvdXJzKHRoaXMucGlja2VyTW9tZW50KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSB3b3VsZCBiZSBkaXNwbGF5ZWQgaW4gaG91ckJveC5cbiAgICAgKiBXZSBuZWVkIHRoaXMgYmVjYXVzZSB0aGUgdmFsdWUgZGlzcGxheWVkIGluIGhvdXJCb3ggaXQgbm90XG4gICAgICogdGhlIHNhbWUgYXMgdGhlIGhvdXJWYWx1ZSB3aGVuIHRoZSB0aW1lciBpcyBpbiBob3VyMTJUaW1lciBtb2RlLlxuICAgICAqL1xuICAgIGdldCBob3VyQm94VmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGhvdXJzID0gdGhpcy5ob3VyVmFsdWVcblxuICAgICAgICBpZiAoIXRoaXMuaG91cjEyVGltZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3Vyc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhvdXJzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaG91cnMgPSAxMlxuICAgICAgICAgICAgICAgIHRoaXMuaXNQTSA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzID4gMCAmJiBob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1BNID0gZmFsc2VcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1BNID0gdHJ1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA+IDEyICYmIGhvdXJzIDwgMjQpIHtcbiAgICAgICAgICAgICAgICBob3VycyA9IGhvdXJzIC0gMTJcbiAgICAgICAgICAgICAgICB0aGlzLmlzUE0gPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBob3Vyc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1pbnV0ZVZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRNaW51dGVzKHRoaXMucGlja2VyTW9tZW50KVxuICAgIH1cblxuICAgIGdldCBzZWNvbmRWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0U2Vjb25kcyh0aGlzLnBpY2tlck1vbWVudClcbiAgICB9XG5cbiAgICBnZXQgdXBIb3VyQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VySW50bC51cEhvdXJMYWJlbFxuICAgIH1cblxuICAgIGdldCBkb3duSG91ckJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlckludGwuZG93bkhvdXJMYWJlbFxuICAgIH1cblxuICAgIGdldCB1cE1pbnV0ZUJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlckludGwudXBNaW51dGVMYWJlbFxuICAgIH1cblxuICAgIGdldCBkb3duTWludXRlQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VySW50bC5kb3duTWludXRlTGFiZWxcbiAgICB9XG5cbiAgICBnZXQgdXBTZWNvbmRCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJJbnRsLnVwU2Vjb25kTGFiZWxcbiAgICB9XG5cbiAgICBnZXQgZG93blNlY29uZEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlckludGwuZG93blNlY29uZExhYmVsXG4gICAgfVxuXG4gICAgZ2V0IGhvdXIxMkJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUE1cbiAgICAgICAgICAgID8gdGhpcy5waWNrZXJJbnRsLmhvdXIxMlBNTGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5waWNrZXJJbnRsLmhvdXIxMkFNTGFiZWxcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubnh0LWR0LXRpbWVyJylcbiAgICBnZXQgdGltZXJDbGFzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBnZXQgdGltZVRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAtMVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsbVJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGlja2VySW50bDogRGF0ZVRpbWVJbnRsLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkYXRlVGltZUFkYXB0ZXI6IERhdGVUaW1lQWRhcHRlcjxUPlxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHsgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgdG8gdGhlIGhvc3QgZWxlbWVudFxuICAgICAqL1xuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxtUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBob3VyIHZhbHVlIHZpYSB0eXBpbmcgaW50byB0aW1lciBib3ggaW5wdXRcbiAgICAgKiBXZSBuZWVkIHRoaXMgdG8gaGFuZGxlIHRoZSBob3VyIHZhbHVlIHdoZW4gdGhlIHRpbWVyIGlzIGluIGhvdXIxMiBtb2RlXG4gICAgICovXG4gICAgc2V0SG91clZhbHVlVmlhSW5wdXQoaG91cnM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ob3VyMTJUaW1lciAmJiB0aGlzLmlzUE0gJiYgaG91cnMgPj0gMSAmJiBob3VycyA8PSAxMSkge1xuICAgICAgICAgICAgaG91cnMgPSBob3VycyArIDEyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ob3VyMTJUaW1lciAmJiAhdGhpcy5pc1BNICYmIGhvdXJzID09PSAxMikge1xuICAgICAgICAgICAgaG91cnMgPSAwXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEhvdXJWYWx1ZShob3VycylcbiAgICB9XG5cbiAgICBzZXRIb3VyVmFsdWUoaG91cnM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBtID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuc2V0SG91cnModGhpcy5waWNrZXJNb21lbnQsIGhvdXJzKVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQobSlcbiAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cblxuICAgIHNldE1pbnV0ZVZhbHVlKG1pbnV0ZXM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBtID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuc2V0TWludXRlcyh0aGlzLnBpY2tlck1vbWVudCwgbWludXRlcylcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KG0pXG4gICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKClcbiAgICB9XG5cbiAgICBzZXRTZWNvbmRWYWx1ZShzZWNvbmRzOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbSA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldFNlY29uZHModGhpcy5waWNrZXJNb21lbnQsIHNlY29uZHMpXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChtKVxuICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuXG4gICAgc2V0TWVyaWRpZW0oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzUE0gPSAhdGhpcy5pc1BNXG5cbiAgICAgICAgbGV0IGhvdXJzID0gdGhpcy5ob3VyVmFsdWVcbiAgICAgICAgaWYgKHRoaXMuaXNQTSkge1xuICAgICAgICAgICAgaG91cnMgPSBob3VycyArIDEyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBob3VycyA9IGhvdXJzIC0gMTJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3VycyA+PSAwICYmIGhvdXJzIDw9IDIzKSB7XG4gICAgICAgICAgICB0aGlzLnNldEhvdXJWYWx1ZShob3VycylcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSB1cCBob3VyIGJ1dHRvbiBpcyBlbmFibGVkXG4gICAgICovXG4gICAgdXBIb3VyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLm1heCB8fFxuICAgICAgICAgICAgdGhpcy5jb21wYXJlSG91cnModGhpcy5zdGVwSG91ciwgdGhpcy5tYXgpIDwgMVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGRvd24gaG91ciBidXR0b24gaXMgZW5hYmxlZFxuICAgICAqL1xuICAgIGRvd25Ib3VyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLm1pbiB8fFxuICAgICAgICAgICAgdGhpcy5jb21wYXJlSG91cnMoLXRoaXMuc3RlcEhvdXIsIHRoaXMubWluKSA+IC0xXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgdXAgbWludXRlIGJ1dHRvbiBpcyBlbmFibGVkXG4gICAgICovXG4gICAgdXBNaW51dGVFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMubWF4IHx8XG4gICAgICAgICAgICB0aGlzLmNvbXBhcmVNaW51dGVzKHRoaXMuc3RlcE1pbnV0ZSwgdGhpcy5tYXgpIDwgMVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGRvd24gbWludXRlIGJ1dHRvbiBpcyBlbmFibGVkXG4gICAgICovXG4gICAgZG93bk1pbnV0ZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5taW4gfHxcbiAgICAgICAgICAgIHRoaXMuY29tcGFyZU1pbnV0ZXMoLXRoaXMuc3RlcE1pbnV0ZSwgdGhpcy5taW4pID4gLTFcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSB1cCBzZWNvbmQgYnV0dG9uIGlzIGVuYWJsZWRcbiAgICAgKi9cbiAgICB1cFNlY29uZEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5tYXggfHxcbiAgICAgICAgICAgIHRoaXMuY29tcGFyZVNlY29uZHModGhpcy5zdGVwU2Vjb25kLCB0aGlzLm1heCkgPCAxXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZG93biBzZWNvbmQgYnV0dG9uIGlzIGVuYWJsZWRcbiAgICAgKi9cbiAgICBkb3duU2Vjb25kRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLm1pbiB8fFxuICAgICAgICAgICAgdGhpcy5jb21wYXJlU2Vjb25kcygtdGhpcy5zdGVwU2Vjb25kLCB0aGlzLm1pbikgPiAtMVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGlja2VyTW9tZW50J3MgaG91ciB2YWx1ZSArLy0gY2VydGFpbiBhbW91bnQgYW5kIGNvbXBhcmUgaXQgdG8gdGhlIGdpdmUgZGF0ZVxuICAgICAqIDEgaXMgYWZ0ZXIgdGhlIGNvbXBhcmVkRGF0ZVxuICAgICAqIC0xIGlzIGJlZm9yZSB0aGUgY29tcGFyZWREYXRlXG4gICAgICogMCBpcyBlcXVhbCB0aGUgY29tcGFyZWREYXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb21wYXJlSG91cnMoYW1vdW50OiBudW1iZXIsIGNvbXBhcmVkRGF0ZTogVCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0SG91cnModGhpcy5waWNrZXJNb21lbnQpICsgYW1vdW50XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldEhvdXJzKHRoaXMucGlja2VyTW9tZW50LCBob3VycylcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNvbXBhcmUocmVzdWx0LCBjb21wYXJlZERhdGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGlja2VyTW9tZW50J3MgbWludXRlIHZhbHVlICsvLSBjZXJ0YWluIGFtb3VudCBhbmQgY29tcGFyZSBpdCB0byB0aGUgZ2l2ZSBkYXRlXG4gICAgICogMSBpcyBhZnRlciB0aGUgY29tcGFyZWREYXRlXG4gICAgICogLTEgaXMgYmVmb3JlIHRoZSBjb21wYXJlZERhdGVcbiAgICAgKiAwIGlzIGVxdWFsIHRoZSBjb21wYXJlZERhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbXBhcmVNaW51dGVzKGFtb3VudDogbnVtYmVyLCBjb21wYXJlZERhdGU6IFQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtaW51dGVzID1cbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldE1pbnV0ZXModGhpcy5waWNrZXJNb21lbnQpICsgYW1vdW50XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldE1pbnV0ZXMoXG4gICAgICAgICAgICB0aGlzLnBpY2tlck1vbWVudCxcbiAgICAgICAgICAgIG1pbnV0ZXNcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlVGltZUFkYXB0ZXIuY29tcGFyZShyZXN1bHQsIGNvbXBhcmVkRGF0ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQaWNrZXJNb21lbnQncyBzZWNvbmQgdmFsdWUgKy8tIGNlcnRhaW4gYW1vdW50IGFuZCBjb21wYXJlIGl0IHRvIHRoZSBnaXZlIGRhdGVcbiAgICAgKiAxIGlzIGFmdGVyIHRoZSBjb21wYXJlZERhdGVcbiAgICAgKiAtMSBpcyBiZWZvcmUgdGhlIGNvbXBhcmVkRGF0ZVxuICAgICAqIDAgaXMgZXF1YWwgdGhlIGNvbXBhcmVkRGF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY29tcGFyZVNlY29uZHMoYW1vdW50OiBudW1iZXIsIGNvbXBhcmVkRGF0ZTogVCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPVxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0U2Vjb25kcyh0aGlzLnBpY2tlck1vbWVudCkgKyBhbW91bnRcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuc2V0U2Vjb25kcyhcbiAgICAgICAgICAgIHRoaXMucGlja2VyTW9tZW50LFxuICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICApXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVUaW1lQWRhcHRlci5jb21wYXJlKHJlc3VsdCwgY29tcGFyZWREYXRlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHZhbGlkIGRhdGUgb2JqZWN0XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRWYWxpZERhdGUob2JqOiBhbnkpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmlzRGF0ZUluc3RhbmNlKG9iaikgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQob2JqKVxuICAgICAgICAgICAgPyBvYmpcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgfVxufVxuIiwiPG54dC1kYXRlLXRpbWUtdGltZXItYm94IFt1cEJ0bkFyaWFMYWJlbF09XCJ1cEhvdXJCdXR0b25MYWJlbFwiXG4gICAgW2Rvd25CdG5BcmlhTGFiZWxdPVwiZG93bkhvdXJCdXR0b25MYWJlbFwiXG4gICAgW3VwQnRuRGlzYWJsZWRdPVwiIXVwSG91ckVuYWJsZWQoKVwiXG4gICAgW2Rvd25CdG5EaXNhYmxlZF09XCIhZG93bkhvdXJFbmFibGVkKClcIlxuICAgIFtib3hWYWx1ZV09XCJob3VyQm94VmFsdWVcIlxuICAgIFt2YWx1ZV09XCJob3VyVmFsdWVcIlxuICAgIFttaW5dPVwiMFwiXG4gICAgW21heF09XCIyM1wiXG4gICAgW3N0ZXBdPVwic3RlcEhvdXJcIlxuICAgIGlucHV0TGFiZWw9XCJIb3VyXCJcbiAgICAoaW5wdXRDaGFuZ2UpPVwic2V0SG91clZhbHVlVmlhSW5wdXQoJGV2ZW50KVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInNldEhvdXJWYWx1ZSgkZXZlbnQpXCI+PC9ueHQtZGF0ZS10aW1lLXRpbWVyLWJveD5cbjxueHQtZGF0ZS10aW1lLXRpbWVyLWJveCBbc2hvd0RpdmlkZXJdPVwidHJ1ZVwiXG4gICAgW3VwQnRuQXJpYUxhYmVsXT1cInVwTWludXRlQnV0dG9uTGFiZWxcIlxuICAgIFtkb3duQnRuQXJpYUxhYmVsXT1cImRvd25NaW51dGVCdXR0b25MYWJlbFwiXG4gICAgW3VwQnRuRGlzYWJsZWRdPVwiIXVwTWludXRlRW5hYmxlZCgpXCJcbiAgICBbZG93bkJ0bkRpc2FibGVkXT1cIiFkb3duTWludXRlRW5hYmxlZCgpXCJcbiAgICBbdmFsdWVdPVwibWludXRlVmFsdWVcIlxuICAgIFttaW5dPVwiMFwiXG4gICAgW21heF09XCI1OVwiXG4gICAgW3N0ZXBdPVwic3RlcE1pbnV0ZVwiXG4gICAgaW5wdXRMYWJlbD1cIk1pbnV0ZVwiXG4gICAgKGlucHV0Q2hhbmdlKT1cInNldE1pbnV0ZVZhbHVlKCRldmVudClcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRNaW51dGVWYWx1ZSgkZXZlbnQpXCI+PC9ueHQtZGF0ZS10aW1lLXRpbWVyLWJveD5cbjxueHQtZGF0ZS10aW1lLXRpbWVyLWJveCAqbmdJZj1cInNob3dTZWNvbmRzVGltZXJcIlxuICAgIFtzaG93RGl2aWRlcl09XCJ0cnVlXCJcbiAgICBbdXBCdG5BcmlhTGFiZWxdPVwidXBTZWNvbmRCdXR0b25MYWJlbFwiXG4gICAgW2Rvd25CdG5BcmlhTGFiZWxdPVwiZG93blNlY29uZEJ1dHRvbkxhYmVsXCJcbiAgICBbdXBCdG5EaXNhYmxlZF09XCIhdXBTZWNvbmRFbmFibGVkKClcIlxuICAgIFtkb3duQnRuRGlzYWJsZWRdPVwiIWRvd25TZWNvbmRFbmFibGVkKClcIlxuICAgIFt2YWx1ZV09XCJzZWNvbmRWYWx1ZVwiXG4gICAgW21pbl09XCIwXCJcbiAgICBbbWF4XT1cIjU5XCJcbiAgICBbc3RlcF09XCJzdGVwU2Vjb25kXCJcbiAgICBpbnB1dExhYmVsPVwiU2Vjb25kXCJcbiAgICAoaW5wdXRDaGFuZ2UpPVwic2V0U2Vjb25kVmFsdWUoJGV2ZW50KVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInNldFNlY29uZFZhbHVlKCRldmVudClcIj48L254dC1kYXRlLXRpbWUtdGltZXItYm94PlxuXG48ZGl2ICpuZ0lmPVwiaG91cjEyVGltZXJcIlxuICAgIGNsYXNzPVwibnh0LWR0LXRpbWVyLWhvdXIxMlwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJueHQtZHQtY29udHJvbC1idXR0b24gbnh0LWR0LXRpbWVyLWhvdXIxMi1ib3hcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgKGNsaWNrKT1cInNldE1lcmlkaWVtKCRldmVudClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJueHQtZHQtY29udHJvbC1idXR0b24tY29udGVudFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICB7e2hvdXIxMkJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|