@netwin/angular-datetime-picker 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +225 -0
  2. package/assets/style/picker.min.css +1 -0
  3. package/esm2022/lib/date-time/adapter/date-time-adapter.class.mjs +121 -0
  4. package/esm2022/lib/date-time/adapter/date-time-format.class.mjs +7 -0
  5. package/esm2022/lib/date-time/adapter/native-date-time-adapter.class.mjs +261 -0
  6. package/esm2022/lib/date-time/adapter/native-date-time-format.class.mjs +10 -0
  7. package/esm2022/lib/date-time/adapter/native-date-time.module.mjs +39 -0
  8. package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.mjs +235 -0
  9. package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.mjs +10 -0
  10. package/esm2022/lib/date-time/calendar-body.component.mjs +147 -0
  11. package/esm2022/lib/date-time/calendar-month-view.component.mjs +451 -0
  12. package/esm2022/lib/date-time/calendar-multi-year-view.component.mjs +361 -0
  13. package/esm2022/lib/date-time/calendar-year-view.component.mjs +371 -0
  14. package/esm2022/lib/date-time/calendar.component.mjs +383 -0
  15. package/esm2022/lib/date-time/date-time-inline.component.mjs +296 -0
  16. package/esm2022/lib/date-time/date-time-picker-container.component.mjs +420 -0
  17. package/esm2022/lib/date-time/date-time-picker-input.directive.mjs +638 -0
  18. package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +62 -0
  19. package/esm2022/lib/date-time/date-time-picker-trigger.directive.mjs +69 -0
  20. package/esm2022/lib/date-time/date-time-picker.animations.mjs +21 -0
  21. package/esm2022/lib/date-time/date-time-picker.component.mjs +580 -0
  22. package/esm2022/lib/date-time/date-time.class.mjs +180 -0
  23. package/esm2022/lib/date-time/date-time.module.mjs +91 -0
  24. package/esm2022/lib/date-time/numberedFixLen.pipe.mjs +28 -0
  25. package/esm2022/lib/date-time/options-provider.mjs +34 -0
  26. package/esm2022/lib/date-time/timer-box.component.mjs +135 -0
  27. package/esm2022/lib/date-time/timer.component.mjs +292 -0
  28. package/esm2022/lib/dialog/dialog-config.class.mjs +56 -0
  29. package/esm2022/lib/dialog/dialog-container.component.mjs +230 -0
  30. package/esm2022/lib/dialog/dialog-ref.class.mjs +123 -0
  31. package/esm2022/lib/dialog/dialog.module.mjs +34 -0
  32. package/esm2022/lib/dialog/dialog.service.mjs +245 -0
  33. package/esm2022/lib/utils/array.utils.mjs +12 -0
  34. package/esm2022/lib/utils/constants.mjs +55 -0
  35. package/esm2022/lib/utils/date.utils.mjs +49 -0
  36. package/esm2022/lib/utils/index.mjs +5 -0
  37. package/esm2022/lib/utils/object.utils.mjs +26 -0
  38. package/esm2022/netwin-angular-datetime-picker.mjs +5 -0
  39. package/esm2022/public_api.mjs +25 -0
  40. package/fesm2022/netwin-angular-datetime-picker.mjs +5913 -0
  41. package/fesm2022/netwin-angular-datetime-picker.mjs.map +1 -0
  42. package/index.d.ts +5 -0
  43. package/lib/date-time/adapter/date-time-adapter.class.d.ts +193 -0
  44. package/lib/date-time/adapter/date-time-format.class.d.ts +15 -0
  45. package/lib/date-time/adapter/native-date-time-adapter.class.d.ts +69 -0
  46. package/lib/date-time/adapter/native-date-time-format.class.d.ts +5 -0
  47. package/lib/date-time/adapter/native-date-time.module.d.ts +12 -0
  48. package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.d.ts +64 -0
  49. package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.d.ts +5 -0
  50. package/lib/date-time/calendar-body.component.d.ts +80 -0
  51. package/lib/date-time/calendar-month-view.component.d.ts +144 -0
  52. package/lib/date-time/calendar-multi-year-view.component.d.ts +111 -0
  53. package/lib/date-time/calendar-year-view.component.d.ts +123 -0
  54. package/lib/date-time/calendar.component.d.ts +155 -0
  55. package/lib/date-time/date-time-inline.component.d.ts +105 -0
  56. package/lib/date-time/date-time-picker-container.component.d.ts +130 -0
  57. package/lib/date-time/date-time-picker-input.directive.d.ts +167 -0
  58. package/lib/date-time/date-time-picker-intl.service.d.ts +51 -0
  59. package/lib/date-time/date-time-picker-trigger.directive.d.ts +24 -0
  60. package/lib/date-time/date-time-picker.animations.d.ts +8 -0
  61. package/lib/date-time/date-time-picker.component.d.ts +177 -0
  62. package/lib/date-time/date-time.class.d.ts +106 -0
  63. package/lib/date-time/date-time.module.d.ts +23 -0
  64. package/lib/date-time/numberedFixLen.pipe.d.ts +10 -0
  65. package/lib/date-time/options-provider.d.ts +23 -0
  66. package/lib/date-time/timer-box.component.d.ts +46 -0
  67. package/lib/date-time/timer.component.d.ts +132 -0
  68. package/lib/dialog/dialog-config.class.d.ts +169 -0
  69. package/lib/dialog/dialog-container.component.d.ts +59 -0
  70. package/lib/dialog/dialog-ref.class.d.ts +51 -0
  71. package/lib/dialog/dialog.module.d.ts +11 -0
  72. package/lib/dialog/dialog.service.d.ts +76 -0
  73. package/lib/utils/array.utils.d.ts +5 -0
  74. package/lib/utils/constants.d.ts +19 -0
  75. package/lib/utils/date.utils.d.ts +12 -0
  76. package/lib/utils/index.d.ts +4 -0
  77. package/lib/utils/object.utils.d.ts +11 -0
  78. package/package.json +51 -0
  79. package/public_api.d.ts +24 -0
