@apipass/inputs 1.0.90 → 1.0.92

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 (57) hide show
  1. package/assets/css/inputs.scss +99 -3
  2. package/esm2022/input-date-time-interval/builder/default-intervals.builder.mjs +92 -0
  3. package/esm2022/input-date-time-interval/builder/time-interval-value.builder.mjs +123 -0
  4. package/esm2022/input-date-time-interval/builder/time-intervals.builder.mjs +19 -0
  5. package/esm2022/input-date-time-interval/default-interval/current-month-interval.mjs +12 -0
  6. package/esm2022/input-date-time-interval/default-interval/last-five-minutes-interval.mjs +12 -0
  7. package/esm2022/input-date-time-interval/default-interval/last-hour-interval.mjs +12 -0
  8. package/esm2022/input-date-time-interval/default-interval/last-minute-interval.mjs +12 -0
  9. package/esm2022/input-date-time-interval/default-interval/last-month-interval.mjs +15 -0
  10. package/esm2022/input-date-time-interval/default-interval/last-one-week-interval.mjs +15 -0
  11. package/esm2022/input-date-time-interval/default-interval/last-quarter-interval.mjs +15 -0
  12. package/esm2022/input-date-time-interval/default-interval/last-ten-minutes-interval.mjs +12 -0
  13. package/esm2022/input-date-time-interval/default-interval/last-thirty-minutes-interval.mjs +12 -0
  14. package/esm2022/input-date-time-interval/default-interval/last-three-hours-interval.mjs +12 -0
  15. package/esm2022/input-date-time-interval/default-interval/last-two-hours-interval.mjs +12 -0
  16. package/esm2022/input-date-time-interval/default-interval/last-year-interval.mjs +15 -0
  17. package/esm2022/input-date-time-interval/default-interval/this-quarter-interval.mjs +15 -0
  18. package/esm2022/input-date-time-interval/default-interval/this-week-interval.mjs +15 -0
  19. package/esm2022/input-date-time-interval/default-interval/this-year-interval.mjs +15 -0
  20. package/esm2022/input-date-time-interval/default-interval/time-interval.mjs +2 -0
  21. package/esm2022/input-date-time-interval/default-interval/today-interval.mjs +12 -0
  22. package/esm2022/input-date-time-interval/default-interval/yesterday-interval.mjs +15 -0
  23. package/esm2022/input-date-time-interval/input-date-time-interval.component.mjs +317 -0
  24. package/esm2022/input-date-time-interval/model/date-time-internal.model.mjs +56 -0
  25. package/esm2022/input-date-time-interval/public-api.mjs +28 -0
  26. package/esm2022/inputs.module.mjs +50 -10
  27. package/esm2022/public-api.mjs +13 -12
  28. package/esm2022/select-interpolation/select-interpolation.component.mjs +3 -3
  29. package/fesm2022/apipass-inputs.mjs +825 -15
  30. package/fesm2022/apipass-inputs.mjs.map +1 -1
  31. package/input-date-time-interval/builder/default-intervals.builder.d.ts +21 -0
  32. package/input-date-time-interval/builder/time-interval-value.builder.d.ts +31 -0
  33. package/input-date-time-interval/builder/time-intervals.builder.d.ts +9 -0
  34. package/input-date-time-interval/default-interval/current-month-interval.d.ts +7 -0
  35. package/input-date-time-interval/default-interval/last-five-minutes-interval.d.ts +7 -0
  36. package/input-date-time-interval/default-interval/last-hour-interval.d.ts +7 -0
  37. package/input-date-time-interval/default-interval/last-minute-interval.d.ts +7 -0
  38. package/input-date-time-interval/default-interval/last-month-interval.d.ts +8 -0
  39. package/input-date-time-interval/default-interval/last-one-week-interval.d.ts +8 -0
  40. package/input-date-time-interval/default-interval/last-quarter-interval.d.ts +8 -0
  41. package/input-date-time-interval/default-interval/last-ten-minutes-interval.d.ts +7 -0
  42. package/input-date-time-interval/default-interval/last-thirty-minutes-interval.d.ts +7 -0
  43. package/input-date-time-interval/default-interval/last-three-hours-interval.d.ts +7 -0
  44. package/input-date-time-interval/default-interval/last-two-hours-interval.d.ts +7 -0
  45. package/input-date-time-interval/default-interval/last-year-interval.d.ts +8 -0
  46. package/input-date-time-interval/default-interval/this-quarter-interval.d.ts +8 -0
  47. package/input-date-time-interval/default-interval/this-week-interval.d.ts +8 -0
  48. package/input-date-time-interval/default-interval/this-year-interval.d.ts +8 -0
  49. package/input-date-time-interval/default-interval/time-interval.d.ts +6 -0
  50. package/input-date-time-interval/default-interval/today-interval.d.ts +7 -0
  51. package/input-date-time-interval/default-interval/yesterday-interval.d.ts +8 -0
  52. package/input-date-time-interval/input-date-time-interval.component.d.ts +68 -0
  53. package/input-date-time-interval/model/date-time-internal.model.d.ts +19 -0
  54. package/input-date-time-interval/public-api.d.ts +23 -0
  55. package/inputs.module.d.ts +21 -15
  56. package/package.json +6 -3
  57. package/public-api.d.ts +12 -11
