@elderbyte/ngx-starter 18.12.5 → 18.12.6

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.
Files changed (46) hide show
  1. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +21 -0
  2. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +24 -0
  3. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +43 -0
  4. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +69 -0
  5. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +117 -0
  6. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +44 -0
  7. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +87 -130
  8. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +41 -0
  9. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +144 -0
  10. package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +93 -0
  11. package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +54 -0
  12. package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +37 -0
  13. package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +10 -0
  14. package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +96 -0
  15. package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +194 -0
  16. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  17. package/fesm2022/elderbyte-ngx-starter.mjs +771 -888
  18. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  19. package/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.d.ts +9 -0
  20. package/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.d.ts +7 -0
  21. package/lib/components/time/elder-interval-picker/controller/interval-controller.d.ts +35 -0
  22. package/lib/components/time/elder-interval-picker/controller/interval-form-controller.d.ts +12 -0
  23. package/lib/components/time/elder-interval-picker/controller/interval-select-controller.d.ts +22 -0
  24. package/lib/components/time/elder-interval-picker/controller/interval-shift-controller.d.ts +13 -0
  25. package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +26 -34
  26. package/lib/components/time/elder-interval-picker/{elder-interval-picker-binding.directive.d.ts → interval-picker-binding/elder-interval-picker-binding.directive.d.ts} +3 -4
  27. package/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +37 -0
  28. package/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.d.ts +46 -0
  29. package/lib/components/time/elder-interval-picker/model/anchor-state.d.ts +20 -0
  30. package/lib/components/time/elder-interval-picker/model/interval-state.d.ts +16 -0
  31. package/lib/components/time/elder-interval-picker/model/smart-shift-state.d.ts +8 -0
  32. package/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.d.ts +30 -0
  33. package/lib/components/time/elder-interval-picker/util/interval-picker-util.d.ts +20 -0
  34. package/lib/components/time/elder-time.module.d.ts +4 -4
  35. package/package.json +1 -1
  36. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +0 -40
  37. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -202
  38. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.mjs +0 -284
  39. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model.mjs +0 -445
  40. package/esm2022/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.mjs +0 -37
  41. package/esm2022/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.mjs +0 -25
  42. package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +0 -55
  43. package/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.d.ts +0 -77
  44. package/lib/components/time/elder-interval-picker/model/interval-picker-model.d.ts +0 -113
  45. package/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.d.ts +0 -7
  46. package/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.d.ts +0 -4