@@ -0,0 +1,180 @@
1
+ /**
2
+ * date-time.class
3
+ */
4
+ import { Inject, Input, Optional, Directive } from '@angular/core';
5
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
6
+ import { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./adapter/date-time-adapter.class";
9
+ let nextUniqueId = 0;
10
+ export var DateView;
11
+ (function (DateView) {
12
+ DateView["MONTH"] = "month";
13
+ DateView["YEAR"] = "year";
14
+ DateView["MULTI_YEARS"] = "multi-years";
15
+ })(DateView || (DateView = {}));
16
+ export class OwlDateTime {
17
+ get showSecondsTimer() {
18
+ return this._showSecondsTimer;
19
+ }
20
+ set showSecondsTimer(val) {
21
+ this._showSecondsTimer = coerceBooleanProperty(val);
22
+ }
23
+ get hour12Timer() {
24
+ return this._hour12Timer;
25
+ }
26
+ set hour12Timer(val) {
27
+ this._hour12Timer = coerceBooleanProperty(val);
28
+ }
29
+ get stepHour() {
30
+ return this._stepHour;
31
+ }
32
+ set stepHour(val) {
33
+ this._stepHour = coerceNumberProperty(val, 1);
34
+ }
35
+ get stepMinute() {
36
+ return this._stepMinute;
37
+ }
38
+ set stepMinute(val) {
39
+ this._stepMinute = coerceNumberProperty(val, 1);
40
+ }
41
+ get stepSecond() {
42
+ return this._stepSecond;
43
+ }
44
+ set stepSecond(val) {
45
+ this._stepSecond = coerceNumberProperty(val, 1);
46
+ }
47
+ get firstDayOfWeek() {
48
+ return this._firstDayOfWeek;
49
+ }
50
+ set firstDayOfWeek(value) {
51
+ value = coerceNumberProperty(value);
52
+ if (value > 6 || value < 0) {
53
+ this._firstDayOfWeek = undefined;
54
+ }
55
+ else {
56
+ this._firstDayOfWeek = value;
57
+ }
58
+ }
59
+ get hideOtherMonths() {
60
+ return this._hideOtherMonths;
61
+ }
62
+ set hideOtherMonths(val) {
63
+ this._hideOtherMonths = coerceBooleanProperty(val);
64
+ }
65
+ get id() {
66
+ return this._id;
67
+ }
68
+ get formatString() {
69
+ return this.pickerType === 'both'
70
+ ? this.dateTimeFormats.fullPickerInput
71
+ : this.pickerType === 'calendar'
72
+ ? this.dateTimeFormats.datePickerInput
73
+ : this.dateTimeFormats.timePickerInput;
74
+ }
75
+ get disabled() {
76
+ return false;
77
+ }
78
+ constructor(dateTimeAdapter, dateTimeFormats) {
79
+ this.dateTimeAdapter = dateTimeAdapter;
80
+ this.dateTimeFormats = dateTimeFormats;
81
+ /**
82
+ * Whether to show the second's timer
83
+ */
84
+ this._showSecondsTimer = false;
85
+ /**
86
+ * Whether the timer is in hour12 format
87
+ */
88
+ this._hour12Timer = false;
89
+ /**
90
+ * The view that the calendar should start in.
91
+ */
92
+ this.startView = DateView.MONTH;
93
+ /**
94
+ * Whether to should only the year and multi-year views.
95
+ */
96
+ this.yearOnly = false;
97
+ /**
98
+ * Whether to should only the multi-year view.
99
+ */
100
+ this.multiyearOnly = false;
101
+ /**
102
+ * Hours to change per step
103
+ */
104
+ this._stepHour = 1;
105
+ /**
106
+ * Minutes to change per step
107
+ */
108
+ this._stepMinute = 1;
109
+ /**
110
+ * Seconds to change per step
111
+ */
112
+ this._stepSecond = 1;
113
+ /**
114
+ * Whether to hide dates in other months at the start or end of the current month.
115
+ */
116
+ this._hideOtherMonths = false;
117
+ /**
118
+ * Date Time Checker to check if the give dateTime is selectable
119
+ */
120
+ this.dateTimeChecker = (dateTime) => {
121
+ return (!!dateTime &&
122
+ (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&
123
+ (!this.minDateTime ||
124
+ this.dateTimeAdapter.compare(dateTime, this.minDateTime) >=
125
+ 0) &&
126
+ (!this.maxDateTime ||
127
+ this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0));
128
+ };
129
+ if (!this.dateTimeAdapter) {
130
+ throw Error(`OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +
131
+ `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +
132
+ `custom implementation.`);
133
+ }
134
+ if (!this.dateTimeFormats) {
135
+ throw Error(`OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +
136
+ `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +
137
+ `custom implementation.`);
138
+ }
139
+ this._id = `owl-dt-picker-${nextUniqueId++}`;
140
+ }
141
+ getValidDate(obj) {
142
+ return this.dateTimeAdapter.isDateInstance(obj) &&
143
+ this.dateTimeAdapter.isValid(obj)
144
+ ? obj
145
+ : null;
146
+ }
147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlDateTime, deps: [{ token: i1.DateTimeAdapter, optional: true }, { token: OWL_DATE_TIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
148
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: OwlDateTime, inputs: { showSecondsTimer: "showSecondsTimer", hour12Timer: "hour12Timer", startView: "startView", yearOnly: "yearOnly", multiyearOnly: "multiyearOnly", stepHour: "stepHour", stepMinute: "stepMinute", stepSecond: "stepSecond", firstDayOfWeek: "firstDayOfWeek", hideOtherMonths: "hideOtherMonths" }, ngImport: i0 }); }
149
+ }
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlDateTime, decorators: [{
151
+ type: Directive
152
+ }], ctorParameters: () => [{ type: i1.DateTimeAdapter, decorators: [{
153
+ type: Optional
154
+ }] }, { type: undefined, decorators: [{
155
+ type: Optional
156
+ }, {
157
+ type: Inject,
158
+ args: [OWL_DATE_TIME_FORMATS]
159
+ }] }], propDecorators: { showSecondsTimer: [{
160
+ type: Input
161
+ }], hour12Timer: [{
162
+ type: Input
163
+ }], startView: [{
164
+ type: Input
165
+ }], yearOnly: [{
166
+ type: Input
167
+ }], multiyearOnly: [{
168
+ type: Input
169
+ }], stepHour: [{
170
+ type: Input
171
+ }], stepMinute: [{
172
+ type: Input
173
+ }], stepSecond: [{
174
+ type: Input
175
+ }], firstDayOfWeek: [{
176
+ type: Input
177
+ }], hideOtherMonths: [{
178
+ type: Input
179
+ }] } });
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGlja2VyL3NyYy9saWIvZGF0ZS10aW1lL2RhdGUtdGltZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBZSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDdkIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQ0gscUJBQXFCLEVBRXhCLE1BQU0sa0NBQWtDLENBQUM7OztBQUUxQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFRckIsTUFBTSxDQUFOLElBQVksUUFJWDtBQUpELFdBQVksUUFBUTtJQUNoQiwyQkFBZSxDQUFBO0lBQ2YseUJBQWEsQ0FBQTtJQUNiLHVDQUEyQixDQUFBO0FBQy9CLENBQUMsRUFKVyxRQUFRLEtBQVIsUUFBUSxRQUluQjtBQUtELE1BQU0sT0FBZ0IsV0FBVztJQUs3QixJQUNJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFZO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBTUQsSUFDSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxHQUFZO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQXlCRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEdBQVc7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQU1ELElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBTUQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxHQUFXO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFNRCxJQUNJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLEtBQWE7UUFDNUIsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQU1ELElBQ0ksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxHQUFZO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBR0QsSUFBSSxFQUFFO1FBQ0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUEwQ0QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLE1BQU07WUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZTtZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVO2dCQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlO2dCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7SUFDbkQsQ0FBQztJQWlCRCxJQUFJLFFBQVE7UUFDUixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFDMEIsZUFBbUMsRUFHL0MsZUFBbUM7UUFIdkIsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBRy9DLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQS9MakQ7O1dBRUc7UUFDSyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFVbEM7O1dBRUc7UUFDSyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQVU3Qjs7V0FFRztRQUVILGNBQVMsR0FBaUIsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUd6Qzs7V0FFRztRQUVILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakI7O1dBRUc7UUFFSCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUNLLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFVdEI7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQVV4Qjs7V0FFRztRQUNLLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBNEJ4Qjs7V0FFRztRQUNLLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQStEakM7O1dBRUc7UUFDSSxvQkFBZSxHQUFHLENBQUMsUUFBVyxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUNILENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVztvQkFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFDeEQsQ0FBQyxDQUFDO2dCQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVztvQkFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRSxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBWUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixNQUFNLEtBQUssQ0FDUCxpR0FBaUc7Z0JBQ2pHLG1HQUFtRztnQkFDbkcsd0JBQXdCLENBQzNCLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixNQUFNLEtBQUssQ0FDUCx1R0FBdUc7Z0JBQ3ZHLG1HQUFtRztnQkFDbkcsd0JBQXdCLENBQzNCLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRVMsWUFBWSxDQUFDLEdBQVE7UUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7WUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxHQUFHO1lBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLENBQUM7OEdBMU5pQixXQUFXLGlFQStMakIscUJBQXFCO2tHQS9MZixXQUFXOzsyRkFBWCxXQUFXO2tCQURoQyxTQUFTOzswQkE4TEQsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7eUNBekw3QixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBY0YsV0FBVztzQkFEZCxLQUFLO2dCQWFOLFNBQVM7c0JBRFIsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQVFGLFFBQVE7c0JBRFgsS0FBSztnQkFjRixVQUFVO3NCQURiLEtBQUs7Z0JBY0YsVUFBVTtzQkFEYixLQUFLO2dCQWNGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBbUJGLGVBQWU7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGRhdGUtdGltZS5jbGFzc1xuICovXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIERpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSxcbiAgICBjb2VyY2VOdW1iZXJQcm9wZXJ0eVxufSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtEYXRlVGltZUFkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlci9kYXRlLXRpbWUtYWRhcHRlci5jbGFzcyc7XG5pbXBvcnQge1xuICAgIE9XTF9EQVRFX1RJTUVfRk9STUFUUyxcbiAgICBPd2xEYXRlVGltZUZvcm1hdHNcbn0gZnJvbSAnLi9hZGFwdGVyL2RhdGUtdGltZS1mb3JtYXQuY2xhc3MnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IHR5cGUgUGlja2VyVHlwZSA9ICdib3RoJyB8ICdjYWxlbmRhcicgfCAndGltZXInO1xuXG5leHBvcnQgdHlwZSBQaWNrZXJNb2RlID0gJ3BvcHVwJyB8ICdkaWFsb2cnIHwgJ2lubGluZSc7XG5cbmV4cG9ydCB0eXBlIFNlbGVjdE1vZGUgPSAnc2luZ2xlJyB8ICdyYW5nZScgfCAncmFuZ2VGcm9tJyB8ICdyYW5nZVRvJztcblxuZXhwb3J0IGVudW0gRGF0ZVZpZXcge1xuICAgIE1PTlRIID0gJ21vbnRoJyxcbiAgICBZRUFSID0gJ3llYXInLFxuICAgIE1VTFRJX1lFQVJTID0gJ211bHRpLXllYXJzJ1xufVxuXG5leHBvcnQgdHlwZSBEYXRlVmlld1R5cGUgPSBEYXRlVmlldy5NT05USCB8IERhdGVWaWV3LllFQVIgfCBEYXRlVmlldy5NVUxUSV9ZRUFSUztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT3dsRGF0ZVRpbWU8VD4ge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc2Vjb25kJ3MgdGltZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaG93U2Vjb25kc1RpbWVyID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc2hvd1NlY29uZHNUaW1lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dTZWNvbmRzVGltZXI7XG4gICAgfVxuXG4gICAgc2V0IHNob3dTZWNvbmRzVGltZXIodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dTZWNvbmRzVGltZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0aW1lciBpcyBpbiBob3VyMTIgZm9ybWF0XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaG91cjEyVGltZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBob3VyMTJUaW1lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hvdXIxMlRpbWVyO1xuICAgIH1cblxuICAgIHNldCBob3VyMTJUaW1lcih2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faG91cjEyVGltZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdmlldyB0aGF0IHRoZSBjYWxlbmRhciBzaG91bGQgc3RhcnQgaW4uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGFydFZpZXc6IERhdGVWaWV3VHlwZSA9IERhdGVWaWV3Lk1PTlRIO1xuXG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3VsZCBvbmx5IHRoZSB5ZWFyIGFuZCBtdWx0aS15ZWFyIHZpZXdzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgeWVhck9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdWxkIG9ubHkgdGhlIG11bHRpLXllYXIgdmlldy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpeWVhck9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEhvdXJzIHRvIGNoYW5nZSBwZXIgc3RlcFxuICAgICAqL1xuICAgIHByaXZhdGUgX3N0ZXBIb3VyID0gMTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzdGVwSG91cigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcEhvdXI7XG4gICAgfVxuXG4gICAgc2V0IHN0ZXBIb3VyKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3N0ZXBIb3VyID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNaW51dGVzIHRvIGNoYW5nZSBwZXIgc3RlcFxuICAgICAqL1xuICAgIHByaXZhdGUgX3N0ZXBNaW51dGUgPSAxO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHN0ZXBNaW51dGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBNaW51dGU7XG4gICAgfVxuXG4gICAgc2V0IHN0ZXBNaW51dGUodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fc3RlcE1pbnV0ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbCwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Vjb25kcyB0byBjaGFuZ2UgcGVyIHN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zdGVwU2Vjb25kID0gMTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzdGVwU2Vjb25kKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwU2Vjb25kO1xuICAgIH1cblxuICAgIHNldCBzdGVwU2Vjb25kKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3N0ZXBTZWNvbmQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWwsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAgICAgKi9cbiAgICBwcml2YXRlIF9maXJzdERheU9mV2VlazogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XG4gICAgfVxuXG4gICAgc2V0IGZpcnN0RGF5T2ZXZWVrKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmICh2YWx1ZSA+IDYgfHwgdmFsdWUgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLl9maXJzdERheU9mV2VlayA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGhpZGUgZGF0ZXMgaW4gb3RoZXIgbW9udGhzIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIGN1cnJlbnQgbW9udGguXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGlkZU90aGVyTW9udGhzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGlkZU90aGVyTW9udGhzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZU90aGVyTW9udGhzO1xuICAgIH1cblxuICAgIHNldCBoaWRlT3RoZXJNb250aHModmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2hpZGVPdGhlck1vbnRocyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lkOiBzdHJpbmc7XG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBnZXQgc2VsZWN0ZWQoKTogVCB8IG51bGw7XG5cbiAgICBhYnN0cmFjdCBnZXQgc2VsZWN0ZWRzKCk6IFRbXSB8IG51bGw7XG5cbiAgICBhYnN0cmFjdCBnZXQgZGF0ZVRpbWVGaWx0ZXIoKTogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgZ2V0IG1heERhdGVUaW1lKCk6IFQgfCBudWxsO1xuXG4gICAgYWJzdHJhY3QgZ2V0IG1pbkRhdGVUaW1lKCk6IFQgfCBudWxsO1xuXG4gICAgYWJzdHJhY3QgZ2V0IHNlbGVjdE1vZGUoKTogU2VsZWN0TW9kZTtcblxuICAgIGFic3RyYWN0IGdldCBzdGFydEF0KCk6IFQgfCBudWxsO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGVuZEF0KCk6IFQgfCBudWxsO1xuXG4gICAgYWJzdHJhY3QgZ2V0IG9wZW5lZCgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgZ2V0IHBpY2tlck1vZGUoKTogUGlja2VyTW9kZTtcblxuICAgIGFic3RyYWN0IGdldCBwaWNrZXJUeXBlKCk6IFBpY2tlclR5cGU7XG5cbiAgICBhYnN0cmFjdCBnZXQgaXNJblNpbmdsZU1vZGUoKTogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IGdldCBpc0luUmFuZ2VNb2RlKCk6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBzZWxlY3QoZGF0ZTogVCB8IFRbXSk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCB5ZWFyU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxUPjtcblxuICAgIGFic3RyYWN0IG1vbnRoU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxUPjtcblxuICAgIGFic3RyYWN0IGRhdGVTZWxlY3RlZDogRXZlbnRFbWl0dGVyPFQ+O1xuXG4gICAgYWJzdHJhY3Qgc2VsZWN0WWVhcihub3JtYWxpemVkWWVhcjogVCk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBzZWxlY3RNb250aChub3JtYWxpemVkTW9udGg6IFQpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3Qgc2VsZWN0RGF0ZShub3JtYWxpemVkRGF0ZTogVCk6IHZvaWQ7XG5cbiAgICBnZXQgZm9ybWF0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlclR5cGUgPT09ICdib3RoJ1xuICAgICAgICAgICAgPyB0aGlzLmRhdGVUaW1lRm9ybWF0cy5mdWxsUGlja2VySW5wdXRcbiAgICAgICAgICAgIDogdGhpcy5waWNrZXJUeXBlID09PSAnY2FsZW5kYXInXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRhdGVUaW1lRm9ybWF0cy5kYXRlUGlja2VySW5wdXRcbiAgICAgICAgICAgICAgICA6IHRoaXMuZGF0ZVRpbWVGb3JtYXRzLnRpbWVQaWNrZXJJbnB1dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEYXRlIFRpbWUgQ2hlY2tlciB0byBjaGVjayBpZiB0aGUgZ2l2ZSBkYXRlVGltZSBpcyBzZWxlY3RhYmxlXG4gICAgICovXG4gICAgcHVibGljIGRhdGVUaW1lQ2hlY2tlciA9IChkYXRlVGltZTogVCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISFkYXRlVGltZSAmJlxuICAgICAgICAgICAgKCF0aGlzLmRhdGVUaW1lRmlsdGVyIHx8IHRoaXMuZGF0ZVRpbWVGaWx0ZXIoZGF0ZVRpbWUpKSAmJlxuICAgICAgICAgICAgKCF0aGlzLm1pbkRhdGVUaW1lIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuY29tcGFyZShkYXRlVGltZSwgdGhpcy5taW5EYXRlVGltZSkgPj1cbiAgICAgICAgICAgICAgICAwKSAmJlxuICAgICAgICAgICAgKCF0aGlzLm1heERhdGVUaW1lIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuY29tcGFyZShkYXRlVGltZSwgdGhpcy5tYXhEYXRlVGltZSkgPD0gMClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZGF0ZVRpbWVBZGFwdGVyOiBEYXRlVGltZUFkYXB0ZXI8VD4sXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoT1dMX0RBVEVfVElNRV9GT1JNQVRTKVxuICAgICAgICBwcm90ZWN0ZWQgZGF0ZVRpbWVGb3JtYXRzOiBPd2xEYXRlVGltZUZvcm1hdHNcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGVUaW1lQWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE93bERhdGVUaW1lUGlja2VyOiBObyBwcm92aWRlciBmb3VuZCBmb3IgRGF0ZVRpbWVBZGFwdGVyLiBZb3UgbXVzdCBpbXBvcnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgYCArXG4gICAgICAgICAgICAgICAgYG1vZHVsZXMgYXQgeW91ciBhcHBsaWNhdGlvbiByb290OiBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSwgT3dsTW9tZW50RGF0ZVRpbWVNb2R1bGUsIG9yIHByb3ZpZGUgYSBgICtcbiAgICAgICAgICAgICAgICBgY3VzdG9tIGltcGxlbWVudGF0aW9uLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZGF0ZVRpbWVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgT3dsRGF0ZVRpbWVQaWNrZXI6IE5vIHByb3ZpZGVyIGZvdW5kIGZvciBPV0xfREFURV9USU1FX0ZPUk1BVFMuIFlvdSBtdXN0IGltcG9ydCBvbmUgb2YgdGhlIGZvbGxvd2luZyBgICtcbiAgICAgICAgICAgICAgICBgbW9kdWxlcyBhdCB5b3VyIGFwcGxpY2F0aW9uIHJvb3Q6IE93bE5hdGl2ZURhdGVUaW1lTW9kdWxlLCBPd2xNb21lbnREYXRlVGltZU1vZHVsZSwgb3IgcHJvdmlkZSBhIGAgK1xuICAgICAgICAgICAgICAgIGBjdXN0b20gaW1wbGVtZW50YXRpb24uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2lkID0gYG93bC1kdC1waWNrZXItJHtuZXh0VW5pcXVlSWQrK31gO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRWYWxpZERhdGUob2JqOiBhbnkpOiBUIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVUaW1lQWRhcHRlci5pc0RhdGVJbnN0YW5jZShvYmopICYmXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQob2JqKVxuICAgICAgICAgICAgPyBvYmpcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,91 @@
1
+ /**
2
+ * date-time.module
3
+ */
4
+ import { NgModule } from '@angular/core';
5
+ import { CommonModule } from '@angular/common';
6
+ import { A11yModule } from '@angular/cdk/a11y';
7
+ import { OverlayModule } from '@angular/cdk/overlay';
8
+ import { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';
9
+ import { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, OwlDateTimeComponent } from './date-time-picker.component';
10
+ import { OwlDateTimeContainerComponent } from './date-time-picker-container.component';
11
+ import { OwlDateTimeInputDirective } from './date-time-picker-input.directive';
12
+ import { OwlDateTimeIntl } from './date-time-picker-intl.service';
13
+ import { OwlMonthViewComponent } from './calendar-month-view.component';
14
+ import { OwlCalendarBodyComponent } from './calendar-body.component';
15
+ import { OwlYearViewComponent } from './calendar-year-view.component';
16
+ import { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';
17
+ import { OwlTimerBoxComponent } from './timer-box.component';
18
+ import { OwlTimerComponent } from './timer.component';
19
+ import { NumberFixedLenPipe } from './numberedFixLen.pipe';
20
+ import { OwlCalendarComponent } from './calendar.component';
21
+ import { OwlDateTimeInlineComponent } from './date-time-inline.component';
22
+ import { OwlDialogModule } from '../dialog/dialog.module';
23
+ import { optionsProviders } from './options-provider';
24
+ import * as i0 from "@angular/core";
25
+ export class OwlDateTimeModule {
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: OwlDateTimeModule, declarations: [OwlDateTimeTriggerDirective,
28
+ OwlDateTimeInputDirective,
29
+ OwlDateTimeComponent,
30
+ OwlDateTimeContainerComponent,
31
+ OwlMultiYearViewComponent,
32
+ OwlYearViewComponent,
33
+ OwlMonthViewComponent,
34
+ OwlTimerComponent,
35
+ OwlTimerBoxComponent,
36
+ OwlCalendarComponent,
37
+ OwlCalendarBodyComponent,
38
+ NumberFixedLenPipe,
39
+ OwlDateTimeInlineComponent], imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule], exports: [OwlCalendarComponent,
40
+ OwlTimerComponent,
41
+ OwlDateTimeTriggerDirective,
42
+ OwlDateTimeInputDirective,
43
+ OwlDateTimeComponent,
44
+ OwlDateTimeInlineComponent,
45
+ OwlMultiYearViewComponent,
46
+ OwlYearViewComponent,
47
+ OwlMonthViewComponent] }); }
48
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlDateTimeModule, providers: [
49
+ OwlDateTimeIntl,
50
+ OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,
51
+ ...optionsProviders,
52
+ ], imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule] }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlDateTimeModule, decorators: [{
55
+ type: NgModule,
56
+ args: [{
57
+ imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule],
58
+ exports: [
59
+ OwlCalendarComponent,
60
+ OwlTimerComponent,
61
+ OwlDateTimeTriggerDirective,
62
+ OwlDateTimeInputDirective,
63
+ OwlDateTimeComponent,
64
+ OwlDateTimeInlineComponent,
65
+ OwlMultiYearViewComponent,
66
+ OwlYearViewComponent,
67
+ OwlMonthViewComponent,
68
+ ],
69
+ declarations: [
70
+ OwlDateTimeTriggerDirective,
71
+ OwlDateTimeInputDirective,
72
+ OwlDateTimeComponent,
73
+ OwlDateTimeContainerComponent,
74
+ OwlMultiYearViewComponent,
75
+ OwlYearViewComponent,
76
+ OwlMonthViewComponent,
77
+ OwlTimerComponent,
78
+ OwlTimerBoxComponent,
79
+ OwlCalendarComponent,
80
+ OwlCalendarBodyComponent,
81
+ NumberFixedLenPipe,
82
+ OwlDateTimeInlineComponent,
83
+ ],
84
+ providers: [
85
+ OwlDateTimeIntl,
86
+ OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,
87
+ ...optionsProviders,
88
+ ]
89
+ }]
90
+ }] });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BpY2tlci9zcmMvbGliL2RhdGUtdGltZS9kYXRlLXRpbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQW9DdEQsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBcEJ0QiwyQkFBMkI7WUFDM0IseUJBQXlCO1lBQ3pCLG9CQUFvQjtZQUNwQiw2QkFBNkI7WUFDN0IseUJBQXlCO1lBQ3pCLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLGtCQUFrQjtZQUNsQiwwQkFBMEIsYUF6QnBCLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsYUFFOUQsb0JBQW9CO1lBQ3BCLGlCQUFpQjtZQUNqQiwyQkFBMkI7WUFDM0IseUJBQXlCO1lBQ3pCLG9CQUFvQjtZQUNwQiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLG9CQUFvQjtZQUNwQixxQkFBcUI7K0dBdUJoQixpQkFBaUIsYUFOZjtZQUNQLGVBQWU7WUFDZixxQ0FBcUM7WUFDckMsR0FBRyxnQkFBZ0I7U0FDdEIsWUEvQlMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsVUFBVTs7MkZBaUN6RCxpQkFBaUI7a0JBbEM3QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQztvQkFDbkUsT0FBTyxFQUFFO3dCQUNMLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3hCO29CQUNELFlBQVksRUFBRTt3QkFDViwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQiw2QkFBNkI7d0JBQzdCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQiwwQkFBMEI7cUJBQzdCO29CQUNELFNBQVMsRUFBRTt3QkFDUCxlQUFlO3dCQUNmLHFDQUFxQzt3QkFDckMsR0FBRyxnQkFBZ0I7cUJBQ3RCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBkYXRlLXRpbWUubW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE93bERhdGVUaW1lVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPV0xfRFRQSUNLRVJfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSLCBPd2xEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3dsRGF0ZVRpbWVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPd2xEYXRlVGltZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPd2xEYXRlVGltZUludGwgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXItaW50bC5zZXJ2aWNlJztcbmltcG9ydCB7IE93bE1vbnRoVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3dsQ2FsZW5kYXJCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPd2xZZWFyVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIteWVhci12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPd2xNdWx0aVllYXJWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1tdWx0aS15ZWFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE93bFRpbWVyQm94Q29tcG9uZW50IH0gZnJvbSAnLi90aW1lci1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IE93bFRpbWVyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVyRml4ZWRMZW5QaXBlIH0gZnJvbSAnLi9udW1iZXJlZEZpeExlbi5waXBlJztcbmltcG9ydCB7IE93bENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3dsRGF0ZVRpbWVJbmxpbmVDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtdGltZS1pbmxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IE93bERpYWxvZ01vZHVsZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IG9wdGlvbnNQcm92aWRlcnMgfSBmcm9tICcuL29wdGlvbnMtcHJvdmlkZXInO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE92ZXJsYXlNb2R1bGUsIE93bERpYWxvZ01vZHVsZSwgQTExeU1vZHVsZV0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBPd2xDYWxlbmRhckNvbXBvbmVudCxcbiAgICAgICAgT3dsVGltZXJDb21wb25lbnQsXG4gICAgICAgIE93bERhdGVUaW1lVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICAgICAgT3dsRGF0ZVRpbWVJbnB1dERpcmVjdGl2ZSxcbiAgICAgICAgT3dsRGF0ZVRpbWVDb21wb25lbnQsXG4gICAgICAgIE93bERhdGVUaW1lSW5saW5lQ29tcG9uZW50LFxuICAgICAgICBPd2xNdWx0aVllYXJWaWV3Q29tcG9uZW50LFxuICAgICAgICBPd2xZZWFyVmlld0NvbXBvbmVudCxcbiAgICAgICAgT3dsTW9udGhWaWV3Q29tcG9uZW50LFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE93bERhdGVUaW1lVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICAgICAgT3dsRGF0ZVRpbWVJbnB1dERpcmVjdGl2ZSxcbiAgICAgICAgT3dsRGF0ZVRpbWVDb21wb25lbnQsXG4gICAgICAgIE93bERhdGVUaW1lQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICBPd2xNdWx0aVllYXJWaWV3Q29tcG9uZW50LFxuICAgICAgICBPd2xZZWFyVmlld0NvbXBvbmVudCxcbiAgICAgICAgT3dsTW9udGhWaWV3Q29tcG9uZW50LFxuICAgICAgICBPd2xUaW1lckNvbXBvbmVudCxcbiAgICAgICAgT3dsVGltZXJCb3hDb21wb25lbnQsXG4gICAgICAgIE93bENhbGVuZGFyQ29tcG9uZW50LFxuICAgICAgICBPd2xDYWxlbmRhckJvZHlDb21wb25lbnQsXG4gICAgICAgIE51bWJlckZpeGVkTGVuUGlwZSxcbiAgICAgICAgT3dsRGF0ZVRpbWVJbmxpbmVDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgT3dsRGF0ZVRpbWVJbnRsLFxuICAgICAgICBPV0xfRFRQSUNLRVJfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSLFxuICAgICAgICAuLi5vcHRpb25zUHJvdmlkZXJzLFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgT3dsRGF0ZVRpbWVNb2R1bGUge1xufVxuIl19
@@ -0,0 +1,28 @@
1
+ /**
2
+ * numberFixedLen.pipe
3
+ */
4
+ import { Pipe } from '@angular/core';
5
+ import * as i0 from "@angular/core";
6
+ export class NumberFixedLenPipe {
7
+ transform(num, len) {
8
+ const number = Math.floor(num);
9
+ const length = Math.floor(len);
10
+ if (num === null || isNaN(number) || isNaN(length)) {
11
+ return num;
12
+ }
13
+ let numString = number.toString();
14
+ while (numString.length < length) {
15
+ numString = '0' + numString;
16
+ }
17
+ return numString;
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NumberFixedLenPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
20
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: NumberFixedLenPipe, name: "numberFixedLen" }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NumberFixedLenPipe, decorators: [{
23
+ type: Pipe,
24
+ args: [{
25
+ name: 'numberFixedLen'
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyZWRGaXhMZW4ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BpY2tlci9zcmMvbGliL2RhdGUtdGltZS9udW1iZXJlZEZpeExlbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsU0FBUyxDQUFFLEdBQVcsRUFBRSxHQUFXO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVsQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDL0IsU0FBUyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7OEdBaEJRLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUg5QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBudW1iZXJGaXhlZExlbi5waXBlXG4gKi9cblxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ251bWJlckZpeGVkTGVuJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJGaXhlZExlblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oIG51bTogbnVtYmVyLCBsZW46IG51bWJlciApOiBhbnkge1xuICAgICAgICBjb25zdCBudW1iZXIgPSBNYXRoLmZsb29yKG51bSk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGguZmxvb3IobGVuKTtcblxuICAgICAgICBpZiAobnVtID09PSBudWxsIHx8IGlzTmFOKG51bWJlcikgfHwgaXNOYU4obGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBudW1TdHJpbmcgPSBudW1iZXIudG9TdHJpbmcoKTtcblxuICAgICAgICB3aGlsZSAobnVtU3RyaW5nLmxlbmd0aCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgbnVtU3RyaW5nID0gJzAnICsgbnVtU3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bVN0cmluZztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export function defaultOptionsFactory() {
3
+ return DefaultOptions.create();
4
+ }
5
+ export function multiYearOptionsFactory(options) {
6
+ return options.multiYear;
7
+ }
8
+ export class DefaultOptions {
9
+ static create() {
10
+ // Always return new instance
11
+ return {
12
+ multiYear: {
13
+ yearRows: 7,
14
+ yearsPerRow: 3
15
+ }
16
+ };
17
+ }
18
+ }
19
+ export class OptionsTokens {
20
+ static { this.all = new InjectionToken('All options token'); }
21
+ static { this.multiYear = new InjectionToken('Grid view options token'); }
22
+ }
23
+ export const optionsProviders = [
24
+ {
25
+ provide: OptionsTokens.all,
26
+ useFactory: defaultOptionsFactory,
27
+ },
28
+ {
29
+ provide: OptionsTokens.multiYear,
30
+ useFactory: multiYearOptionsFactory,
31
+ deps: [OptionsTokens.all],
32
+ },
33
+ ];
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BpY2tlci9zcmMvbGliL2RhdGUtdGltZS9vcHRpb25zLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFekQsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUVuQyxDQUFDO0FBQ0QsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWdCO0lBQ3BELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUMzQixDQUFDO0FBUUgsTUFBTSxPQUFPLGNBQWM7SUFDaEIsTUFBTSxDQUFDLE1BQU07UUFDaEIsNkJBQTZCO1FBQzdCLE9BQU87WUFDSCxTQUFTLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsV0FBVyxFQUFFLENBQUM7YUFDakI7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFnQixhQUFhO2FBQ2pCLFFBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBVSxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3ZELGNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBdUIseUJBQXlCLENBQUMsQ0FBQzs7QUFHbEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWU7SUFDeEM7UUFDSSxPQUFPLEVBQUUsYUFBYSxDQUFDLEdBQUc7UUFDMUIsVUFBVSxFQUFFLHFCQUFxQjtLQUNwQztJQUNEO1FBQ0ksT0FBTyxFQUFFLGFBQWEsQ0FBQyxTQUFTO1FBQ2hDLFVBQVUsRUFBRSx1QkFBdUI7UUFDbkMsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztLQUM1QjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0T3B0aW9uc0ZhY3RvcnkoKSB7XHJcbiAgICByZXR1cm4gRGVmYXVsdE9wdGlvbnMuY3JlYXRlKCk7XHJcblxyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBtdWx0aVllYXJPcHRpb25zRmFjdG9yeShvcHRpb25zOiBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tdWx0aVllYXI7XHJcbiAgfVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcclxuICAgIG11bHRpWWVhcjoge1xyXG4gICAgICAgIHllYXJzUGVyUm93OiBudW1iZXIsXHJcbiAgICAgICAgeWVhclJvd3M6IG51bWJlclxyXG4gICAgfTtcclxufVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdE9wdGlvbnMge1xyXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogT3B0aW9ucyB7XHJcbiAgICAgICAgLy8gQWx3YXlzIHJldHVybiBuZXcgaW5zdGFuY2VcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBtdWx0aVllYXI6IHtcclxuICAgICAgICAgICAgICAgIHllYXJSb3dzOiA3LFxyXG4gICAgICAgICAgICAgICAgeWVhcnNQZXJSb3c6IDNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPcHRpb25zVG9rZW5zIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWxsID0gbmV3IEluamVjdGlvblRva2VuPE9wdGlvbnM+KCdBbGwgb3B0aW9ucyB0b2tlbicpO1xyXG4gICAgcHVibGljIHN0YXRpYyBtdWx0aVllYXIgPSBuZXcgSW5qZWN0aW9uVG9rZW48T3B0aW9uc1snbXVsdGlZZWFyJ10+KCdHcmlkIHZpZXcgb3B0aW9ucyB0b2tlbicpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3B0aW9uc1Byb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcclxuICAgIHtcclxuICAgICAgICBwcm92aWRlOiBPcHRpb25zVG9rZW5zLmFsbCxcclxuICAgICAgICB1c2VGYWN0b3J5OiBkZWZhdWx0T3B0aW9uc0ZhY3RvcnksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3ZpZGU6IE9wdGlvbnNUb2tlbnMubXVsdGlZZWFyLFxyXG4gICAgICAgIHVzZUZhY3Rvcnk6IG11bHRpWWVhck9wdGlvbnNGYWN0b3J5LFxyXG4gICAgICAgIGRlcHM6IFtPcHRpb25zVG9rZW5zLmFsbF0sXHJcbiAgICB9LFxyXG5dO1xyXG4iXX0=
@@ -0,0 +1,135 @@
1
+ /**
2
+ * timer-box.component
3
+ */
4
+ import { ChangeDetectionStrategy, Component, EventEmitter, ViewChild, Input, Output } from '@angular/core';
5
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
6
+ import { Subject, Subscription } from 'rxjs';
7
+ import { debounceTime } from 'rxjs/operators';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ export class OwlTimerBoxComponent {
11
+ get displayValue() {
12
+ if (this.hasFocus) {
13
+ // Don't try to reformat the value that user is currently editing
14
+ return this.valueInput.nativeElement.value;
15
+ }
16
+ const value = this.boxValue || this.value;
17
+ if (value === null || isNaN(value)) {
18
+ return '';
19
+ }
20
+ return value < 10 ? '0' + value.toString() : value.toString();
21
+ }
22
+ get owlDTTimerBoxClass() {
23
+ return true;
24
+ }
25
+ constructor() {
26
+ this.showDivider = false;
27
+ this.step = 1;
28
+ this.valueChange = new EventEmitter();
29
+ this.inputChange = new EventEmitter();
30
+ this.inputStream = new Subject();
31
+ this.inputStreamSub = Subscription.EMPTY;
32
+ this.hasFocus = false;
33
+ this.onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);
34
+ }
35
+ ngOnInit() {
36
+ this.inputStreamSub = this.inputStream.pipe(debounceTime(750)).subscribe((val) => {
37
+ if (val) {
38
+ const inputValue = coerceNumberProperty(val, 0);
39
+ this.updateValueViaInput(inputValue);
40
+ }
41
+ });
42
+ this.bindValueInputMouseWheel();
43
+ }
44
+ ngOnDestroy() {
45
+ this.unbindValueInputMouseWheel();
46
+ this.inputStreamSub.unsubscribe();
47
+ }
48
+ upBtnClicked() {
49
+ this.updateValue(this.value + this.step);
50
+ }
51
+ downBtnClicked() {
52
+ this.updateValue(this.value - this.step);
53
+ }
54
+ handleInputChange(val) {
55
+ this.inputStream.next(val);
56
+ }
57
+ focusIn() {
58
+ this.hasFocus = true;
59
+ }
60
+ focusOut(value) {
61
+ this.hasFocus = false;
62
+ if (value) {
63
+ const inputValue = coerceNumberProperty(value, 0);
64
+ this.updateValueViaInput(inputValue);
65
+ }
66
+ }
67
+ updateValue(value) {
68
+ this.valueChange.emit(value);
69
+ }
70
+ updateValueViaInput(value) {
71
+ if (value > this.max || value < this.min) {
72
+ return;
73
+ }
74
+ this.inputChange.emit(value);
75
+ }
76
+ onValueInputMouseWheel(event) {
77
+ event = event || window.event;
78
+ const delta = event.wheelDelta || -event.deltaY || -event.detail;
79
+ if (delta > 0) {
80
+ if (!this.upBtnDisabled) {
81
+ this.upBtnClicked();
82
+ }
83
+ }
84
+ else if (delta < 0) {
85
+ if (!this.downBtnDisabled) {
86
+ this.downBtnClicked();
87
+ }
88
+ }
89
+ event.preventDefault ? event.preventDefault() : (event.returnValue = false);
90
+ }
91
+ bindValueInputMouseWheel() {
92
+ this.valueInput.nativeElement.addEventListener('onwheel' in document ? 'wheel' : 'mousewheel', this.onValueInputMouseWheelBind);
93
+ }
94
+ unbindValueInputMouseWheel() {
95
+ this.valueInput.nativeElement.removeEventListener('onwheel' in document ? 'wheel' : 'mousewheel', this.onValueInputMouseWheelBind);
96
+ }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlTimerBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: OwlTimerBoxComponent, selector: "owl-date-time-timer-box", inputs: { showDivider: "showDivider", upBtnAriaLabel: "upBtnAriaLabel", upBtnDisabled: "upBtnDisabled", downBtnAriaLabel: "downBtnAriaLabel", downBtnDisabled: "downBtnDisabled", boxValue: "boxValue", value: "value", min: "min", max: "max", step: "step", inputLabel: "inputLabel" }, outputs: { valueChange: "valueChange", inputChange: "inputChange" }, host: { properties: { "class.owl-dt-timer-box": "owlDTTimerBoxClass" } }, viewQueries: [{ propertyName: "valueInput", first: true, predicate: ["valueInput"], descendants: true, static: true }], exportAs: ["owlDateTimeTimerBox"], ngImport: i0, template: "<div *ngIf=\"showDivider\" class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"-1\"\n [disabled]=\"upBtnDisabled\"\n [attr.aria-label]=\"upBtnAriaLabel\"\n (click)=\"upBtnClicked()\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input class=\"owl-dt-timer-input\" maxlength=\"2\"\n [value]=\"displayValue\"\n (keydown.arrowup)=\"!upBtnDisabled && upBtnClicked()\"\n (keydown.arrowdown)=\"!downBtnDisabled && downBtnClicked()\"\n (input)=\"handleInputChange(valueInput.value)\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut(valueInput.value)\"\n #valueInput>\n <span class=\"owl-hidden-accessible\">{{inputLabel}}</span>\n</label>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"-1\"\n [disabled]=\"downBtnDisabled\"\n [attr.aria-label]=\"downBtnAriaLabel\"\n (click)=\"downBtnClicked()\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: OwlTimerBoxComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ exportAs: 'owlDateTimeTimerBox', selector: 'owl-date-time-timer-box', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, host: {
103
+ '[class.owl-dt-timer-box]': 'owlDTTimerBoxClass'
104
+ }, template: "<div *ngIf=\"showDivider\" class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"-1\"\n [disabled]=\"upBtnDisabled\"\n [attr.aria-label]=\"upBtnAriaLabel\"\n (click)=\"upBtnClicked()\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input class=\"owl-dt-timer-input\" maxlength=\"2\"\n [value]=\"displayValue\"\n (keydown.arrowup)=\"!upBtnDisabled && upBtnClicked()\"\n (keydown.arrowdown)=\"!downBtnDisabled && downBtnClicked()\"\n (input)=\"handleInputChange(valueInput.value)\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut(valueInput.value)\"\n #valueInput>\n <span class=\"owl-hidden-accessible\">{{inputLabel}}</span>\n</label>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"-1\"\n [disabled]=\"downBtnDisabled\"\n [attr.aria-label]=\"downBtnAriaLabel\"\n (click)=\"downBtnClicked()\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n" }]
105
+ }], ctorParameters: () => [], propDecorators: { showDivider: [{
106
+ type: Input
107
+ }], upBtnAriaLabel: [{
108
+ type: Input
109
+ }], upBtnDisabled: [{
110
+ type: Input
111
+ }], downBtnAriaLabel: [{
112
+ type: Input
113
+ }], downBtnDisabled: [{
114
+ type: Input
115
+ }], boxValue: [{
116
+ type: Input
117
+ }], value: [{
118
+ type: Input
119
+ }], min: [{
120
+ type: Input
121
+ }], max: [{
122
+ type: Input
123
+ }], step: [{
124
+ type: Input
125
+ }], inputLabel: [{
126
+ type: Input
127
+ }], valueChange: [{
128
+ type: Output
129
+ }], inputChange: [{
130
+ type: Output
131
+ }], valueInput: [{
132
+ type: ViewChild,
133
+ args: ['valueInput', { static: true }]
134
+ }] } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BpY2tlci9zcmMvbGliL2RhdGUtdGltZS90aW1lci1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGlja2VyL3NyYy9saWIvZGF0ZS10aW1lL3RpbWVyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFFWixTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWM5QyxNQUFNLE9BQU8sb0JBQW9CO0lBc0M3QixJQUFJLFlBQVk7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixpRUFBaUU7WUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUxQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENB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QUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkE0QkMsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB0aW1lci1ib3guY29tcG9uZW50XG4gKi9cblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGV4cG9ydEFzOiAnb3dsRGF0ZVRpbWVUaW1lckJveCcsXG4gICAgc2VsZWN0b3I6ICdvd2wtZGF0ZS10aW1lLXRpbWVyLWJveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWVyLWJveC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZXItYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLm93bC1kdC10aW1lci1ib3hdJzogJ293bERUVGltZXJCb3hDbGFzcydcbiAgICB9XG59KVxuXG5leHBvcnQgY2xhc3MgT3dsVGltZXJCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBzaG93RGl2aWRlciA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdXBCdG5BcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHVwQnRuRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkb3duQnRuQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkb3duQnRuRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSB3b3VsZCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGJveFxuICAgICAqIElmIGl0IGlzIG51bGwsIHRoZSBib3ggd291bGQgZGlzcGxheSBbdmFsdWVdXG4gICAgICogKi9cbiAgICBASW5wdXQoKSBib3hWYWx1ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdmFsdWU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBzdGVwID0gMTtcblxuICAgIEBJbnB1dCgpIGlucHV0TGFiZWw6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwcml2YXRlIGlucHV0U3RyZWFtID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSBpbnB1dFN0cmVhbVN1YiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIHByaXZhdGUgaGFzRm9jdXMgPSBmYWxzZTtcblxuICAgIGdldCBkaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzRm9jdXMpIHtcbiAgICAgICAgICAgIC8vIERvbid0IHRyeSB0byByZWZvcm1hdCB0aGUgdmFsdWUgdGhhdCB1c2VyIGlzIGN1cnJlbnRseSBlZGl0aW5nXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYm94VmFsdWUgfHwgdGhpcy52YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWUgPCAxMCA/ICcwJyArIHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGdldCBvd2xEVFRpbWVyQm94Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ3ZhbHVlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgdmFsdWVJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBwcml2YXRlIG9uVmFsdWVJbnB1dE1vdXNlV2hlZWxCaW5kID0gdGhpcy5vblZhbHVlSW5wdXRNb3VzZVdoZWVsLmJpbmQodGhpcyk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRTdHJlYW1TdWIgPSB0aGlzLmlucHV0U3RyZWFtLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpLnN1YnNjcmliZSgoIHZhbDogc3RyaW5nICkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWwsIDApO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVWaWFJbnB1dChpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYmluZFZhbHVlSW5wdXRNb3VzZVdoZWVsKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuYmluZFZhbHVlSW5wdXRNb3VzZVdoZWVsKCk7XG4gICAgICAgIHRoaXMuaW5wdXRTdHJlYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBCdG5DbGlja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUgKyB0aGlzLnN0ZXApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3duQnRuQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlIC0gdGhpcy5zdGVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRDaGFuZ2UodmFsOiBzdHJpbmcgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRTdHJlYW0ubmV4dCh2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0luKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPdXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCAwKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVWaWFJbnB1dChpbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFsdWUoIHZhbHVlOiBudW1iZXIgKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWx1ZVZpYUlucHV0KCB2YWx1ZTogbnVtYmVyICk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgPiB0aGlzLm1heCB8fCB2YWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVmFsdWVJbnB1dE1vdXNlV2hlZWwoIGV2ZW50OiBhbnkgKTogdm9pZCB7XG4gICAgICAgIGV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50O1xuICAgICAgICBjb25zdCBkZWx0YSA9IGV2ZW50LndoZWVsRGVsdGEgfHwgLWV2ZW50LmRlbHRhWSB8fCAtZXZlbnQuZGV0YWlsO1xuXG4gICAgICAgIGlmIChkZWx0YSA+IDApIHtcbiAgICAgICAgICBpZiAoIXRoaXMudXBCdG5EaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy51cEJ0bkNsaWNrZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVsdGEgPCAwKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmRvd25CdG5EaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kb3duQnRuQ2xpY2tlZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID8gZXZlbnQucHJldmVudERlZmF1bHQoKSA6IChldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRWYWx1ZUlucHV0TW91c2VXaGVlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdvbndoZWVsJyBpbiBkb2N1bWVudCA/ICd3aGVlbCcgOiAnbW91c2V3aGVlbCcsXG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVJbnB1dE1vdXNlV2hlZWxCaW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVuYmluZFZhbHVlSW5wdXRNb3VzZVdoZWVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlSW5wdXQubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ29ud2hlZWwnIGluIGRvY3VtZW50ID8gJ3doZWVsJyA6ICdtb3VzZXdoZWVsJyxcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUlucHV0TW91c2VXaGVlbEJpbmQpO1xuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93RGl2aWRlclwiIGNsYXNzPVwib3dsLWR0LXRpbWVyLWRpdmlkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbjxidXR0b24gY2xhc3M9XCJvd2wtZHQtY29udHJvbC1idXR0b24gb3dsLWR0LWNvbnRyb2wtYXJyb3ctYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidXBCdG5EaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidXBCdG5BcmlhTGFiZWxcIlxuICAgICAgICAoY2xpY2spPVwidXBCdG5DbGlja2VkKClcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250cm9sLWJ1dHRvbi1jb250ZW50XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICA8IS0tIDxlZGl0b3ItZm9sZCBkZXNjPVwiU1ZHIEFycm93IFVwXCI+IC0tPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICAgICAgICAgICAgIHZlcnNpb249XCIxLjFcIiB4PVwiMHB4XCIgeT1cIjBweFwiIHZpZXdCb3g9XCIwIDAgNDUxLjg0NyA0NTEuODQ2XCJcbiAgICAgICAgICAgICAgICAgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ1MS44NDcgNDUxLjg0NjtcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNDguMjkyLDEwNi40MDZsMTk0LjI4MSwxOTQuMjljMTIuMzY1LDEyLjM1OSwxMi4zNjUsMzIuMzkxLDAsNDQuNzQ0Yy0xMi4zNTQsMTIuMzU0LTMyLjM5MSwxMi4zNTQtNDQuNzQ0LDBcbiAgICAgICAgICAgICAgICAgICAgICAgIEwyMjUuOTIzLDE3My41MjlMNTQuMDE4LDM0NS40NGMtMTIuMzYsMTIuMzU0LTMyLjM5NSwxMi4zNTQtNDQuNzQ4LDBjLTEyLjM1OS0xMi4zNTQtMTIuMzU5LTMyLjM5MSwwLTQ0Ljc1TDIwMy41NTQsMTA2LjRcbiAgICAgICAgICAgICAgICAgICAgICAgIGM2LjE4LTYuMTc0LDE0LjI3MS05LjI1OSwyMi4zNjktOS4yNTlDMjM0LjAxOCw5Ny4xNDEsMjQyLjExNSwxMDAuMjMyLDI0OC4yOTIsMTA2LjQwNnpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwhLS0gPC9lZGl0b3ItZm9sZD4gLS0+XG4gICAgPC9zcGFuPlxuPC9idXR0b24+XG48bGFiZWwgY2xhc3M9XCJvd2wtZHQtdGltZXItY29udGVudFwiPlxuICAgIDxpbnB1dCBjbGFzcz1cIm93bC1kdC10aW1lci1pbnB1dFwiIG1heGxlbmd0aD1cIjJcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCIhdXBCdG5EaXNhYmxlZCAmJiB1cEJ0bkNsaWNrZWQoKVwiXG4gICAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCIhZG93bkJ0bkRpc2FibGVkICYmIGRvd25CdG5DbGlja2VkKClcIlxuICAgICAgICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXRDaGFuZ2UodmFsdWVJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXNpbik9XCJmb2N1c0luKClcIlxuICAgICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXQodmFsdWVJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAjdmFsdWVJbnB1dD5cbiAgICA8c3BhbiBjbGFzcz1cIm93bC1oaWRkZW4tYWNjZXNzaWJsZVwiPnt7aW5wdXRMYWJlbH19PC9zcGFuPlxuPC9sYWJlbD5cbjxidXR0b24gY2xhc3M9XCJvd2wtZHQtY29udHJvbC1idXR0b24gb3dsLWR0LWNvbnRyb2wtYXJyb3ctYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZG93bkJ0bkRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkb3duQnRuQXJpYUxhYmVsXCJcbiAgICAgICAgKGNsaWNrKT1cImRvd25CdG5DbGlja2VkKClcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250cm9sLWJ1dHRvbi1jb250ZW50XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICA8IS0tIDxlZGl0b3ItZm9sZCBkZXNjPVwiU1ZHIEFycm93IERvd25cIj4gLS0+XG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgICAgICAgICAgICAgdmVyc2lvbj1cIjEuMVwiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCA0NTEuODQ3IDQ1MS44NDZcIlxuICAgICAgICAgICAgICAgICBzdHlsZT1cImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDUxLjg0NyA0NTEuODQ2O1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCJcbiAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyNS45MjMsMzU0LjcwNmMtOC4wOTgsMC0xNi4xOTUtMy4wOTItMjIuMzY5LTkuMjYzTDkuMjcsMTUxLjE1N2MtMTIuMzU5LTEyLjM1OS0xMi4zNTktMzIuMzk3LDAtNDQuNzUxXG4gICAgICAgICAgICAgICAgICAgICAgICBjMTIuMzU0LTEyLjM1NCwzMi4zODgtMTIuMzU0LDQ0Ljc0OCwwbDE3MS45MDUsMTcxLjkxNWwxNzEuOTA2LTE3MS45MDljMTIuMzU5LTEyLjM1NCwzMi4zOTEtMTIuMzU0LDQ0Ljc0NCwwXG4gICAgICAgICAgICAgICAgICAgICAgICBjMTIuMzY1LDEyLjM1NCwxMi4zNjUsMzIuMzkyLDAsNDQuNzUxTDI0OC4yOTIsMzQ1LjQ0OUMyNDIuMTE1LDM1MS42MjEsMjM0LjAxOCwzNTQuNzA2LDIyNS45MjMsMzU0LjcwNnpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwhLS0gPC9lZGl0b3ItZm9sZD4gLS0+XG4gICAgPC9zcGFuPlxuPC9idXR0b24+XG4iXX0=