@@ -0,0 +1,15 @@
1
+ import moment from 'moment';
2
+ export class ThisWeekInterval {
3
+ id = 'ThisWeekInterval';
4
+ label;
5
+ constructor(label) {
6
+ this.label = label;
7
+ }
8
+ getStartDate() {
9
+ return moment().startOf('week').toDate();
10
+ }
11
+ getEndDate() {
12
+ return moment().toDate();
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhpcy13ZWVrLWludGVydmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9pbnB1dC1kYXRlLXRpbWUtaW50ZXJ2YWwvZGVmYXVsdC1pbnRlcnZhbC90aGlzLXdlZWstaW50ZXJ2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsRUFBRSxHQUFXLGtCQUFrQixDQUFBO0lBQy9CLEtBQUssQ0FBUTtJQUViLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaW1lSW50ZXJ2YWwgfSBmcm9tICcuL3RpbWUtaW50ZXJ2YWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5leHBvcnQgY2xhc3MgVGhpc1dlZWtJbnRlcnZhbCBpbXBsZW1lbnRzIFRpbWVJbnRlcnZhbCB7XG5cbiAgaWQ6IHN0cmluZyA9ICdUaGlzV2Vla0ludGVydmFsJ1xuICBsYWJlbDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbFxuICB9XG5cbiAgZ2V0U3RhcnREYXRlKCk6IERhdGUge1xuICAgIHJldHVybiBtb21lbnQoKS5zdGFydE9mKCd3ZWVrJykudG9EYXRlKCk7XG4gIH1cblxuICBnZXRFbmREYXRlKCk6IERhdGUge1xuICAgIHJldHVybiBtb21lbnQoKS50b0RhdGUoKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import moment from 'moment';
2
+ export class ThisYearInterval {
3
+ id = 'ThisYearInterval';
4
+ label;
5
+ constructor(label) {
6
+ this.label = label;
7
+ }
8
+ getStartDate() {
9
+ return moment().startOf('year').toDate();
10
+ }
11
+ getEndDate() {
12
+ return moment().toDate();
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhpcy15ZWFyLWludGVydmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9pbnB1dC1kYXRlLXRpbWUtaW50ZXJ2YWwvZGVmYXVsdC1pbnRlcnZhbC90aGlzLXllYXItaW50ZXJ2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsRUFBRSxHQUFXLGtCQUFrQixDQUFBO0lBQy9CLEtBQUssQ0FBUTtJQUViLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaW1lSW50ZXJ2YWwgfSBmcm9tICcuL3RpbWUtaW50ZXJ2YWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5leHBvcnQgY2xhc3MgVGhpc1llYXJJbnRlcnZhbCBpbXBsZW1lbnRzIFRpbWVJbnRlcnZhbCB7XG5cbiAgaWQ6IHN0cmluZyA9ICdUaGlzWWVhckludGVydmFsJ1xuICBsYWJlbDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbFxuICB9XG5cbiAgZ2V0U3RhcnREYXRlKCk6IERhdGUge1xuICAgIHJldHVybiBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJykudG9EYXRlKCk7XG4gIH1cblxuICBnZXRFbmREYXRlKCk6IERhdGUge1xuICAgIHJldHVybiBtb21lbnQoKS50b0RhdGUoKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnRlcnZhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvaW5wdXQtZGF0ZS10aW1lLWludGVydmFsL2RlZmF1bHQtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUaW1lSW50ZXJ2YWwge1xuICBpZDogc3RyaW5nXG4gIGxhYmVsOiBzdHJpbmdcblxuICBnZXRTdGFydERhdGU/KCk6IERhdGVcbiAgZ2V0RW5kRGF0ZT8oKTogRGF0ZVxufVxuIl19
@@ -0,0 +1,12 @@
1
+ import moment from 'moment';
2
+ export class TodayInterval {
3
+ id = 'TodayInterval';
4
+ label;
5
+ constructor(label) {
6
+ this.label = label;
7
+ }
8
+ getStartDate() {
9
+ return moment().startOf('day').toDate();
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9kYXktaW50ZXJ2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2lucHV0LWRhdGUtdGltZS1pbnRlcnZhbC9kZWZhdWx0LWludGVydmFsL3RvZGF5LWludGVydmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sYUFBYTtJQUV4QixFQUFFLEdBQVcsZUFBZSxDQUFBO0lBQzVCLEtBQUssQ0FBUTtJQUViLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpbWVJbnRlcnZhbCB9IGZyb20gJy4vdGltZS1pbnRlcnZhbCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCBjbGFzcyBUb2RheUludGVydmFsIGltcGxlbWVudHMgVGltZUludGVydmFsIHtcblxuICBpZDogc3RyaW5nID0gJ1RvZGF5SW50ZXJ2YWwnXG4gIGxhYmVsOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsXG4gIH1cblxuICBnZXRTdGFydERhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import moment from 'moment';
2
+ export class YesterdayInterval {
3
+ id = 'YesterdayInterval';
4
+ label;
5
+ constructor(label) {
6
+ this.label = label;
7
+ }
8
+ getStartDate() {
9
+ return moment().subtract(1, 'day').startOf('day').toDate();
10
+ }
11
+ getEndDate() {
12
+ return moment().subtract(1, 'day').endOf('day').toDate();
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVzdGVyZGF5LWludGVydmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9pbnB1dC1kYXRlLXRpbWUtaW50ZXJ2YWwvZGVmYXVsdC1pbnRlcnZhbC95ZXN0ZXJkYXktaW50ZXJ2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsRUFBRSxHQUFXLG1CQUFtQixDQUFBO0lBQ2hDLEtBQUssQ0FBUTtJQUViLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNELENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpbWVJbnRlcnZhbCB9IGZyb20gJy4vdGltZS1pbnRlcnZhbCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCBjbGFzcyBZZXN0ZXJkYXlJbnRlcnZhbCBpbXBsZW1lbnRzIFRpbWVJbnRlcnZhbCB7XG5cbiAgaWQ6IHN0cmluZyA9ICdZZXN0ZXJkYXlJbnRlcnZhbCdcbiAgbGFiZWw6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWxcbiAgfVxuXG4gIGdldFN0YXJ0RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheScpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuICB9XG5cbiAgZ2V0RW5kRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheScpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,317 @@
1
+ import { Component, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { TimeIntervalValue } from './model/date-time-internal.model';
4
+ import { DateRange } from '@angular/material/datepicker';
5
+ import { ScrollStrategyOptions } from '@angular/cdk/overlay';
6
+ import moment from 'moment-timezone';
7
+ import { NgScrollbar } from 'ngx-scrollbar';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "@angular/material/form-field";
13
+ import * as i5 from "@angular/material/input";
14
+ import * as i6 from "@angular/material/icon";
15
+ import * as i7 from "@angular/material/datepicker";
16
+ import * as i8 from "ngx-scrollbar";
17
+ import * as i9 from "ngx-mask";
18
+ class InputDateTimeIntervalComponent {
19
+ sso;
20
+ _value;
21
+ _selectedDateRange;
22
+ scrollStrategy;
23
+ timezone = 'America/Sao_Paulo';
24
+ dateMask = '00/00/0000';
25
+ timeMask = '00:00:00';
26
+ dateFormat = 'DD/MM/YYYY HH:mm:ss';
27
+ label;
28
+ periodLabel = 'Selected Relative Interval';
29
+ relativeLabel = 'Relative Time';
30
+ absoluteLabel = 'Absolute Time';
31
+ startDateLabel = 'Start Date';
32
+ startDate;
33
+ startTimeLabel = 'Start Time';
34
+ startTime;
35
+ endTimeLabel = 'End Time';
36
+ endTime;
37
+ endDateLabel = 'End Date';
38
+ endDate;
39
+ calendarMaxDate;
40
+ calendarMinDate;
41
+ cancelLabel = 'Cancel';
42
+ applyLabel = 'Apply';
43
+ hideTime = false;
44
+ get value() {
45
+ if (!this._value) {
46
+ this._value = new TimeIntervalValue(this.timezone);
47
+ }
48
+ return this._value;
49
+ }
50
+ set value(value) {
51
+ this._value = value;
52
+ this.refreshValues();
53
+ }
54
+ refreshValues() {
55
+ if (this._value.interval) {
56
+ this.selectedInterval = this._value.interval;
57
+ this.resetDates();
58
+ }
59
+ else if (this._value?.absoluteStartDate || this._value?.absoluteEndDate) {
60
+ const startDate = this._value?.absoluteStartDate || this.startDate;
61
+ this.selectedStartDate = this.dateToString(startDate);
62
+ const endDate = this._value?.absoluteEndDate || this.endDate;
63
+ this.selectedEndDate = this.dateToString(endDate);
64
+ this._selectedDateRange = this.getDateRange(this.stringToDate(this.selectedStartDate), this.stringToDate(this.selectedEndDate));
65
+ if (this._value?.absoluteStartDate) {
66
+ this.selectedStartTime = this._value.absoluteStartDate.toTimeString().split(' ')[0];
67
+ }
68
+ if (this.value?.absoluteEndDate) {
69
+ this.selectedEndTime = this.value?.absoluteEndDate.toTimeString().split(' ')[0];
70
+ }
71
+ this.selectedStartTime = this.selectedStartTime || this.startTime;
72
+ this.selectedEndTime = this.selectedEndTime || this.endTime;
73
+ this.selectedInterval = undefined;
74
+ }
75
+ }
76
+ intervals;
77
+ valueChange = new EventEmitter();
78
+ selectedInterval;
79
+ selectedStartTime;
80
+ selectedEndTime;
81
+ selectedStartDate;
82
+ selectedEndDate;
83
+ dropdownOpen;
84
+ scrollbarRef;
85
+ onKeydownHandler() {
86
+ this.dropdownOpen = false;
87
+ }
88
+ constructor(sso) {
89
+ this.sso = sso;
90
+ this.scrollStrategy = this.sso.block();
91
+ this.resetDates();
92
+ }
93
+ openDropDown(event) {
94
+ this.dropdownOpen = true;
95
+ setTimeout(() => {
96
+ if (this._value.interval) {
97
+ const selectedInterval = this._value.interval;
98
+ this.scrollbarRef.scrollToElement(`#apipass-datetime-interval-${selectedInterval.id}`, { duration: 800 }).then();
99
+ }
100
+ });
101
+ event.stopPropagation();
102
+ }
103
+ closeDropdown(event) {
104
+ this.cancel();
105
+ this.dropdownOpen = false;
106
+ event.stopPropagation();
107
+ }
108
+ isSelected(interval) {
109
+ return interval?.id === this.selectedInterval?.id;
110
+ }
111
+ selectInterval(interval) {
112
+ this.selectedInterval = interval;
113
+ this.resetDates();
114
+ }
115
+ resetDates() {
116
+ this._selectedDateRange = this.getDateRange(this.startDate, this.endDate);
117
+ this.selectedStartTime = this.startTime;
118
+ this.selectedEndTime = this.endTime;
119
+ this.selectedStartDate = this.dateToString(this.startDate);
120
+ this.selectedEndDate = this.dateToString(this.endDate);
121
+ }
122
+ onDateRangeChange(date) {
123
+ if (this._selectedDateRange?.start && date > this._selectedDateRange.start && !this._selectedDateRange.end) {
124
+ this._selectedDateRange = this.getDateRange(this._selectedDateRange.start, date);
125
+ this.selectedEndDate = this.dateToString(date);
126
+ this.selectedInterval = undefined;
127
+ }
128
+ else {
129
+ this._selectedDateRange = this.getDateRange(date, undefined);
130
+ this.selectedStartDate = this.dateToString(date);
131
+ this.selectedInterval = undefined;
132
+ }
133
+ }
134
+ dateToString(date) {
135
+ return date ? moment(date).format(this.dateFormat) : undefined;
136
+ }
137
+ stringToDate(date) {
138
+ return date ? moment(date, this.dateFormat).toDate() : undefined;
139
+ }
140
+ getDateRange(startDate, endDate) {
141
+ try {
142
+ return new DateRange(startDate ? moment(startDate).toDate() : undefined, endDate ? moment(endDate).toDate() : undefined);
143
+ }
144
+ catch (e) {
145
+ return new DateRange(null, null);
146
+ }
147
+ }
148
+ startDateChanged() {
149
+ this._selectedDateRange = this.getDateRange(this.stringToDate(this.selectedStartDate), this.stringToDate(this.selectedEndDate));
150
+ this.selectedInterval = undefined;
151
+ }
152
+ endDateChanged() {
153
+ const startDate = this.stringToDate(this.selectedStartDate);
154
+ const endDate = this.stringToDate(this.selectedEndDate);
155
+ if (endDate < startDate) {
156
+ this.selectedEndDate = undefined;
157
+ }
158
+ this._selectedDateRange = this.getDateRange(startDate, endDate);
159
+ this.selectedInterval = undefined;
160
+ }
161
+ cancel() {
162
+ this.refreshValues();
163
+ this.dropdownOpen = false;
164
+ }
165
+ apply() {
166
+ if (this.selectedInterval) {
167
+ this._value.interval = this.selectedInterval;
168
+ this._value.absoluteStartDate = undefined;
169
+ this._value.absoluteEndDate = undefined;
170
+ }
171
+ else {
172
+ if (this.selectedStartDate) {
173
+ const startDate = this.stringToDate(this.selectedStartDate);
174
+ this.applyTimeOnDate(startDate, this.selectedStartTime);
175
+ this.selectedStartTime = this.selectedStartTime ?? '00:00:00';
176
+ this._value.absoluteStartDate = moment(startDate).toDate();
177
+ }
178
+ else {
179
+ this._value.absoluteStartDate = undefined;
180
+ }
181
+ if (this.selectedEndDate) {
182
+ const endDate = this.stringToDate(this.selectedEndDate);
183
+ this.applyTimeOnDate(endDate, this.selectedEndTime);
184
+ this.selectedEndTime = this.selectedEndTime ?? '00:00:00';
185
+ this._value.absoluteEndDate = moment(endDate).toDate();
186
+ }
187
+ else {
188
+ this._value.absoluteEndDate = undefined;
189
+ }
190
+ this._value.interval = undefined;
191
+ }
192
+ this.valueChange.emit(this._value);
193
+ this.dropdownOpen = false;
194
+ }
195
+ applyTimeOnDate(date, time) {
196
+ if (time) {
197
+ date.setHours(this.getHoursFromTime(time));
198
+ date.setMinutes(this.getMinutesFromTime(time));
199
+ date.setSeconds(this.getSecondsFromTime(time));
200
+ }
201
+ }
202
+ getHoursFromTime(time) {
203
+ try {
204
+ return parseFloat(time.split(':')[0]) || 0;
205
+ }
206
+ catch (e) {
207
+ return 0;
208
+ }
209
+ }
210
+ getMinutesFromTime(time) {
211
+ try {
212
+ return parseFloat(time.split(':')[1]) || 0;
213
+ }
214
+ catch (e) {
215
+ return 0;
216
+ }
217
+ }
218
+ getSecondsFromTime(time) {
219
+ try {
220
+ return parseFloat(time.split(':')[2]) || 0;
221
+ }
222
+ catch (e) {
223
+ return 0;
224
+ }
225
+ }
226
+ getInputText() {
227
+ if (this._value?.interval) {
228
+ return this.periodLabel;
229
+ }
230
+ const emptyDate = this.hideTime ? '__________' : '__________ ________';
231
+ let formatedText = '';
232
+ if (this._value.absoluteStartDate) {
233
+ formatedText += this.dateToString(this._value.absoluteStartDate);
234
+ }
235
+ else {
236
+ formatedText += emptyDate;
237
+ }
238
+ formatedText += ' - ';
239
+ if (this._value.absoluteEndDate) {
240
+ formatedText += this.dateToString(this._value.absoluteEndDate);
241
+ }
242
+ else {
243
+ formatedText += emptyDate;
244
+ }
245
+ return formatedText;
246
+ }
247
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: InputDateTimeIntervalComponent, deps: [{ token: i1.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component });
248
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: InputDateTimeIntervalComponent, selector: "input-date-time-interval", inputs: { timezone: "timezone", dateMask: "dateMask", timeMask: "timeMask", dateFormat: "dateFormat", label: "label", periodLabel: "periodLabel", relativeLabel: "relativeLabel", absoluteLabel: "absoluteLabel", startDateLabel: "startDateLabel", startDate: "startDate", startTimeLabel: "startTimeLabel", startTime: "startTime", endTimeLabel: "endTimeLabel", endTime: "endTime", endDateLabel: "endDateLabel", endDate: "endDate", calendarMaxDate: "calendarMaxDate", calendarMinDate: "calendarMinDate", cancelLabel: "cancelLabel", applyLabel: "applyLabel", hideTime: "hideTime", value: "value", intervals: "intervals" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, providers: [{
249
+ provide: NG_VALUE_ACCESSOR,
250
+ useExisting: forwardRef(() => InputDateTimeIntervalComponent),
251
+ multi: true
252
+ }], viewQueries: [{ propertyName: "scrollbarRef", first: true, predicate: ["intervalsBar"], descendants: true }], ngImport: i0, template: "<div class=\"input-date-time-interval\">\n <mat-form-field cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"clickable\"\n (click)=\"dropdownOpen ? closeDropdown($event) : openDropDown($event)\">\n <mat-label class=\"mdc-floating-label--float-above\" [innerHTML]=\"label\"></mat-label>\n <span class=\"interval-input\">\n <div matPrefix class=\"period-badget text-primary\" *ngIf=\"value?.interval\">\n <mat-icon>date_range</mat-icon>\n <span class=\"period-text\" [innerHTML]=\"value?.interval?.label\"></span>\n </div>\n <input style=\"display: flex\" class=\"clickable\" matInput [value]=\"getInputText()\" [readonly]=\"true\">\n </span>\n <mat-icon class=\"clickable text-tertiary\" matIconSuffix>{{dropdownOpen ? 'expand_less' : 'expand_more'}}</mat-icon>\n </mat-form-field>\n</div>\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayPanelClass]=\"'input-date-time-interval-overlay-panel'\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n (backdropClick)=\"closeDropdown($event)\"\n (overlayOutsideClick)=\"closeDropdown($event)\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"dropdownOpen\">\n <div class=\"input-date-time-interval-dropdown mdc-menu-surface\">\n <div class=\"input-options-container\">\n <div class=\"intervals-container\" *ngIf=\"this.intervals\">\n <div class=\"container-text\" *ngIf=\"relativeLabel\">\n <span class=\"relative-text\" [innerHTML]=\"relativeLabel\"></span>\n </div>\n <ng-scrollbar #intervalsBar class=\"date-time-interval-scrollbar\" [visibility]=\"'always'\">\n <div class=\"interval\"\n [id]=\"'apipass-datetime-interval-' + interval.id\"\n (click)=\"selectInterval(interval)\"\n [ngClass]=\"{'interval-selected': isSelected(interval)}\"\n *ngFor=\"let interval of this.intervals\">\n <div class=\"interval-label\">\n <span [innerHTML]=\"interval.label\"></span>\n </div>\n <div class=\"interval-icon\" *ngIf=\"isSelected(interval)\">\n <mat-icon class=\"mat-icon-slim text-secondary\">check</mat-icon>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n\n <div class=\"calendar-container\" [ngClass]=\"{'only-calendar': !this.intervals}\">\n <div class=\"container-text\" *ngIf=\"absoluteLabel\">\n <span class=\"absolute-text\" [innerHTML]=\"absoluteLabel\"></span>\n </div>\n <div class=\"picker\">\n <div class=\"picker-fields\" [ngClass]=\"{'picker-only-date': hideTime}\">\n <div class=\"picker-group\">\n <mat-form-field class=\"apipass-input-text-slim\">\n <mat-label [innerHTML]=\"startDateLabel\"></mat-label>\n <input matInput [(ngModel)]=\"selectedStartDate\"\n [mask]=\"dateMask\" [dropSpecialCharacters]=\"false\" (blur)=\"startDateChanged()\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>date_range</mat-icon>\n </mat-form-field>\n\n <mat-form-field class=\"apipass-input-text-slim\" *ngIf=\"!hideTime\">\n <mat-label [innerHTML]=\"startTimeLabel\"></mat-label>\n <input matInput [mask]=\"timeMask\" [dropSpecialCharacters]=\"false\" [(ngModel)]=\"selectedStartTime\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>schedule</mat-icon>\n </mat-form-field>\n </div>\n <div class=\"picker-group\">\n <mat-form-field class=\"apipass-input-text-slim\">\n <mat-label [innerHTML]=\"endDateLabel\"></mat-label>\n <input matInput [(ngModel)]=\"selectedEndDate\"\n [mask]=\"dateMask\" [dropSpecialCharacters]=\"false\" (blur)=\"endDateChanged()\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>date_range</mat-icon>\n </mat-form-field>\n\n <mat-form-field class=\"apipass-input-text-slim\" *ngIf=\"!hideTime\">\n <mat-label [innerHTML]=\"endTimeLabel\"></mat-label>\n <input matInput [mask]=\"timeMask\" [dropSpecialCharacters]=\"false\" [(ngModel)]=\"selectedEndTime\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>schedule</mat-icon>\n </mat-form-field>\n </div>\n </div>\n <mat-calendar\n [selected]=\"_selectedDateRange\"\n [maxDate]=\"calendarMaxDate\"\n [minDate]=\"calendarMinDate\"\n (selectedChange)=\"onDateRangeChange($event)\"></mat-calendar>\n </div>\n </div>\n </div>\n <div class=\"input-date-time-actions\">\n <button class=\"action-button dropdown-cancel-button\" *ngIf=\"cancelLabel\" (click)=\"cancel()\">\n <span class=\"dropdown-cancel-button-text\" [innerHTML]=\"cancelLabel\"></span>\n </button>\n <button class=\"action-button dropdown-apply-button\" *ngIf=\"applyLabel\" (click)=\"apply()\">\n <span class=\"dropdown-cancel-button-text\" [innerHTML]=\"applyLabel\"></span>\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".input-date-time-interval mat-form-field{width:100%}.input-date-time-interval mat-form-field .interval-input{display:flex;flex-wrap:nowrap}.input-date-time-interval mat-form-field .interval-input .period-badget{display:flex;justify-content:space-around;align-items:center;gap:5px;padding:1px 10px;margin-left:15px;margin-right:5px;background:#EEE;border-radius:4px;border:1px solid #CCC}.input-date-time-interval mat-form-field .interval-input .period-badget .period-text{white-space:nowrap}.input-date-time-interval mat-form-field .date-value-input{display:flex;justify-content:flex-start;align-items:center;gap:5px}.input-date-time-interval-overlay-panel{margin-bottom:5px}.input-date-time-interval-dropdown{box-sizing:border-box;background:#FFF;border:1px solid #CCC;border-radius:5px;width:450px}@media (max-width: 500px){.input-date-time-interval-dropdown{width:90vw}}.input-date-time-interval-dropdown .input-options-container{display:flex;justify-content:space-between;align-items:flex-start}.input-date-time-interval-dropdown .input-options-container .container-text{font-weight:600;margin-bottom:5px}@media (max-width: 500px){.input-date-time-interval-dropdown .input-options-container{flex-direction:column}}.input-date-time-interval-dropdown .input-options-container .intervals-container{padding:10px;width:35%;overflow-x:hidden;overflow-y:auto;border-right:1px solid #CCC}@media (max-width: 500px){.input-date-time-interval-dropdown .input-options-container .intervals-container{width:100%;border-right:none}}.input-date-time-interval-dropdown .input-options-container .intervals-container ng-scrollbar{max-height:380px;min-height:380px}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval{display:flex;justify-content:space-between;align-items:center;gap:5px;background:#FFF;padding:6px 10px;border-radius:5px;cursor:pointer;font-weight:600;color:var(--color-primary)}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval .interval-label{width:100%;height:20px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:13px}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval .interval-icon{width:20px;height:20px}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval .interval-icon mat-icon{width:20px;height:20px;display:flex;justify-content:center;align-items:center;font-size:18px;font-weight:700}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval:hover{background:#CCC}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval.interval-selected{background:var(--color-primary);color:#fff}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval.interval-selected .interval-label{width:calc(100% - 25px)}.input-date-time-interval-dropdown .input-options-container .calendar-container{padding:10px 10px 0;width:65%}.input-date-time-interval-dropdown .input-options-container .calendar-container.only-calendar{width:100%}@media (max-width: 500px){.input-date-time-interval-dropdown .input-options-container .calendar-container{width:100%}}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields{display:flex;justify-content:space-between;flex-direction:column;gap:5px;margin-bottom:5px}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields .picker-group{display:flex;justify-content:space-between;align-items:center;flex-direction:row;gap:5px}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields.picker-only-date{flex-direction:row}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields.picker-only-date .picker-group{width:calc(50% - 5px)}.input-date-time-interval-dropdown .input-date-time-actions{box-sizing:border-box;width:100%;border-top:1px solid #CCC;padding:10px 15px;display:flex;gap:10px;justify-content:center;align-items:center}.input-date-time-interval-dropdown .input-date-time-actions .action-button{display:flex;min-width:105px;padding:5px 15px;gap:5px;overflow:hidden;text-overflow:ellipsis;justify-content:center;align-items:center;font-weight:700;border-radius:10px;cursor:pointer}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-cancel-button{color:var(--color-primary);border:1px solid var(--color-primary);background:#FFF}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-cancel-button:hover{background:var(--color-primary);color:#fff}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-apply-button{color:var(--color-primary);border:1px solid var(--color-secondary);background:var(--color-secondary)}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-apply-button:hover{background:var(--color-secondary-hover)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i7.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i8.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "directive", type: i9.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }], encapsulation: i0.ViewEncapsulation.None });
253
+ }
254
+ export { InputDateTimeIntervalComponent };
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: InputDateTimeIntervalComponent, decorators: [{
256
+ type: Component,
257
+ args: [{ selector: 'input-date-time-interval', providers: [{
258
+ provide: NG_VALUE_ACCESSOR,
259
+ useExisting: forwardRef(() => InputDateTimeIntervalComponent),
260
+ multi: true
261
+ }], encapsulation: ViewEncapsulation.None, template: "<div class=\"input-date-time-interval\">\n <mat-form-field cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"clickable\"\n (click)=\"dropdownOpen ? closeDropdown($event) : openDropDown($event)\">\n <mat-label class=\"mdc-floating-label--float-above\" [innerHTML]=\"label\"></mat-label>\n <span class=\"interval-input\">\n <div matPrefix class=\"period-badget text-primary\" *ngIf=\"value?.interval\">\n <mat-icon>date_range</mat-icon>\n <span class=\"period-text\" [innerHTML]=\"value?.interval?.label\"></span>\n </div>\n <input style=\"display: flex\" class=\"clickable\" matInput [value]=\"getInputText()\" [readonly]=\"true\">\n </span>\n <mat-icon class=\"clickable text-tertiary\" matIconSuffix>{{dropdownOpen ? 'expand_less' : 'expand_more'}}</mat-icon>\n </mat-form-field>\n</div>\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayPanelClass]=\"'input-date-time-interval-overlay-panel'\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n (backdropClick)=\"closeDropdown($event)\"\n (overlayOutsideClick)=\"closeDropdown($event)\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"dropdownOpen\">\n <div class=\"input-date-time-interval-dropdown mdc-menu-surface\">\n <div class=\"input-options-container\">\n <div class=\"intervals-container\" *ngIf=\"this.intervals\">\n <div class=\"container-text\" *ngIf=\"relativeLabel\">\n <span class=\"relative-text\" [innerHTML]=\"relativeLabel\"></span>\n </div>\n <ng-scrollbar #intervalsBar class=\"date-time-interval-scrollbar\" [visibility]=\"'always'\">\n <div class=\"interval\"\n [id]=\"'apipass-datetime-interval-' + interval.id\"\n (click)=\"selectInterval(interval)\"\n [ngClass]=\"{'interval-selected': isSelected(interval)}\"\n *ngFor=\"let interval of this.intervals\">\n <div class=\"interval-label\">\n <span [innerHTML]=\"interval.label\"></span>\n </div>\n <div class=\"interval-icon\" *ngIf=\"isSelected(interval)\">\n <mat-icon class=\"mat-icon-slim text-secondary\">check</mat-icon>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n\n <div class=\"calendar-container\" [ngClass]=\"{'only-calendar': !this.intervals}\">\n <div class=\"container-text\" *ngIf=\"absoluteLabel\">\n <span class=\"absolute-text\" [innerHTML]=\"absoluteLabel\"></span>\n </div>\n <div class=\"picker\">\n <div class=\"picker-fields\" [ngClass]=\"{'picker-only-date': hideTime}\">\n <div class=\"picker-group\">\n <mat-form-field class=\"apipass-input-text-slim\">\n <mat-label [innerHTML]=\"startDateLabel\"></mat-label>\n <input matInput [(ngModel)]=\"selectedStartDate\"\n [mask]=\"dateMask\" [dropSpecialCharacters]=\"false\" (blur)=\"startDateChanged()\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>date_range</mat-icon>\n </mat-form-field>\n\n <mat-form-field class=\"apipass-input-text-slim\" *ngIf=\"!hideTime\">\n <mat-label [innerHTML]=\"startTimeLabel\"></mat-label>\n <input matInput [mask]=\"timeMask\" [dropSpecialCharacters]=\"false\" [(ngModel)]=\"selectedStartTime\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>schedule</mat-icon>\n </mat-form-field>\n </div>\n <div class=\"picker-group\">\n <mat-form-field class=\"apipass-input-text-slim\">\n <mat-label [innerHTML]=\"endDateLabel\"></mat-label>\n <input matInput [(ngModel)]=\"selectedEndDate\"\n [mask]=\"dateMask\" [dropSpecialCharacters]=\"false\" (blur)=\"endDateChanged()\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>date_range</mat-icon>\n </mat-form-field>\n\n <mat-form-field class=\"apipass-input-text-slim\" *ngIf=\"!hideTime\">\n <mat-label [innerHTML]=\"endTimeLabel\"></mat-label>\n <input matInput [mask]=\"timeMask\" [dropSpecialCharacters]=\"false\" [(ngModel)]=\"selectedEndTime\">\n <mat-icon class=\"mat-icon-slim text-tertiary\" matIconSuffix>schedule</mat-icon>\n </mat-form-field>\n </div>\n </div>\n <mat-calendar\n [selected]=\"_selectedDateRange\"\n [maxDate]=\"calendarMaxDate\"\n [minDate]=\"calendarMinDate\"\n (selectedChange)=\"onDateRangeChange($event)\"></mat-calendar>\n </div>\n </div>\n </div>\n <div class=\"input-date-time-actions\">\n <button class=\"action-button dropdown-cancel-button\" *ngIf=\"cancelLabel\" (click)=\"cancel()\">\n <span class=\"dropdown-cancel-button-text\" [innerHTML]=\"cancelLabel\"></span>\n </button>\n <button class=\"action-button dropdown-apply-button\" *ngIf=\"applyLabel\" (click)=\"apply()\">\n <span class=\"dropdown-cancel-button-text\" [innerHTML]=\"applyLabel\"></span>\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".input-date-time-interval mat-form-field{width:100%}.input-date-time-interval mat-form-field .interval-input{display:flex;flex-wrap:nowrap}.input-date-time-interval mat-form-field .interval-input .period-badget{display:flex;justify-content:space-around;align-items:center;gap:5px;padding:1px 10px;margin-left:15px;margin-right:5px;background:#EEE;border-radius:4px;border:1px solid #CCC}.input-date-time-interval mat-form-field .interval-input .period-badget .period-text{white-space:nowrap}.input-date-time-interval mat-form-field .date-value-input{display:flex;justify-content:flex-start;align-items:center;gap:5px}.input-date-time-interval-overlay-panel{margin-bottom:5px}.input-date-time-interval-dropdown{box-sizing:border-box;background:#FFF;border:1px solid #CCC;border-radius:5px;width:450px}@media (max-width: 500px){.input-date-time-interval-dropdown{width:90vw}}.input-date-time-interval-dropdown .input-options-container{display:flex;justify-content:space-between;align-items:flex-start}.input-date-time-interval-dropdown .input-options-container .container-text{font-weight:600;margin-bottom:5px}@media (max-width: 500px){.input-date-time-interval-dropdown .input-options-container{flex-direction:column}}.input-date-time-interval-dropdown .input-options-container .intervals-container{padding:10px;width:35%;overflow-x:hidden;overflow-y:auto;border-right:1px solid #CCC}@media (max-width: 500px){.input-date-time-interval-dropdown .input-options-container .intervals-container{width:100%;border-right:none}}.input-date-time-interval-dropdown .input-options-container .intervals-container ng-scrollbar{max-height:380px;min-height:380px}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval{display:flex;justify-content:space-between;align-items:center;gap:5px;background:#FFF;padding:6px 10px;border-radius:5px;cursor:pointer;font-weight:600;color:var(--color-primary)}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval .interval-label{width:100%;height:20px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:13px}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval .interval-icon{width:20px;height:20px}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval .interval-icon mat-icon{width:20px;height:20px;display:flex;justify-content:center;align-items:center;font-size:18px;font-weight:700}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval:hover{background:#CCC}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval.interval-selected{background:var(--color-primary);color:#fff}.input-date-time-interval-dropdown .input-options-container .intervals-container .interval.interval-selected .interval-label{width:calc(100% - 25px)}.input-date-time-interval-dropdown .input-options-container .calendar-container{padding:10px 10px 0;width:65%}.input-date-time-interval-dropdown .input-options-container .calendar-container.only-calendar{width:100%}@media (max-width: 500px){.input-date-time-interval-dropdown .input-options-container .calendar-container{width:100%}}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields{display:flex;justify-content:space-between;flex-direction:column;gap:5px;margin-bottom:5px}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields .picker-group{display:flex;justify-content:space-between;align-items:center;flex-direction:row;gap:5px}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields.picker-only-date{flex-direction:row}.input-date-time-interval-dropdown .input-options-container .calendar-container .picker .picker-fields.picker-only-date .picker-group{width:calc(50% - 5px)}.input-date-time-interval-dropdown .input-date-time-actions{box-sizing:border-box;width:100%;border-top:1px solid #CCC;padding:10px 15px;display:flex;gap:10px;justify-content:center;align-items:center}.input-date-time-interval-dropdown .input-date-time-actions .action-button{display:flex;min-width:105px;padding:5px 15px;gap:5px;overflow:hidden;text-overflow:ellipsis;justify-content:center;align-items:center;font-weight:700;border-radius:10px;cursor:pointer}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-cancel-button{color:var(--color-primary);border:1px solid var(--color-primary);background:#FFF}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-cancel-button:hover{background:var(--color-primary);color:#fff}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-apply-button{color:var(--color-primary);border:1px solid var(--color-secondary);background:var(--color-secondary)}.input-date-time-interval-dropdown .input-date-time-actions .dropdown-apply-button:hover{background:var(--color-secondary-hover)}\n"] }]
262
+ }], ctorParameters: function () { return [{ type: i1.ScrollStrategyOptions }]; }, propDecorators: { timezone: [{
263
+ type: Input
264
+ }], dateMask: [{
265
+ type: Input
266
+ }], timeMask: [{
267
+ type: Input
268
+ }], dateFormat: [{
269
+ type: Input
270
+ }], label: [{
271
+ type: Input
272
+ }], periodLabel: [{
273
+ type: Input
274
+ }], relativeLabel: [{
275
+ type: Input
276
+ }], absoluteLabel: [{
277
+ type: Input
278
+ }], startDateLabel: [{
279
+ type: Input
280
+ }], startDate: [{
281
+ type: Input
282
+ }], startTimeLabel: [{
283
+ type: Input
284
+ }], startTime: [{
285
+ type: Input
286
+ }], endTimeLabel: [{
287
+ type: Input
288
+ }], endTime: [{
289
+ type: Input
290
+ }], endDateLabel: [{
291
+ type: Input
292
+ }], endDate: [{
293
+ type: Input
294
+ }], calendarMaxDate: [{
295
+ type: Input
296
+ }], calendarMinDate: [{
297
+ type: Input
298
+ }], cancelLabel: [{
299
+ type: Input
300
+ }], applyLabel: [{
301
+ type: Input
302
+ }], hideTime: [{
303
+ type: Input
304
+ }], value: [{
305
+ type: Input
306
+ }], intervals: [{
307
+ type: Input
308
+ }], valueChange: [{
309
+ type: Output
310
+ }], scrollbarRef: [{
311
+ type: ViewChild,
312
+ args: ['intervalsBar']
313
+ }], onKeydownHandler: [{
314
+ type: HostListener,
315
+ args: ['document:keydown.escape', ['$event']]
316
+ }] } });
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS10aW1lLWludGVydmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvaW5wdXQtZGF0ZS10aW1lLWludGVydmFsL2lucHV0LWRhdGUtdGltZS1pbnRlcnZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2lucHV0LWRhdGUtdGltZS1pbnRlcnZhbC9pbnB1dC1kYXRlLXRpbWUtaW50ZXJ2YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBa0IscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQUU1QyxNQVdhLDhCQUE4QjtJQThIdEI7SUE1SFgsTUFBTSxDQUFtQjtJQUN2QixrQkFBa0IsQ0FBa0I7SUFDdkMsY0FBYyxDQUFnQjtJQUc5QixRQUFRLEdBQVcsbUJBQW1CLENBQUE7SUFHdEMsUUFBUSxHQUFXLFlBQVksQ0FBQTtJQUcvQixRQUFRLEdBQVcsVUFBVSxDQUFBO0lBRzdCLFVBQVUsR0FBVyxxQkFBcUIsQ0FBQTtJQUcxQyxLQUFLLENBQVE7SUFHYixXQUFXLEdBQVcs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QURsQixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFXRixLQUFLO3NCQURSLEtBQUs7Z0JBNkJDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixNQUFNO2dCQVdvQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBR2xCLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBUaW1lSW50ZXJ2YWwgfSBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbCc7XG5pbXBvcnQgeyBUaW1lSW50ZXJ2YWxWYWx1ZSB9IGZyb20gJy4vbW9kZWwvZGF0ZS10aW1lLWludGVybmFsLm1vZGVsJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgU2Nyb2xsU3RyYXRlZ3ksIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7IE5nU2Nyb2xsYmFyIH0gZnJvbSAnbmd4LXNjcm9sbGJhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lucHV0LWRhdGUtdGltZS1pbnRlcnZhbCcsXG4gIHRlbXBsYXRlVXJsOiAnaW5wdXQtZGF0ZS10aW1lLWludGVydmFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2lucHV0LWRhdGUtdGltZS1pbnRlcnZhbC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXREYXRlVGltZUludGVydmFsQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dERhdGVUaW1lSW50ZXJ2YWxDb21wb25lbnQge1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBUaW1lSW50ZXJ2YWxWYWx1ZVxuICBwcm90ZWN0ZWQgX3NlbGVjdGVkRGF0ZVJhbmdlOiBEYXRlUmFuZ2U8RGF0ZT47XG4gIHB1YmxpYyBzY3JvbGxTdHJhdGVneTogU2Nyb2xsU3RyYXRlZ3lcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGltZXpvbmU6IHN0cmluZyA9ICdBbWVyaWNhL1Nhb19QYXVsbydcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZU1hc2s6IHN0cmluZyA9ICcwMC8wMC8wMDAwJ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aW1lTWFzazogc3RyaW5nID0gJzAwOjAwOjAwJ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRlRm9ybWF0OiBzdHJpbmcgPSAnREQvTU0vWVlZWSBISDptbTpzcydcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWw6IHN0cmluZ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwZXJpb2RMYWJlbDogc3RyaW5nID0gJ1NlbGVjdGVkIFJlbGF0aXZlIEludGVydmFsJ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWxhdGl2ZUxhYmVsOiBzdHJpbmcgPSAnUmVsYXRpdmUgVGltZSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFic29sdXRlTGFiZWw6IHN0cmluZyA9ICdBYnNvbHV0ZSBUaW1lJ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydERhdGVMYWJlbCA9ICdTdGFydCBEYXRlJ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydERhdGU6IERhdGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0VGltZUxhYmVsID0gJ1N0YXJ0IFRpbWUnXG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0VGltZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRUaW1lTGFiZWwgPSAnRW5kIFRpbWUnXG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuZFRpbWU6IHN0cmluZ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmREYXRlTGFiZWwgPSAnRW5kIERhdGUnXG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuZERhdGU6IERhdGVcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJNYXhEYXRlOiBEYXRlXG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhbGVuZGFyTWluRGF0ZTogRGF0ZVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nID0gJ0NhbmNlbCdcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXBwbHlMYWJlbDogc3RyaW5nID0gJ0FwcGx5J1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRlVGltZSA9IGZhbHNlO1xuXG4gIGdldCB2YWx1ZSgpOiBUaW1lSW50ZXJ2YWxWYWx1ZSB7XG4gICAgaWYgKCF0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXcgVGltZUludGVydmFsVmFsdWUodGhpcy50aW1lem9uZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogVGltZUludGVydmFsVmFsdWUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMucmVmcmVzaFZhbHVlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoVmFsdWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92YWx1ZS5pbnRlcnZhbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEludGVydmFsID0gdGhpcy5fdmFsdWUuaW50ZXJ2YWw7XG4gICAgICB0aGlzLnJlc2V0RGF0ZXMoKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fdmFsdWU/LmFic29sdXRlU3RhcnREYXRlIHx8IHRoaXMuX3ZhbHVlPy5hYnNvbHV0ZUVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuX3ZhbHVlPy5hYnNvbHV0ZVN0YXJ0RGF0ZSB8fCB0aGlzLnN0YXJ0RGF0ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLmRhdGVUb1N0cmluZyhzdGFydERhdGUpO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMuX3ZhbHVlPy5hYnNvbHV0ZUVuZERhdGUgfHwgdGhpcy5lbmREYXRlO1xuICAgICAgdGhpcy5zZWxlY3RlZEVuZERhdGUgPSB0aGlzLmRhdGVUb1N0cmluZyhlbmREYXRlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5nZXREYXRlUmFuZ2UodGhpcy5zdHJpbmdUb0RhdGUodGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSksIHRoaXMuc3RyaW5nVG9EYXRlKHRoaXMuc2VsZWN0ZWRFbmREYXRlKSk7XG4gICAgICBpZiAodGhpcy5fdmFsdWU/LmFic29sdXRlU3RhcnREYXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGFydFRpbWUgPSB0aGlzLl92YWx1ZS5hYnNvbHV0ZVN0YXJ0RGF0ZS50b1RpbWVTdHJpbmcoKS5zcGxpdCgnICcpWzBdXG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZT8uYWJzb2x1dGVFbmREYXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbmRUaW1lID0gdGhpcy52YWx1ZT8uYWJzb2x1dGVFbmREYXRlLnRvVGltZVN0cmluZygpLnNwbGl0KCcgJylbMF1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFydFRpbWUgPSB0aGlzLnNlbGVjdGVkU3RhcnRUaW1lIHx8IHRoaXMuc3RhcnRUaW1lO1xuICAgICAgdGhpcy5zZWxlY3RlZEVuZFRpbWUgPSB0aGlzLnNlbGVjdGVkRW5kVGltZSB8fCB0aGlzLmVuZFRpbWU7XG4gICAgICB0aGlzLnNlbGVjdGVkSW50ZXJ2YWwgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaW50ZXJ2YWxzOiBUaW1lSW50ZXJ2YWxbXVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaW1lSW50ZXJ2YWxWYWx1ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRpbWVJbnRlcnZhbFZhbHVlPigpXG5cbiAgcHVibGljIHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVJbnRlcnZhbDtcbiAgcHVibGljIHNlbGVjdGVkU3RhcnRUaW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWxlY3RlZEVuZFRpbWU6IHN0cmluZztcbiAgcHVibGljIHNlbGVjdGVkU3RhcnREYXRlOiBzdHJpbmdcbiAgcHVibGljIHNlbGVjdGVkRW5kRGF0ZTogc3RyaW5nXG5cbiAgcHVibGljIGRyb3Bkb3duT3BlbjogYm9vbGVhblxuXG4gIEBWaWV3Q2hpbGQoJ2ludGVydmFsc0JhcicpIHNjcm9sbGJhclJlZjogTmdTY3JvbGxiYXJcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbktleWRvd25IYW5kbGVyKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNzbzogU2Nyb2xsU3RyYXRlZ3lPcHRpb25zKSB7XG4gICAgdGhpcy5zY3JvbGxTdHJhdGVneSA9IHRoaXMuc3NvLmJsb2NrKClcbiAgICB0aGlzLnJlc2V0RGF0ZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRHJvcERvd24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl92YWx1ZS5pbnRlcnZhbCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEludGVydmFsID0gdGhpcy5fdmFsdWUuaW50ZXJ2YWw7XG4gICAgICAgIHRoaXMuc2Nyb2xsYmFyUmVmLnNjcm9sbFRvRWxlbWVudChgI2FwaXBhc3MtZGF0ZXRpbWUtaW50ZXJ2YWwtJHtzZWxlY3RlZEludGVydmFsLmlkfWAsIHsgZHVyYXRpb246IDgwMCB9KS50aGVuKClcbiAgICAgIH1cbiAgICB9KVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICBwdWJsaWMgY2xvc2VEcm9wZG93bihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwoKTtcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZChpbnRlcnZhbDogVGltZUludGVydmFsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGludGVydmFsPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEludGVydmFsPy5pZDtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RJbnRlcnZhbChpbnRlcnZhbDogVGltZUludGVydmFsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEludGVydmFsID0gaW50ZXJ2YWw7XG4gICAgdGhpcy5yZXNldERhdGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmdldERhdGVSYW5nZSh0aGlzLnN0YXJ0RGF0ZSwgdGhpcy5lbmREYXRlKTtcbiAgICB0aGlzLnNlbGVjdGVkU3RhcnRUaW1lID0gdGhpcy5zdGFydFRpbWVcbiAgICB0aGlzLnNlbGVjdGVkRW5kVGltZSA9IHRoaXMuZW5kVGltZVxuICAgIHRoaXMuc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLmRhdGVUb1N0cmluZyh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEVuZERhdGUgPSB0aGlzLmRhdGVUb1N0cmluZyh0aGlzLmVuZERhdGUpO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZVJhbmdlQ2hhbmdlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWREYXRlUmFuZ2U/LnN0YXJ0ICYmIGRhdGUgPiB0aGlzLl9zZWxlY3RlZERhdGVSYW5nZS5zdGFydCAmJiAhdGhpcy5fc2VsZWN0ZWREYXRlUmFuZ2UuZW5kKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZERhdGVSYW5nZSA9IHRoaXMuZ2V0RGF0ZVJhbmdlKHRoaXMuX3NlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0LCBkYXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gdGhpcy5kYXRlVG9TdHJpbmcoZGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5nZXREYXRlUmFuZ2UoZGF0ZSwgdW5kZWZpbmVkKVxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF0ZVRvU3RyaW5nKGRhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZEludGVydmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGF0ZVRvU3RyaW5nKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlID8gbW9tZW50KGRhdGUpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXQpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdUb0RhdGUoZGF0ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgcmV0dXJuIGRhdGUgPyBtb21lbnQoZGF0ZSwgdGhpcy5kYXRlRm9ybWF0KS50b0RhdGUoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlUmFuZ2Uoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogRGF0ZVJhbmdlPERhdGU+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2Uoc3RhcnREYXRlID8gbW9tZW50KHN0YXJ0RGF0ZSkudG9EYXRlKCkgOiB1bmRlZmluZWQsIGVuZERhdGUgPyBtb21lbnQoZW5kRGF0ZSkudG9EYXRlKCkgOiB1bmRlZmluZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlPERhdGU+KG51bGwsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGFydERhdGVDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5nZXREYXRlUmFuZ2UodGhpcy5zdHJpbmdUb0RhdGUodGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSksIHRoaXMuc3RyaW5nVG9EYXRlKHRoaXMuc2VsZWN0ZWRFbmREYXRlKSk7XG4gICAgdGhpcy5zZWxlY3RlZEludGVydmFsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGVuZERhdGVDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuc3RyaW5nVG9EYXRlKHRoaXMuc2VsZWN0ZWRTdGFydERhdGUpO1xuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLnN0cmluZ1RvRGF0ZSh0aGlzLnNlbGVjdGVkRW5kRGF0ZSk7XG4gICAgaWYgKGVuZERhdGUgPCBzdGFydERhdGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZERhdGVSYW5nZSA9IHRoaXMuZ2V0RGF0ZVJhbmdlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEludGVydmFsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hWYWx1ZXMoKTtcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFwcGx5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlLmludGVydmFsID0gdGhpcy5zZWxlY3RlZEludGVydmFsO1xuICAgICAgdGhpcy5fdmFsdWUuYWJzb2x1dGVTdGFydERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl92YWx1ZS5hYnNvbHV0ZUVuZERhdGUgPSB1bmRlZmluZWRcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdGFydERhdGUpIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5zdHJpbmdUb0RhdGUodGhpcy5zZWxlY3RlZFN0YXJ0RGF0ZSk7XG4gICAgICAgIHRoaXMuYXBwbHlUaW1lT25EYXRlKHN0YXJ0RGF0ZSwgdGhpcy5zZWxlY3RlZFN0YXJ0VGltZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGFydFRpbWUgPSB0aGlzLnNlbGVjdGVkU3RhcnRUaW1lID8/ICcwMDowMDowMCdcbiAgICAgICAgdGhpcy5fdmFsdWUuYWJzb2x1dGVTdGFydERhdGUgPSBtb21lbnQoc3RhcnREYXRlKS50b0RhdGUoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUuYWJzb2x1dGVTdGFydERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVuZERhdGUpIHtcbiAgICAgICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMuc3RyaW5nVG9EYXRlKHRoaXMuc2VsZWN0ZWRFbmREYXRlKTtcbiAgICAgICAgdGhpcy5hcHBseVRpbWVPbkRhdGUoZW5kRGF0ZSwgdGhpcy5zZWxlY3RlZEVuZFRpbWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRW5kVGltZSA9IHRoaXMuc2VsZWN0ZWRFbmRUaW1lID8/ICcwMDowMDowMCdcbiAgICAgICAgdGhpcy5fdmFsdWUuYWJzb2x1dGVFbmREYXRlID0gbW9tZW50KGVuZERhdGUpLnRvRGF0ZSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl92YWx1ZS5hYnNvbHV0ZUVuZERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB0aGlzLl92YWx1ZS5pbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRpbWVPbkRhdGUoZGF0ZTogRGF0ZSwgdGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRpbWUpIHtcbiAgICAgIGRhdGUuc2V0SG91cnModGhpcy5nZXRIb3Vyc0Zyb21UaW1lKHRpbWUpKVxuICAgICAgZGF0ZS5zZXRNaW51dGVzKHRoaXMuZ2V0TWludXRlc0Zyb21UaW1lKHRpbWUpKVxuICAgICAgZGF0ZS5zZXRTZWNvbmRzKHRoaXMuZ2V0U2Vjb25kc0Zyb21UaW1lKHRpbWUpKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SG91cnNGcm9tVGltZSh0aW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh0aW1lLnNwbGl0KCc6JylbMF0pIHx8IDA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW51dGVzRnJvbVRpbWUodGltZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodGltZS5zcGxpdCgnOicpWzFdKSB8fCAwO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vjb25kc0Zyb21UaW1lKHRpbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRpbWUuc3BsaXQoJzonKVsyXSkgfHwgMDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5wdXRUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlPy5pbnRlcnZhbCkge1xuICAgICAgcmV0dXJuIHRoaXMucGVyaW9kTGFiZWw7XG4gICAgfVxuICAgIGNvbnN0IGVtcHR5RGF0ZTogc3RyaW5nID0gdGhpcy5oaWRlVGltZSA/ICdfX19fX19fX19fJyA6ICdfX19fX19fX19fIF9fX19fX19fJztcbiAgICBsZXQgZm9ybWF0ZWRUZXh0ID0gJyc7XG4gICAgaWYgKHRoaXMuX3ZhbHVlLmFic29sdXRlU3RhcnREYXRlKSB7XG4gICAgICBmb3JtYXRlZFRleHQgKz0gdGhpcy5kYXRlVG9TdHJpbmcodGhpcy5fdmFsdWUuYWJzb2x1dGVTdGFydERhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtYXRlZFRleHQgKz0gZW1wdHlEYXRlXG4gICAgfVxuICAgIGZvcm1hdGVkVGV4dCArPSAnIC0gJ1xuICAgIGlmICh0aGlzLl92YWx1ZS5hYnNvbHV0ZUVuZERhdGUpIHtcbiAgICAgIGZvcm1hdGVkVGV4dCArPSB0aGlzLmRhdGVUb1N0cmluZyh0aGlzLl92YWx1ZS5hYnNvbHV0ZUVuZERhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtYXRlZFRleHQgKz0gZW1wdHlEYXRlXG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRlZFRleHQ7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImlucHV0LWRhdGUtdGltZS1pbnRlcnZhbFwiPlxuICA8bWF0LWZvcm0tZmllbGQgY2RrT3ZlcmxheU9yaWdpbiAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiIGNsYXNzPVwiY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkcm9wZG93bk9wZW4gPyBjbG9zZURyb3Bkb3duKCRldmVudCkgOiBvcGVuRHJvcERvd24oJGV2ZW50KVwiPlxuICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJtZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlXCIgW2lubmVySFRNTF09XCJsYWJlbFwiPjwvbWF0LWxhYmVsPlxuICAgIDxzcGFuIGNsYXNzPVwiaW50ZXJ2YWwtaW5wdXRcIj5cbiAgICAgIDxkaXYgbWF0UHJlZml4IGNsYXNzPVwicGVyaW9kLWJhZGdldCB0ZXh0LXByaW1hcnlcIiAqbmdJZj1cInZhbHVlPy5pbnRlcnZhbFwiPlxuICAgICAgICA8bWF0LWljb24+ZGF0ZV9yYW5nZTwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGVyaW9kLXRleHRcIiBbaW5uZXJIVE1MXT1cInZhbHVlPy5pbnRlcnZhbD8ubGFiZWxcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIiBjbGFzcz1cImNsaWNrYWJsZVwiIG1hdElucHV0IFt2YWx1ZV09XCJnZXRJbnB1dFRleHQoKVwiIFtyZWFkb25seV09XCJ0cnVlXCI+XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImNsaWNrYWJsZSB0ZXh0LXRlcnRpYXJ5XCIgbWF0SWNvblN1ZmZpeD57e2Ryb3Bkb3duT3BlbiA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnfX08L21hdC1pY29uPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzXT1cIidpbnB1dC1kYXRlLXRpbWUtaW50ZXJ2YWwtb3ZlcmxheS1wYW5lbCdcIlxuICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3lcIlxuICAgICAgICAgICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgKG92ZXJsYXlPdXRzaWRlQ2xpY2spPVwiY2xvc2VEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJkcm9wZG93bk9wZW5cIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWRhdGUtdGltZS1pbnRlcnZhbC1kcm9wZG93biBtZGMtbWVudS1zdXJmYWNlXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LW9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW50ZXJ2YWxzLWNvbnRhaW5lclwiICpuZ0lmPVwidGhpcy5pbnRlcnZhbHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci10ZXh0XCIgKm5nSWY9XCJyZWxhdGl2ZUxhYmVsXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGl2ZS10ZXh0XCIgW2lubmVySFRNTF09XCJyZWxhdGl2ZUxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXNjcm9sbGJhciAjaW50ZXJ2YWxzQmFyIGNsYXNzPVwiZGF0ZS10aW1lLWludGVydmFsLXNjcm9sbGJhclwiIFt2aXNpYmlsaXR5XT1cIidhbHdheXMnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImludGVydmFsXCJcbiAgICAgICAgICAgICAgIFtpZF09XCInYXBpcGFzcy1kYXRldGltZS1pbnRlcnZhbC0nICsgaW50ZXJ2YWwuaWRcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEludGVydmFsKGludGVydmFsKVwiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2ludGVydmFsLXNlbGVjdGVkJzogaXNTZWxlY3RlZChpbnRlcnZhbCl9XCJcbiAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbnRlcnZhbCBvZiB0aGlzLmludGVydmFsc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludGVydmFsLWxhYmVsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaW50ZXJ2YWwubGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnRlcnZhbC1pY29uXCIgKm5nSWY9XCJpc1NlbGVjdGVkKGludGVydmFsKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1zbGltIHRleHQtc2Vjb25kYXJ5XCI+Y2hlY2s8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J29ubHktY2FsZW5kYXInOiAhdGhpcy5pbnRlcnZhbHN9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdGV4dFwiICpuZ0lmPVwiYWJzb2x1dGVMYWJlbFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWJzb2x1dGUtdGV4dFwiIFtpbm5lckhUTUxdPVwiYWJzb2x1dGVMYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWZpZWxkc1wiIFtuZ0NsYXNzXT1cInsncGlja2VyLW9ubHktZGF0ZSc6IGhpZGVUaW1lfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1ncm91cFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcGlwYXNzLWlucHV0LXRleHQtc2xpbVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW2lubmVySFRNTF09XCJzdGFydERhdGVMYWJlbFwiPjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU3RhcnREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW21hc2tdPVwiZGF0ZU1hc2tcIiBbZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXT1cImZhbHNlXCIgKGJsdXIpPVwic3RhcnREYXRlQ2hhbmdlZCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tc2xpbSB0ZXh0LXRlcnRpYXJ5XCIgbWF0SWNvblN1ZmZpeD5kYXRlX3JhbmdlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcGlwYXNzLWlucHV0LXRleHQtc2xpbVwiICpuZ0lmPVwiIWhpZGVUaW1lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbaW5uZXJIVE1MXT1cInN0YXJ0VGltZUxhYmVsXCI+PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXNrXT1cInRpbWVNYXNrXCIgW2Ryb3BTcGVjaWFsQ2hhcmFjdGVyc109XCJmYWxzZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdGFydFRpbWVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1zbGltIHRleHQtdGVydGlhcnlcIiBtYXRJY29uU3VmZml4PnNjaGVkdWxlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1ncm91cFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcGlwYXNzLWlucHV0LXRleHQtc2xpbVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW2lubmVySFRNTF09XCJlbmREYXRlTGFiZWxcIj48L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVuZERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbWFza109XCJkYXRlTWFza1wiIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIiAoYmx1cik9XCJlbmREYXRlQ2hhbmdlZCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tc2xpbSB0ZXh0LXRlcnRpYXJ5XCIgbWF0SWNvblN1ZmZpeD5kYXRlX3JhbmdlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcGlwYXNzLWlucHV0LXRleHQtc2xpbVwiICpuZ0lmPVwiIWhpZGVUaW1lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbaW5uZXJIVE1MXT1cImVuZFRpbWVMYWJlbFwiPjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWFza109XCJ0aW1lTWFza1wiIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRW5kVGltZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXNsaW0gdGV4dC10ZXJ0aWFyeVwiIG1hdEljb25TdWZmaXg+c2NoZWR1bGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cIl9zZWxlY3RlZERhdGVSYW5nZVwiXG4gICAgICAgICAgICBbbWF4RGF0ZV09XCJjYWxlbmRhck1heERhdGVcIlxuICAgICAgICAgICAgW21pbkRhdGVdPVwiY2FsZW5kYXJNaW5EYXRlXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJvbkRhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCI+PC9tYXQtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWRhdGUtdGltZS1hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbiBkcm9wZG93bi1jYW5jZWwtYnV0dG9uXCIgKm5nSWY9XCJjYW5jZWxMYWJlbFwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWNhbmNlbC1idXR0b24tdGV4dFwiIFtpbm5lckhUTUxdPVwiY2FuY2VsTGFiZWxcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnV0dG9uIGRyb3Bkb3duLWFwcGx5LWJ1dHRvblwiICpuZ0lmPVwiYXBwbHlMYWJlbFwiIChjbGljayk9XCJhcHBseSgpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tY2FuY2VsLWJ1dHRvbi10ZXh0XCIgW2lubmVySFRNTF09XCJhcHBseUxhYmVsXCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,56 @@
1
+ import moment from 'moment-timezone';
2
+ export class TimeIntervalValue {
3
+ _timezone;
4
+ _absoluteStartDate;
5
+ _absoluteEndDate;
6
+ _interval;
7
+ constructor(timezone) {
8
+ this._timezone = timezone;
9
+ }
10
+ getStartDate() {
11
+ if (this._interval?.getStartDate) {
12
+ return new Date(moment(this._interval.getStartDate()).tz(this._timezone).format());
13
+ }
14
+ if (this._absoluteStartDate) {
15
+ return new Date(moment(this._absoluteStartDate).tz(this._timezone).format());
16
+ }
17
+ return this._absoluteStartDate;
18
+ }
19
+ getEndDate() {
20
+ if (this._interval?.getEndDate) {
21
+ return new Date(moment(this._interval.getEndDate()).tz(this._timezone).format());
22
+ }
23
+ if (this._absoluteEndDate) {
24
+ return new Date(moment(this._absoluteEndDate).tz(this._timezone).format());
25
+ }
26
+ return this._absoluteEndDate;
27
+ }
28
+ isRelativeInterval() {
29
+ return !!this._interval;
30
+ }
31
+ isAbsoluteDate() {
32
+ return !this.isRelativeInterval();
33
+ }
34
+ get absoluteStartDate() {
35
+ return this._absoluteStartDate;
36
+ }
37
+ set absoluteStartDate(value) {
38
+ this._absoluteStartDate = value;
39
+ }
40
+ get absoluteEndDate() {
41
+ return this._absoluteEndDate;
42
+ }
43
+ set absoluteEndDate(value) {
44
+ this._absoluteEndDate = value;
45
+ }
46
+ get interval() {
47
+ return this._interval;
48
+ }
49
+ set interval(value) {
50
+ this._interval = value;
51
+ }
52
+ get timezone() {
53
+ return this._timezone;
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWludGVybmFsLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9pbnB1dC1kYXRlLXRpbWUtaW50ZXJ2YWwvbW9kZWwvZGF0ZS10aW1lLWludGVybmFsLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBRXJDLE1BQU0sT0FBTyxpQkFBaUI7SUFFWCxTQUFTLENBQVE7SUFDMUIsa0JBQWtCLENBQU07SUFDeEIsZ0JBQWdCLENBQU07SUFDdEIsU0FBUyxDQUFjO0lBRS9CLFlBQVksUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRTtZQUNoQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3BGO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbEY7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDNUU7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxLQUFXO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsS0FBVztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZUludGVydmFsIH0gZnJvbSAnLi4vZGVmYXVsdC1pbnRlcnZhbC90aW1lLWludGVydmFsJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuZXhwb3J0IGNsYXNzIFRpbWVJbnRlcnZhbFZhbHVlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lem9uZTogc3RyaW5nXG4gIHByaXZhdGUgX2Fic29sdXRlU3RhcnREYXRlOiBEYXRlXG4gIHByaXZhdGUgX2Fic29sdXRlRW5kRGF0ZTogRGF0ZVxuICBwcml2YXRlIF9pbnRlcnZhbDogVGltZUludGVydmFsXG5cbiAgY29uc3RydWN0b3IodGltZXpvbmU6IHN0cmluZykge1xuICAgIHRoaXMuX3RpbWV6b25lID0gdGltZXpvbmU7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhcnREYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLl9pbnRlcnZhbD8uZ2V0U3RhcnREYXRlKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUobW9tZW50KHRoaXMuX2ludGVydmFsLmdldFN0YXJ0RGF0ZSgpKS50eih0aGlzLl90aW1lem9uZSkuZm9ybWF0KCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fYWJzb2x1dGVTdGFydERhdGUpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShtb21lbnQodGhpcy5fYWJzb2x1dGVTdGFydERhdGUpLnR6KHRoaXMuX3RpbWV6b25lKS5mb3JtYXQoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVN0YXJ0RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRFbmREYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLl9pbnRlcnZhbD8uZ2V0RW5kRGF0ZSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKG1vbWVudCh0aGlzLl9pbnRlcnZhbC5nZXRFbmREYXRlKCkpLnR6KHRoaXMuX3RpbWV6b25lKS5mb3JtYXQoKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9hYnNvbHV0ZUVuZERhdGUpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShtb21lbnQodGhpcy5fYWJzb2x1dGVFbmREYXRlKS50eih0aGlzLl90aW1lem9uZSkuZm9ybWF0KCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVFbmREYXRlO1xuICB9XG5cbiAgcHVibGljIGlzUmVsYXRpdmVJbnRlcnZhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9pbnRlcnZhbDtcbiAgfVxuXG4gIHB1YmxpYyBpc0Fic29sdXRlRGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNSZWxhdGl2ZUludGVydmFsKClcbiAgfVxuXG4gIGdldCBhYnNvbHV0ZVN0YXJ0RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVTdGFydERhdGU7XG4gIH1cblxuICBzZXQgYWJzb2x1dGVTdGFydERhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl9hYnNvbHV0ZVN0YXJ0RGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGFic29sdXRlRW5kRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVFbmREYXRlO1xuICB9XG5cbiAgc2V0IGFic29sdXRlRW5kRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuX2Fic29sdXRlRW5kRGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGludGVydmFsKCk6IFRpbWVJbnRlcnZhbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVydmFsO1xuICB9XG5cbiAgc2V0IGludGVydmFsKHZhbHVlOiBUaW1lSW50ZXJ2YWwpIHtcbiAgICB0aGlzLl9pbnRlcnZhbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRpbWV6b25lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWV6b25lO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ // Export builders
2
+ export * from './builder/default-intervals.builder';
3
+ export * from './builder/time-interval-value.builder';
4
+ export * from './builder/time-intervals.builder';
5
+ // Export model class
6
+ export * from './model/date-time-internal.model';
7
+ // Export default intervals
8
+ export * from './default-interval/time-interval';
9
+ export * from './default-interval/current-month-interval';
10
+ export * from './default-interval/last-five-minutes-interval';
11
+ export * from './default-interval/last-hour-interval';
12
+ export * from './default-interval/last-minute-interval';
13
+ export * from './default-interval/last-month-interval';
14
+ export * from './default-interval/last-one-week-interval';
15
+ export * from './default-interval/last-quarter-interval';
16
+ export * from './default-interval/last-ten-minutes-interval';
17
+ export * from './default-interval/last-thirty-minutes-interval';
18
+ export * from './default-interval/last-three-hours-interval';
19
+ export * from './default-interval/last-two-hours-interval';
20
+ export * from './default-interval/last-year-interval';
21
+ export * from './default-interval/this-quarter-interval';
22
+ export * from './default-interval/this-week-interval';
23
+ export * from './default-interval/this-year-interval';
24
+ export * from './default-interval/today-interval';
25
+ export * from './default-interval/yesterday-interval';
26
+ // Export Component
27
+ export * from './input-date-time-interval.component';
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvaW5wdXQtZGF0ZS10aW1lLWludGVydmFsL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLGtDQUFrQyxDQUFBO0FBRWhELHFCQUFxQjtBQUNyQixjQUFjLGtDQUFrQyxDQUFBO0FBRWhELDJCQUEyQjtBQUMzQixjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMseUNBQXlDLENBQUE7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQTtBQUN0RCxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyw4Q0FBOEMsQ0FBQTtBQUM1RCxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsOENBQThDLENBQUE7QUFDNUQsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYyx1Q0FBdUMsQ0FBQTtBQUVyRCxtQkFBbUI7QUFDbkIsY0FBYyxzQ0FBc0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEV4cG9ydCBidWlsZGVyc1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyL2RlZmF1bHQtaW50ZXJ2YWxzLmJ1aWxkZXInXG5leHBvcnQgKiBmcm9tICcuL2J1aWxkZXIvdGltZS1pbnRlcnZhbC12YWx1ZS5idWlsZGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyL3RpbWUtaW50ZXJ2YWxzLmJ1aWxkZXInXG5cbi8vIEV4cG9ydCBtb2RlbCBjbGFzc1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC9kYXRlLXRpbWUtaW50ZXJuYWwubW9kZWwnXG5cbi8vIEV4cG9ydCBkZWZhdWx0IGludGVydmFsc1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LWludGVydmFsL3RpbWUtaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvY3VycmVudC1tb250aC1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC9sYXN0LWZpdmUtbWludXRlcy1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC9sYXN0LWhvdXItaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvbGFzdC1taW51dGUtaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvbGFzdC1tb250aC1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC9sYXN0LW9uZS13ZWVrLWludGVydmFsJ1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LWludGVydmFsL2xhc3QtcXVhcnRlci1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC9sYXN0LXRlbi1taW51dGVzLWludGVydmFsJ1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LWludGVydmFsL2xhc3QtdGhpcnR5LW1pbnV0ZXMtaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvbGFzdC10aHJlZS1ob3Vycy1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC9sYXN0LXR3by1ob3Vycy1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC9sYXN0LXllYXItaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvdGhpcy1xdWFydGVyLWludGVydmFsJ1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LWludGVydmFsL3RoaXMtd2Vlay1pbnRlcnZhbCdcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbnRlcnZhbC90aGlzLXllYXItaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwvdG9kYXktaW50ZXJ2YWwnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtaW50ZXJ2YWwveWVzdGVyZGF5LWludGVydmFsJ1xuXG4vLyBFeHBvcnQgQ29tcG9uZW50XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LWRhdGUtdGltZS1pbnRlcnZhbC5jb21wb25lbnQnXG4iXX0=