@@ -0,0 +1,21 @@
1
+ import AnchorState from '../model/anchor-state';
2
+ export default class IntervalAnchorController {
3
+ constructor(manager) {
4
+ this.manager = manager;
5
+ }
6
+ resetAnchor() {
7
+ this.manager.setAnchor(AnchorState.empty());
8
+ }
9
+ resetAnchorTime() {
10
+ this.manager.setAnchor(this.manager.anchorValue.withTimeMidnight());
11
+ }
12
+ setFixedAnchorPointToStartDateTime() {
13
+ const startDateTime = this.manager.intervalValue?.startDateTime;
14
+ this.manager.setAnchor(AnchorState.createFromDateTime(startDateTime));
15
+ }
16
+ setFixedAnchorPointToEndDateTime() {
17
+ const endDateTime = this.manager.intervalValue?.endDateTime;
18
+ this.manager.setAnchor(AnchorState.createFromDateTime(endDateTime));
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtYW5jaG9yLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2NvbnRyb2xsZXIvaW50ZXJ2YWwtYW5jaG9yLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFFL0MsTUFBTSxDQUFDLE9BQU8sT0FBTyx3QkFBd0I7SUFDM0MsWUFBb0IsT0FBbUM7UUFBbkMsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7SUFBRyxDQUFDO0lBRXBELFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFTSxrQ0FBa0M7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFBO1FBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7SUFFTSxnQ0FBZ0M7UUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFBO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBJbnRlcnZhbFBpY2tlclN0YXRlTWFuYWdlciBmcm9tICcuLi9tYW5hZ2VyL2ludGVydmFsLXBpY2tlci1zdGF0ZS1tYW5hZ2VyJ1xuaW1wb3J0IEFuY2hvclN0YXRlIGZyb20gJy4uL21vZGVsL2FuY2hvci1zdGF0ZSdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWxBbmNob3JDb250cm9sbGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYW5hZ2VyOiBJbnRlcnZhbFBpY2tlclN0YXRlTWFuYWdlcikge31cblxuICBwdWJsaWMgcmVzZXRBbmNob3IoKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyLnNldEFuY2hvcihBbmNob3JTdGF0ZS5lbXB0eSgpKVxuICB9XG5cbiAgcHVibGljIHJlc2V0QW5jaG9yVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZXIuc2V0QW5jaG9yKHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS53aXRoVGltZU1pZG5pZ2h0KCkpXG4gIH1cblxuICBwdWJsaWMgc2V0Rml4ZWRBbmNob3JQb2ludFRvU3RhcnREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydERhdGVUaW1lID0gdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWU/LnN0YXJ0RGF0ZVRpbWVcbiAgICB0aGlzLm1hbmFnZXIuc2V0QW5jaG9yKEFuY2hvclN0YXRlLmNyZWF0ZUZyb21EYXRlVGltZShzdGFydERhdGVUaW1lKSlcbiAgfVxuXG4gIHB1YmxpYyBzZXRGaXhlZEFuY2hvclBvaW50VG9FbmREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmREYXRlVGltZSA9IHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlPy5lbmREYXRlVGltZVxuICAgIHRoaXMubWFuYWdlci5zZXRBbmNob3IoQW5jaG9yU3RhdGUuY3JlYXRlRnJvbURhdGVUaW1lKGVuZERhdGVUaW1lKSlcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { TemporalUtil } from '../../../../common/time/temporal-util';
2
+ import IntervalState from '../model/interval-state';
3
+ export default class IntervalCalendarController {
4
+ constructor(manager) {
5
+ this.manager = manager;
6
+ }
7
+ setStartDateFromJSDate(date) {
8
+ const startDate = TemporalUtil.getPlainDateFromJSDate(date);
9
+ if (!this.manager.intervalValue) {
10
+ this.manager.setInterval(new IntervalState(startDate, null));
11
+ return;
12
+ }
13
+ this.manager.setInterval(this.manager.intervalValue.withStartDate(startDate));
14
+ }
15
+ setEndDateFromJSDate(date) {
16
+ const endDate = TemporalUtil.getPlainDateFromJSDate(date);
17
+ if (!this.manager.intervalValue) {
18
+ this.manager.setInterval(new IntervalState(null, endDate));
19
+ return;
20
+ }
21
+ this.manager.setInterval(this.manager.intervalValue.withEndDate(endDate));
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtY2FsZW5kYXItY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvY29udHJvbGxlci9pbnRlcnZhbC1jYWxlbmRhci1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUVwRSxPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3QyxZQUFvQixPQUFtQztRQUFuQyxZQUFPLEdBQVAsT0FBTyxDQUE0QjtJQUFHLENBQUM7SUFFcEQsc0JBQXNCLENBQUMsSUFBVTtRQUN0QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDNUQsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBRU0sb0JBQW9CLENBQUMsSUFBVTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFekQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDMUQsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wb3JhbFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90ZW1wb3JhbC11dGlsJ1xuaW1wb3J0IEludGVydmFsUGlja2VyU3RhdGVNYW5hZ2VyIGZyb20gJy4uL21hbmFnZXIvaW50ZXJ2YWwtcGlja2VyLXN0YXRlLW1hbmFnZXInXG5pbXBvcnQgSW50ZXJ2YWxTdGF0ZSBmcm9tICcuLi9tb2RlbC9pbnRlcnZhbC1zdGF0ZSdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWxDYWxlbmRhckNvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hbmFnZXI6IEludGVydmFsUGlja2VyU3RhdGVNYW5hZ2VyKSB7fVxuXG4gIHB1YmxpYyBzZXRTdGFydERhdGVGcm9tSlNEYXRlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydERhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUpTRGF0ZShkYXRlKVxuXG4gICAgaWYgKCF0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZSkge1xuICAgICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKHN0YXJ0RGF0ZSwgbnVsbCkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwodGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUud2l0aFN0YXJ0RGF0ZShzdGFydERhdGUpKVxuICB9XG5cbiAgcHVibGljIHNldEVuZERhdGVGcm9tSlNEYXRlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBlbmREYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21KU0RhdGUoZGF0ZSlcblxuICAgIGlmICghdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUpIHtcbiAgICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXcgSW50ZXJ2YWxTdGF0ZShudWxsLCBlbmREYXRlKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbCh0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS53aXRoRW5kRGF0ZShlbmREYXRlKSlcbiAgfVxufVxuIl19
@@ -0,0 +1,43 @@
1
+ import { LoggerFactory } from '@elderbyte/ts-logger';
2
+ import IntervalAnchorController from './interval-anchor-controller';
3
+ import IntervalCalendarController from './interval-calendar-controller';
4
+ import IntervalFormController from './interval-form-controller';
5
+ import IntervalSelectController from './interval-select-controller';
6
+ import IntervalShiftController from './interval-shift-controller';
7
+ export default class IntervalController {
8
+ /***************************************************************************
9
+ * *
10
+ * Constructor *
11
+ * *
12
+ **************************************************************************/
13
+ constructor(manager) {
14
+ this.manager = manager;
15
+ /***************************************************************************
16
+ * *
17
+ * Fields *
18
+ * *
19
+ **************************************************************************/
20
+ this.log = LoggerFactory.getLogger(this.constructor.name);
21
+ this.select = new IntervalSelectController(manager);
22
+ this.shift = new IntervalShiftController(manager);
23
+ this.form = new IntervalFormController(manager);
24
+ this.calendar = new IntervalCalendarController(manager);
25
+ this.anchor = new IntervalAnchorController(manager);
26
+ }
27
+ /***************************************************************************
28
+ * *
29
+ * Public API *
30
+ * *
31
+ **************************************************************************/
32
+ clearInterval() {
33
+ this.manager.setInterval(null);
34
+ }
35
+ clearEndTime() {
36
+ this.manager.setInterval(this.manager.intervalValue.withEndTime(null));
37
+ }
38
+ clearStartTime() {
39
+ this.manager.setInterval(this.manager.intervalValue.withStartTime(null));
40
+ }
41
+ manualEmit() { }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvY29udHJvbGxlci9pbnRlcnZhbC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVwRCxPQUFPLHdCQUF3QixNQUFNLDhCQUE4QixDQUFBO0FBQ25FLE9BQU8sMEJBQTBCLE1BQU0sZ0NBQWdDLENBQUE7QUFDdkUsT0FBTyxzQkFBc0IsTUFBTSw0QkFBNEIsQ0FBQTtBQUMvRCxPQUFPLHdCQUF3QixNQUFNLDhCQUE4QixDQUFBO0FBQ25FLE9BQU8sdUJBQXVCLE1BQU0sNkJBQTZCLENBQUE7QUFDakUsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBa0I7SUFjckM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQW9CLE9BQW1DO1FBQW5DLFlBQU8sR0FBUCxPQUFPLENBQTRCO1FBbkJ2RDs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQWNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsYUFBYTtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRU0sVUFBVSxLQUFVLENBQUM7Q0FDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIgZnJvbSAnLi4vbWFuYWdlci9pbnRlcnZhbC1waWNrZXItc3RhdGUtbWFuYWdlcidcbmltcG9ydCBJbnRlcnZhbEFuY2hvckNvbnRyb2xsZXIgZnJvbSAnLi9pbnRlcnZhbC1hbmNob3ItY29udHJvbGxlcidcbmltcG9ydCBJbnRlcnZhbENhbGVuZGFyQ29udHJvbGxlciBmcm9tICcuL2ludGVydmFsLWNhbGVuZGFyLWNvbnRyb2xsZXInXG5pbXBvcnQgSW50ZXJ2YWxGb3JtQ29udHJvbGxlciBmcm9tICcuL2ludGVydmFsLWZvcm0tY29udHJvbGxlcidcbmltcG9ydCBJbnRlcnZhbFNlbGVjdENvbnRyb2xsZXIgZnJvbSAnLi9pbnRlcnZhbC1zZWxlY3QtY29udHJvbGxlcidcbmltcG9ydCBJbnRlcnZhbFNoaWZ0Q29udHJvbGxlciBmcm9tICcuL2ludGVydmFsLXNoaWZ0LWNvbnRyb2xsZXInXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlcnZhbENvbnRyb2xsZXIge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdDogSW50ZXJ2YWxTZWxlY3RDb250cm9sbGVyXG4gIHB1YmxpYyByZWFkb25seSBzaGlmdDogSW50ZXJ2YWxTaGlmdENvbnRyb2xsZXJcbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEludGVydmFsRm9ybUNvbnRyb2xsZXJcbiAgcHVibGljIHJlYWRvbmx5IGNhbGVuZGFyOiBJbnRlcnZhbENhbGVuZGFyQ29udHJvbGxlclxuICBwdWJsaWMgcmVhZG9ubHkgYW5jaG9yOiBJbnRlcnZhbEFuY2hvckNvbnRyb2xsZXJcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hbmFnZXI6IEludGVydmFsUGlja2VyU3RhdGVNYW5hZ2VyKSB7XG4gICAgdGhpcy5zZWxlY3QgPSBuZXcgSW50ZXJ2YWxTZWxlY3RDb250cm9sbGVyKG1hbmFnZXIpXG4gICAgdGhpcy5zaGlmdCA9IG5ldyBJbnRlcnZhbFNoaWZ0Q29udHJvbGxlcihtYW5hZ2VyKVxuICAgIHRoaXMuZm9ybSA9IG5ldyBJbnRlcnZhbEZvcm1Db250cm9sbGVyKG1hbmFnZXIpXG4gICAgdGhpcy5jYWxlbmRhciA9IG5ldyBJbnRlcnZhbENhbGVuZGFyQ29udHJvbGxlcihtYW5hZ2VyKVxuICAgIHRoaXMuYW5jaG9yID0gbmV3IEludGVydmFsQW5jaG9yQ29udHJvbGxlcihtYW5hZ2VyKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNsZWFySW50ZXJ2YWwoKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG51bGwpXG4gIH1cblxuICBwdWJsaWMgY2xlYXJFbmRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbCh0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS53aXRoRW5kVGltZShudWxsKSlcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclN0YXJ0VGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwodGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUud2l0aFN0YXJ0VGltZShudWxsKSlcbiAgfVxuXG4gIHB1YmxpYyBtYW51YWxFbWl0KCk6IHZvaWQge31cbn1cbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { LoggerFactory } from '@elderbyte/ts-logger';
2
+ import { Temporal } from '@js-temporal/polyfill';
3
+ import { TemporalUtil } from '../../../../common/time/temporal-util';
4
+ import IntervalState from '../model/interval-state';
5
+ export default class IntervalFormController {
6
+ constructor(manager) {
7
+ this.manager = manager;
8
+ this.log = LoggerFactory.getLogger(this.constructor.name);
9
+ }
10
+ setStartDateFromString(htmlString) {
11
+ try {
12
+ const plainDate = TemporalUtil.getPlainDateFromHtmlDateString(htmlString);
13
+ const endDate = this.manager.intervalValue?.endDate || plainDate.add({ days: 1 });
14
+ this.manager.setInterval(new IntervalState(plainDate, endDate));
15
+ }
16
+ catch (e) {
17
+ this.log.warn('Incorrect date / time anchor form input. Could not set anchor.', htmlString);
18
+ }
19
+ }
20
+ setEndDateFromString(htmlString) {
21
+ try {
22
+ const plainDate = TemporalUtil.getPlainDateFromHtmlDateString(htmlString);
23
+ const startDate = this.manager.intervalValue?.startDate || plainDate.subtract({ days: 1 });
24
+ this.manager.setInterval(new IntervalState(startDate, plainDate));
25
+ }
26
+ catch (e) {
27
+ this.log.warn('Incorrect date / time anchor form input. Could not set anchor.', htmlString);
28
+ }
29
+ }
30
+ setAnchorDateFromString(htmlString) {
31
+ try {
32
+ const plainDate = TemporalUtil.getPlainDateFromHtmlDateString(htmlString);
33
+ this.manager.setAnchor(this.manager.anchorValue.withDate(plainDate));
34
+ }
35
+ catch (e) {
36
+ this.log.warn('Incorrect date / time anchor form input. Could not set anchor.', htmlString);
37
+ }
38
+ }
39
+ setAnchorTimeFromString(htmlString) {
40
+ try {
41
+ const plainTime = TemporalUtil.getPlainTimeFromHtmlTimeString(htmlString);
42
+ this.manager.setAnchor(this.manager.anchorValue.withTime(plainTime));
43
+ }
44
+ catch (e) {
45
+ this.log.warn('Incorrect date / time anchor form input. Could not set anchor.', htmlString);
46
+ }
47
+ }
48
+ setStartTimeFromString(timeStr) {
49
+ try {
50
+ const startTime = TemporalUtil.getPlainTimeFromHtmlTimeString(timeStr);
51
+ const startDate = this.manager.intervalValue?.startDate || Temporal.Now.plainDateISO();
52
+ this.manager.setInterval(new IntervalState(startDate, this.manager.intervalValue?.endDate || null, startTime, this.manager.intervalValue?.endTime || null));
53
+ }
54
+ catch (e) {
55
+ this.log.warn('Incorrect date / time form input. Could not set new Interval.', timeStr, e);
56
+ }
57
+ }
58
+ setEndTimeFromString(timeStr) {
59
+ try {
60
+ const endTime = TemporalUtil.getPlainTimeFromHtmlTimeString(timeStr);
61
+ const endDate = this.manager.intervalValue?.endDate || Temporal.Now.plainDateISO();
62
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue?.startDate || null, endDate, this.manager.intervalValue?.startTime || null, endTime));
63
+ }
64
+ catch (e) {
65
+ this.log.warn('Incorrect date / time form input. Could not set new Interval.', timeStr);
66
+ }
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtZm9ybS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9jb250cm9sbGVyL2ludGVydmFsLWZvcm0tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUVwRSxPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsT0FBTyxPQUFPLHNCQUFzQjtJQUd6QyxZQUFvQixPQUFtQztRQUFuQyxZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUZ0QyxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRVgsQ0FBQztJQUVwRCxzQkFBc0IsQ0FBQyxVQUFrQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsOEJBQThCLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDekUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNqRSxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNY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RSxDQUFBO1lBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN0QixJQUFJLGFBQWEsQ0FDZixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxTQUFTLElBQUksSUFBSSxFQUM3QyxPQUFPLEVBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxJQUFJLElBQUksRUFDN0MsT0FBTyxDQUNSLENBQ0YsQ0FBQTtRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0RBQStELEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDekYsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IFRlbXBvcmFsIH0gZnJvbSAnQGpzLXRlbXBvcmFsL3BvbHlmaWxsJ1xuaW1wb3J0IHsgVGVtcG9yYWxVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvdGVtcG9yYWwtdXRpbCdcbmltcG9ydCBJbnRlcnZhbFBpY2tlclN0YXRlTWFuYWdlciBmcm9tICcuLi9tYW5hZ2VyL2ludGVydmFsLXBpY2tlci1zdGF0ZS1tYW5hZ2VyJ1xuaW1wb3J0IEludGVydmFsU3RhdGUgZnJvbSAnLi4vbW9kZWwvaW50ZXJ2YWwtc3RhdGUnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsRm9ybUNvbnRyb2xsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hbmFnZXI6IEludGVydmFsUGlja2VyU3RhdGVNYW5hZ2VyKSB7fVxuXG4gIHB1YmxpYyBzZXRTdGFydERhdGVGcm9tU3RyaW5nKGh0bWxTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwbGFpbkRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUh0bWxEYXRlU3RyaW5nKGh0bWxTdHJpbmcpXG4gICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWU/LmVuZERhdGUgfHwgcGxhaW5EYXRlLmFkZCh7IGRheXM6IDEgfSlcbiAgICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXcgSW50ZXJ2YWxTdGF0ZShwbGFpbkRhdGUsIGVuZERhdGUpKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ0luY29ycmVjdCBkYXRlIC8gdGltZSBhbmNob3IgZm9ybSBpbnB1dC4gQ291bGQgbm90IHNldCBhbmNob3IuJywgaHRtbFN0cmluZylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RW5kRGF0ZUZyb21TdHJpbmcoaHRtbFN0cmluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSHRtbERhdGVTdHJpbmcoaHRtbFN0cmluZylcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlPy5zdGFydERhdGUgfHwgcGxhaW5EYXRlLnN1YnRyYWN0KHsgZGF5czogMSB9KVxuICAgICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKHN0YXJ0RGF0ZSwgcGxhaW5EYXRlKSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdJbmNvcnJlY3QgZGF0ZSAvIHRpbWUgYW5jaG9yIGZvcm0gaW5wdXQuIENvdWxkIG5vdCBzZXQgYW5jaG9yLicsIGh0bWxTdHJpbmcpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEFuY2hvckRhdGVGcm9tU3RyaW5nKGh0bWxTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwbGFpbkRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUh0bWxEYXRlU3RyaW5nKGh0bWxTdHJpbmcpXG4gICAgICB0aGlzLm1hbmFnZXIuc2V0QW5jaG9yKHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS53aXRoRGF0ZShwbGFpbkRhdGUpKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ0luY29ycmVjdCBkYXRlIC8gdGltZSBhbmNob3IgZm9ybSBpbnB1dC4gQ291bGQgbm90IHNldCBhbmNob3IuJywgaHRtbFN0cmluZylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0QW5jaG9yVGltZUZyb21TdHJpbmcoaHRtbFN0cmluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBsYWluVGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSHRtbFRpbWVTdHJpbmcoaHRtbFN0cmluZylcbiAgICAgIHRoaXMubWFuYWdlci5zZXRBbmNob3IodGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLndpdGhUaW1lKHBsYWluVGltZSkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cud2FybignSW5jb3JyZWN0IGRhdGUgLyB0aW1lIGFuY2hvciBmb3JtIGlucHV0LiBDb3VsZCBub3Qgc2V0IGFuY2hvci4nLCBodG1sU3RyaW5nKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGFydFRpbWVGcm9tU3RyaW5nKHRpbWVTdHI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5UaW1lRnJvbUh0bWxUaW1lU3RyaW5nKHRpbWVTdHIpXG4gICAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZT8uc3RhcnREYXRlIHx8IFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKVxuICAgICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKFxuICAgICAgICBuZXcgSW50ZXJ2YWxTdGF0ZShcbiAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWU/LmVuZERhdGUgfHwgbnVsbCxcbiAgICAgICAgICBzdGFydFRpbWUsXG4gICAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWU/LmVuZFRpbWUgfHwgbnVsbFxuICAgICAgICApXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cud2FybignSW5jb3JyZWN0IGRhdGUgLyB0aW1lIGZvcm0gaW5wdXQuIENvdWxkIG5vdCBzZXQgbmV3IEludGVydmFsLicsIHRpbWVTdHIsIGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEVuZFRpbWVGcm9tU3RyaW5nKHRpbWVTdHI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmRUaW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyh0aW1lU3RyKVxuICAgICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlPy5lbmREYXRlIHx8IFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKVxuICAgICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKFxuICAgICAgICBuZXcgSW50ZXJ2YWxTdGF0ZShcbiAgICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZT8uc3RhcnREYXRlIHx8IG51bGwsXG4gICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZT8uc3RhcnRUaW1lIHx8IG51bGwsXG4gICAgICAgICAgZW5kVGltZVxuICAgICAgICApXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cud2FybignSW5jb3JyZWN0IGRhdGUgLyB0aW1lIGZvcm0gaW5wdXQuIENvdWxkIG5vdCBzZXQgbmV3IEludGVydmFsLicsIHRpbWVTdHIpXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,117 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ import { TemporalUtil } from '../../../../common/time/temporal-util';
3
+ import IntervalState from '../model/interval-state';
4
+ import SmartShiftState from '../model/smart-shift-state';
5
+ export default class IntervalSelectController {
6
+ constructor(manager) {
7
+ this.manager = manager;
8
+ }
9
+ refreshAnchor() {
10
+ this.manager.setAnchor(this.manager.anchorValue.withReferenceDateTimeNow());
11
+ }
12
+ setSmartShiftState(duration, mode) {
13
+ this.manager.setSmartShift(new SmartShiftState(duration, mode));
14
+ }
15
+ selectCurrentDay() {
16
+ this.refreshAnchor();
17
+ const endDate = this.manager.anchorValue.date.add({ days: 1 });
18
+ const startDate = endDate.subtract({ days: 1 });
19
+ this.manager.setInterval(new IntervalState(startDate, endDate));
20
+ this.setSmartShiftState(Temporal.Duration.from({ days: 1 }), 'days');
21
+ }
22
+ selectYesterday() {
23
+ this.refreshAnchor();
24
+ const endDate = this.manager.anchorValue.date;
25
+ const startDate = endDate.subtract({ days: 1 });
26
+ this.manager.setInterval(new IntervalState(startDate, endDate));
27
+ this.setSmartShiftState(Temporal.Duration.from({ days: 1 }), 'days');
28
+ }
29
+ selectLastSevenDaysExcludingToday() {
30
+ this.refreshAnchor();
31
+ const endDate = this.manager.anchorValue.date;
32
+ const startDate = endDate.subtract({ days: 7 });
33
+ this.manager.setInterval(new IntervalState(startDate, endDate));
34
+ this.setSmartShiftState(Temporal.Duration.from({ days: 7 }), 'days');
35
+ }
36
+ selectLastSevenDaysIncludingToday() {
37
+ this.refreshAnchor();
38
+ const endDate = this.manager.anchorValue.date.add({ days: 1 });
39
+ const startDate = endDate.subtract({ days: 7 });
40
+ this.manager.setInterval(new IntervalState(startDate, endDate));
41
+ this.setSmartShiftState(Temporal.Duration.from({ days: 7 }), 'days');
42
+ }
43
+ selectLastThirtyDaysExcludingToday() {
44
+ this.refreshAnchor();
45
+ const endDate = this.manager.anchorValue.date;
46
+ const startDate = endDate.subtract({ days: 30 });
47
+ this.manager.setInterval(new IntervalState(startDate, endDate));
48
+ this.setSmartShiftState(Temporal.Duration.from({ days: 30 }), 'days');
49
+ }
50
+ selectLastThirtyDaysIncludingToday() {
51
+ this.refreshAnchor();
52
+ const endDate = this.manager.anchorValue.date.add({ days: 1 });
53
+ const startDate = endDate.subtract({ days: 30 });
54
+ this.manager.setInterval(new IntervalState(startDate, endDate));
55
+ this.setSmartShiftState(Temporal.Duration.from({ days: 30 }), 'days');
56
+ }
57
+ selectLast365daysExcludingToday() {
58
+ this.refreshAnchor();
59
+ const endDate = this.manager.anchorValue.date;
60
+ const startDate = endDate.subtract({ days: 365 });
61
+ this.manager.setInterval(new IntervalState(startDate, endDate));
62
+ this.setSmartShiftState(Temporal.Duration.from({ days: 365 }), 'days');
63
+ }
64
+ selectLast365daysIncludingToday() {
65
+ this.refreshAnchor();
66
+ const endDate = this.manager.anchorValue.date.add({ days: 1 });
67
+ const startDate = endDate.subtract({ days: 365 });
68
+ this.manager.setInterval(new IntervalState(startDate, endDate));
69
+ this.setSmartShiftState(Temporal.Duration.from({ days: 365 }), 'days');
70
+ }
71
+ selectLastFiveMinutes() {
72
+ this.refreshAnchor();
73
+ const anchorDateTime = this.manager.anchorValue.dateTime;
74
+ const startDateTime = anchorDateTime.subtract({ minutes: 5 });
75
+ this.manager.setInterval(IntervalState.createFromDateTimes(startDateTime, anchorDateTime));
76
+ this.setSmartShiftState(Temporal.Duration.from({ minutes: 5 }), 'time');
77
+ }
78
+ selectLastHour() {
79
+ this.refreshAnchor();
80
+ const anchorDateTime = this.manager.anchorValue.dateTime;
81
+ const startDateTime = anchorDateTime.subtract({ hours: 1 });
82
+ this.manager.setInterval(IntervalState.createFromDateTimes(startDateTime, anchorDateTime));
83
+ this.setSmartShiftState(Temporal.Duration.from({ hours: 1 }), 'time');
84
+ }
85
+ selectLast24Hours() {
86
+ this.refreshAnchor();
87
+ const anchorDateTime = this.manager.anchorValue.dateTime;
88
+ const startDateTime = anchorDateTime.subtract({ hours: 24 });
89
+ this.manager.setInterval(IntervalState.createFromDateTimes(startDateTime, anchorDateTime));
90
+ this.setSmartShiftState(Temporal.Duration.from({ hours: 24 }), 'time');
91
+ }
92
+ selectCurrentWeek() {
93
+ this.refreshAnchor();
94
+ const range = TemporalUtil.getCurrentWeek(this.manager.anchorValue.date);
95
+ this.manager.setInterval(new IntervalState(range.start, range.end));
96
+ this.setSmartShiftState(Temporal.Duration.from({ days: 7 }), 'weeks');
97
+ }
98
+ selectCurrentMonth() {
99
+ this.refreshAnchor();
100
+ const range = TemporalUtil.getCurrentMonth(this.manager.anchorValue.date);
101
+ this.manager.setInterval(new IntervalState(range.start, range.end));
102
+ this.setSmartShiftState(Temporal.Duration.from({ months: 1 }), 'months');
103
+ }
104
+ selectCurrentQuarter() {
105
+ this.refreshAnchor();
106
+ const range = TemporalUtil.getCurrentQuarter(this.manager.anchorValue.date);
107
+ this.manager.setInterval(new IntervalState(range.start, range.end));
108
+ this.setSmartShiftState(Temporal.Duration.from({ months: 3 }), 'quarters');
109
+ }
110
+ selectCurrentYear() {
111
+ this.refreshAnchor();
112
+ const range = TemporalUtil.getCurrentYear(this.manager.anchorValue.date);
113
+ this.manager.setInterval(new IntervalState(range.start, range.end));
114
+ this.setSmartShiftState(Temporal.Duration.from({ years: 1 }), 'years');
115
+ }
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtc2VsZWN0LWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2NvbnRyb2xsZXIvaW50ZXJ2YWwtc2VsZWN0LWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUVwRSxPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLGVBQW1DLE1BQU0sNEJBQTRCLENBQUE7QUFFNUUsTUFBTSxDQUFDLE9BQU8sT0FBTyx3QkFBd0I7SUFDM0MsWUFBb0IsT0FBbUM7UUFBbkMsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7SUFBRyxDQUFDO0lBRW5ELGFBQWE7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUEyQixFQUFFLElBQW9CO1FBQzFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5RCxNQUFNLFNBQVMsR0FBRyxPQUFP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TyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3hFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBvcmFsIH0gZnJvbSAnQGpzLXRlbXBvcmFsL3BvbHlmaWxsJ1xuaW1wb3J0IHsgVGVtcG9yYWxVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvdGVtcG9yYWwtdXRpbCdcbmltcG9ydCBJbnRlcnZhbFBpY2tlclN0YXRlTWFuYWdlciBmcm9tICcuLi9tYW5hZ2VyL2ludGVydmFsLXBpY2tlci1zdGF0ZS1tYW5hZ2VyJ1xuaW1wb3J0IEludGVydmFsU3RhdGUgZnJvbSAnLi4vbW9kZWwvaW50ZXJ2YWwtc3RhdGUnXG5pbXBvcnQgU21hcnRTaGlmdFN0YXRlLCB7IFNtYXJ0U2hpZnRNb2RlIH0gZnJvbSAnLi4vbW9kZWwvc21hcnQtc2hpZnQtc3RhdGUnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsU2VsZWN0Q29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFuYWdlcjogSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIpIHt9XG5cbiAgcHJpdmF0ZSByZWZyZXNoQW5jaG9yKCk6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRBbmNob3IodGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLndpdGhSZWZlcmVuY2VEYXRlVGltZU5vdygpKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTbWFydFNoaWZ0U3RhdGUoZHVyYXRpb246IFRlbXBvcmFsLkR1cmF0aW9uLCBtb2RlOiBTbWFydFNoaWZ0TW9kZSk6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRTbWFydFNoaWZ0KG5ldyBTbWFydFNoaWZ0U3RhdGUoZHVyYXRpb24sIG1vZGUpKVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEN1cnJlbnREYXkoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLmRhdGUuYWRkKHsgZGF5czogMSB9KVxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGVuZERhdGUuc3VidHJhY3QoeyBkYXlzOiAxIH0pXG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpXG4gICAgdGhpcy5zZXRTbWFydFNoaWZ0U3RhdGUoVGVtcG9yYWwuRHVyYXRpb24uZnJvbSh7IGRheXM6IDEgfSksICdkYXlzJylcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RZZXN0ZXJkYXkoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLmRhdGVcbiAgICBjb25zdCBzdGFydERhdGUgPSBlbmREYXRlLnN1YnRyYWN0KHsgZGF5czogMSB9KVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXcgSW50ZXJ2YWxTdGF0ZShzdGFydERhdGUsIGVuZERhdGUpKVxuICAgIHRoaXMuc2V0U21hcnRTaGlmdFN0YXRlKFRlbXBvcmFsLkR1cmF0aW9uLmZyb20oeyBkYXlzOiAxIH0pLCAnZGF5cycpXG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TGFzdFNldmVuRGF5c0V4Y2x1ZGluZ1RvZGF5KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEFuY2hvcigpXG4gICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlXG4gICAgY29uc3Qgc3RhcnREYXRlID0gZW5kRGF0ZS5zdWJ0cmFjdCh7IGRheXM6IDcgfSlcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3IEludGVydmFsU3RhdGUoc3RhcnREYXRlLCBlbmREYXRlKSlcbiAgICB0aGlzLnNldFNtYXJ0U2hpZnRTdGF0ZShUZW1wb3JhbC5EdXJhdGlvbi5mcm9tKHsgZGF5czogNyB9KSwgJ2RheXMnKVxuICB9XG5cbiAgcHVibGljIHNlbGVjdExhc3RTZXZlbkRheXNJbmNsdWRpbmdUb2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hBbmNob3IoKVxuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLm1hbmFnZXIuYW5jaG9yVmFsdWUuZGF0ZS5hZGQoeyBkYXlzOiAxIH0pXG4gICAgY29uc3Qgc3RhcnREYXRlID0gZW5kRGF0ZS5zdWJ0cmFjdCh7IGRheXM6IDcgfSlcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3IEludGVydmFsU3RhdGUoc3RhcnREYXRlLCBlbmREYXRlKSlcbiAgICB0aGlzLnNldFNtYXJ0U2hpZnRTdGF0ZShUZW1wb3JhbC5EdXJhdGlvbi5mcm9tKHsgZGF5czogNyB9KSwgJ2RheXMnKVxuICB9XG5cbiAgcHVibGljIHNlbGVjdExhc3RUaGlydHlEYXlzRXhjbHVkaW5nVG9kYXkoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLmRhdGVcbiAgICBjb25zdCBzdGFydERhdGUgPSBlbmREYXRlLnN1YnRyYWN0KHsgZGF5czogMzAgfSlcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3IEludGVydmFsU3RhdGUoc3RhcnREYXRlLCBlbmREYXRlKSlcbiAgICB0aGlzLnNldFNtYXJ0U2hpZnRTdGF0ZShUZW1wb3JhbC5EdXJhdGlvbi5mcm9tKHsgZGF5czogMzAgfSksICdkYXlzJylcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RMYXN0VGhpcnR5RGF5c0luY2x1ZGluZ1RvZGF5KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEFuY2hvcigpXG4gICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlLmFkZCh7IGRheXM6IDEgfSlcbiAgICBjb25zdCBzdGFydERhdGUgPSBlbmREYXRlLnN1YnRyYWN0KHsgZGF5czogMzAgfSlcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3IEludGVydmFsU3RhdGUoc3RhcnREYXRlLCBlbmREYXRlKSlcbiAgICB0aGlzLnNldFNtYXJ0U2hpZnRTdGF0ZShUZW1wb3JhbC5EdXJhdGlvbi5mcm9tKHsgZGF5czogMzAgfSksICdkYXlzJylcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RMYXN0MzY1ZGF5c0V4Y2x1ZGluZ1RvZGF5KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEFuY2hvcigpXG4gICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlXG4gICAgY29uc3Qgc3RhcnREYXRlID0gZW5kRGF0ZS5zdWJ0cmFjdCh7IGRheXM6IDM2NSB9KVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXcgSW50ZXJ2YWxTdGF0ZShzdGFydERhdGUsIGVuZERhdGUpKVxuICAgIHRoaXMuc2V0U21hcnRTaGlmdFN0YXRlKFRlbXBvcmFsLkR1cmF0aW9uLmZyb20oeyBkYXlzOiAzNjUgfSksICdkYXlzJylcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RMYXN0MzY1ZGF5c0luY2x1ZGluZ1RvZGF5KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEFuY2hvcigpXG4gICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlLmFkZCh7IGRheXM6IDEgfSlcbiAgICBjb25zdCBzdGFydERhdGUgPSBlbmREYXRlLnN1YnRyYWN0KHsgZGF5czogMzY1IH0pXG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpXG4gICAgdGhpcy5zZXRTbWFydFNoaWZ0U3RhdGUoVGVtcG9yYWwuRHVyYXRpb24uZnJvbSh7IGRheXM6IDM2NSB9KSwgJ2RheXMnKVxuICB9XG5cbiAgcHVibGljIHNlbGVjdExhc3RGaXZlTWludXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hBbmNob3IoKVxuICAgIGNvbnN0IGFuY2hvckRhdGVUaW1lID0gdGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLmRhdGVUaW1lXG4gICAgY29uc3Qgc3RhcnREYXRlVGltZSA9IGFuY2hvckRhdGVUaW1lLnN1YnRyYWN0KHsgbWludXRlczogNSB9KVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChJbnRlcnZhbFN0YXRlLmNyZWF0ZUZyb21EYXRlVGltZXMoc3RhcnREYXRlVGltZSwgYW5jaG9yRGF0ZVRpbWUpKVxuICAgIHRoaXMuc2V0U21hcnRTaGlmdFN0YXRlKFRlbXBvcmFsLkR1cmF0aW9uLmZyb20oeyBtaW51dGVzOiA1IH0pLCAndGltZScpXG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TGFzdEhvdXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCBhbmNob3JEYXRlVGltZSA9IHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlVGltZVxuICAgIGNvbnN0IHN0YXJ0RGF0ZVRpbWUgPSBhbmNob3JEYXRlVGltZS5zdWJ0cmFjdCh7IGhvdXJzOiAxIH0pXG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKEludGVydmFsU3RhdGUuY3JlYXRlRnJvbURhdGVUaW1lcyhzdGFydERhdGVUaW1lLCBhbmNob3JEYXRlVGltZSkpXG4gICAgdGhpcy5zZXRTbWFydFNoaWZ0U3RhdGUoVGVtcG9yYWwuRHVyYXRpb24uZnJvbSh7IGhvdXJzOiAxIH0pLCAndGltZScpXG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TGFzdDI0SG91cnMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCBhbmNob3JEYXRlVGltZSA9IHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlVGltZVxuICAgIGNvbnN0IHN0YXJ0RGF0ZVRpbWUgPSBhbmNob3JEYXRlVGltZS5zdWJ0cmFjdCh7IGhvdXJzOiAyNCB9KVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChJbnRlcnZhbFN0YXRlLmNyZWF0ZUZyb21EYXRlVGltZXMoc3RhcnREYXRlVGltZSwgYW5jaG9yRGF0ZVRpbWUpKVxuICAgIHRoaXMuc2V0U21hcnRTaGlmdFN0YXRlKFRlbXBvcmFsLkR1cmF0aW9uLmZyb20oeyBob3VyczogMjQgfSksICd0aW1lJylcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDdXJyZW50V2VlaygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hBbmNob3IoKVxuICAgIGNvbnN0IHJhbmdlID0gVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRXZWVrKHRoaXMubWFuYWdlci5hbmNob3JWYWx1ZS5kYXRlKVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXcgSW50ZXJ2YWxTdGF0ZShyYW5nZS5zdGFydCwgcmFuZ2UuZW5kKSlcbiAgICB0aGlzLnNldFNtYXJ0U2hpZnRTdGF0ZShUZW1wb3JhbC5EdXJhdGlvbi5mcm9tKHsgZGF5czogNyB9KSwgJ3dlZWtzJylcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDdXJyZW50TW9udGgoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCByYW5nZSA9IFRlbXBvcmFsVXRpbC5nZXRDdXJyZW50TW9udGgodGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLmRhdGUpXG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpKVxuICAgIHRoaXMuc2V0U21hcnRTaGlmdFN0YXRlKFRlbXBvcmFsLkR1cmF0aW9uLmZyb20oeyBtb250aHM6IDEgfSksICdtb250aHMnKVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEN1cnJlbnRRdWFydGVyKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaEFuY2hvcigpXG4gICAgY29uc3QgcmFuZ2UgPSBUZW1wb3JhbFV0aWwuZ2V0Q3VycmVudFF1YXJ0ZXIodGhpcy5tYW5hZ2VyLmFuY2hvclZhbHVlLmRhdGUpXG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpKVxuICAgIHRoaXMuc2V0U21hcnRTaGlmdFN0YXRlKFRlbXBvcmFsLkR1cmF0aW9uLmZyb20oeyBtb250aHM6IDMgfSksICdxdWFydGVycycpXG4gIH1cblxuICBwdWJsaWMgc2VsZWN0Q3VycmVudFllYXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yKClcbiAgICBjb25zdCByYW5nZSA9IFRlbXBvcmFsVXRpbC5nZXRDdXJyZW50WWVhcih0aGlzLm1hbmFnZXIuYW5jaG9yVmFsdWUuZGF0ZSlcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3IEludGVydmFsU3RhdGUocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCkpXG4gICAgdGhpcy5zZXRTbWFydFNoaWZ0U3RhdGUoVGVtcG9yYWwuRHVyYXRpb24uZnJvbSh7IHllYXJzOiAxIH0pLCAneWVhcnMnKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { LoggerFactory } from '@elderbyte/ts-logger';
2
+ import IntervalState from '../model/interval-state';
3
+ export default class IntervalShiftController {
4
+ constructor(manager) {
5
+ this.manager = manager;
6
+ this.log = LoggerFactory.getLogger(this.constructor.name);
7
+ }
8
+ shiftDay(days) {
9
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ days }), this.manager.intervalValue.endDate.add({ days }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
10
+ }
11
+ shiftWeek(weeks) {
12
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ weeks }), this.manager.intervalValue.endDate.add({ weeks }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
13
+ }
14
+ shiftMonth(months) {
15
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ months }), this.manager.intervalValue.endDate.add({ months }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
16
+ }
17
+ shiftYear(years) {
18
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ years }), this.manager.intervalValue.endDate.add({ years }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
19
+ }
20
+ shiftMinute(minutes) {
21
+ const newInterval = new IntervalState(this.manager.intervalValue.startDate, this.manager.intervalValue.endDate, this.manager.intervalValue.startTime?.add({ minutes }), this.manager.intervalValue.endTime?.add({ minutes }));
22
+ this.manager.setInterval(newInterval);
23
+ }
24
+ shiftHour(hours) {
25
+ const newInterval = new IntervalState(this.manager.intervalValue.startDate, this.manager.intervalValue.endDate, this.manager.intervalValue.startTime?.add({ hours: hours }), this.manager.intervalValue.endTime?.add({ hours: hours }));
26
+ this.manager.setInterval(newInterval);
27
+ }
28
+ smartShift(direction = 1) {
29
+ const state = this.manager.smartShiftValue;
30
+ if (!state.duration) {
31
+ this.log.warn('Cannot smart shift without a duration!');
32
+ return;
33
+ }
34
+ const duration = state.duration;
35
+ const interval = this.manager.intervalValue;
36
+ let newStartDateTime = direction === 1
37
+ ? interval.startDateTime.add(duration)
38
+ : interval.startDateTime.subtract(duration);
39
+ let newEndDateTime = direction === 1 ? interval.endDateTime.add(duration) : interval.endDateTime.subtract(duration);
40
+ const newInterval = IntervalState.createFromDateTimes(newStartDateTime, newEndDateTime);
41
+ this.manager.setInterval(newInterval);
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtc2hpZnQtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvY29udHJvbGxlci9pbnRlcnZhbC1zaGlmdC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVwRCxPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUcxQyxZQUFvQixPQUFtQztRQUFuQyxZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUZ0QyxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRVgsQ0FBQztJQUVwRCxRQUFRLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdEIsSUFBSSxhQUFhLENBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDbkMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN0QixJQUFJLGFBQWEsQ0FDZixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUNuQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQ3RCLElBQUksYUFBYSxDQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQ25DLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdEIsSUFBSSxhQUFhLENBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDbkMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFlO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksYUFBYSxDQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUNyRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksYUFBYSxDQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQzFELENBQUE7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRU0sVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFBO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtZQUN2RCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUE7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFFM0MsSUFBSSxnQkFBZ0IsR0FDbEIsU0FBUyxLQUFLLENBQUM7WUFDYixDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxJQUFJLGNBQWMsR0FDaEIsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRWhHLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUV2RixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIgZnJvbSAnLi4vbWFuYWdlci9pbnRlcnZhbC1waWNrZXItc3RhdGUtbWFuYWdlcidcbmltcG9ydCBJbnRlcnZhbFN0YXRlIGZyb20gJy4uL21vZGVsL2ludGVydmFsLXN0YXRlJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlcnZhbFNoaWZ0Q29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFuYWdlcjogSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIpIHt9XG5cbiAgcHVibGljIHNoaWZ0RGF5KGRheXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChcbiAgICAgIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUuYWRkKHsgZGF5cyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZS5hZGQoeyBkYXlzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydFRpbWUsXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLmVuZFRpbWVcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2hpZnRXZWVrKHdlZWtzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwoXG4gICAgICBuZXcgSW50ZXJ2YWxTdGF0ZShcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnREYXRlLmFkZCh7IHdlZWtzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLmFkZCh7IHdlZWtzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydFRpbWUsXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLmVuZFRpbWVcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2hpZnRNb250aChtb250aHM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChcbiAgICAgIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUuYWRkKHsgbW9udGhzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLmFkZCh7IG1vbnRocyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmRUaW1lXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNoaWZ0WWVhcih5ZWFyczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKFxuICAgICAgbmV3IEludGVydmFsU3RhdGUoXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLnN0YXJ0RGF0ZS5hZGQoeyB5ZWFycyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZS5hZGQoeyB5ZWFycyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmRUaW1lXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNoaWZ0TWludXRlKG1pbnV0ZXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0ludGVydmFsID0gbmV3IEludGVydmFsU3RhdGUoXG4gICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUsXG4gICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lPy5hZGQoeyBtaW51dGVzIH0pLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kVGltZT8uYWRkKHsgbWludXRlcyB9KVxuICAgIClcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3SW50ZXJ2YWwpXG4gIH1cblxuICBwdWJsaWMgc2hpZnRIb3VyKGhvdXJzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJbnRlcnZhbCA9IG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnREYXRlLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZSxcbiAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLnN0YXJ0VGltZT8uYWRkKHsgaG91cnM6IGhvdXJzIH0pLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kVGltZT8uYWRkKHsgaG91cnM6IGhvdXJzIH0pXG4gICAgKVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXdJbnRlcnZhbClcbiAgfVxuXG4gIHB1YmxpYyBzbWFydFNoaWZ0KGRpcmVjdGlvbiA9IDEpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMubWFuYWdlci5zbWFydFNoaWZ0VmFsdWVcbiAgICBpZiAoIXN0YXRlLmR1cmF0aW9uKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW5ub3Qgc21hcnQgc2hpZnQgd2l0aG91dCBhIGR1cmF0aW9uIScpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IHN0YXRlLmR1cmF0aW9uXG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlXG5cbiAgICBsZXQgbmV3U3RhcnREYXRlVGltZSA9XG4gICAgICBkaXJlY3Rpb24gPT09IDFcbiAgICAgICAgPyBpbnRlcnZhbC5zdGFydERhdGVUaW1lLmFkZChkdXJhdGlvbilcbiAgICAgICAgOiBpbnRlcnZhbC5zdGFydERhdGVUaW1lLnN1YnRyYWN0KGR1cmF0aW9uKVxuICAgIGxldCBuZXdFbmREYXRlVGltZSA9XG4gICAgICBkaXJlY3Rpb24gPT09IDEgPyBpbnRlcnZhbC5lbmREYXRlVGltZS5hZGQoZHVyYXRpb24pIDogaW50ZXJ2YWwuZW5kRGF0ZVRpbWUuc3VidHJhY3QoZHVyYXRpb24pXG5cbiAgICBjb25zdCBuZXdJbnRlcnZhbCA9IEludGVydmFsU3RhdGUuY3JlYXRlRnJvbURhdGVUaW1lcyhuZXdTdGFydERhdGVUaW1lLCBuZXdFbmREYXRlVGltZSlcblxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXdJbnRlcnZhbClcbiAgfVxufVxuIl19