ngx-bootstrap 8.0.0-RC.2 → 8.0.0-RC.3

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 (73) hide show
  1. package/accordion/package.json +5 -3
  2. package/alert/package.json +4 -2
  3. package/buttons/package.json +3 -1
  4. package/carousel/package.json +4 -2
  5. package/chronos/esm2020/i18n/es-pr.mjs +74 -0
  6. package/chronos/esm2020/public_api.mjs +2 -1
  7. package/chronos/fesm2015/ngx-bootstrap-chronos.mjs +90 -17
  8. package/chronos/fesm2015/ngx-bootstrap-chronos.mjs.map +1 -1
  9. package/chronos/fesm2020/ngx-bootstrap-chronos.mjs +90 -17
  10. package/chronos/fesm2020/ngx-bootstrap-chronos.mjs.map +1 -1
  11. package/chronos/i18n/es-pr.d.ts +2 -0
  12. package/chronos/package.json +3 -1
  13. package/chronos/public_api.d.ts +1 -0
  14. package/collapse/package.json +3 -1
  15. package/component-loader/package.json +5 -3
  16. package/datepicker/esm2020/public_api.mjs +1 -9
  17. package/datepicker/esm2020/reducer/bs-datepicker.reducer.mjs +2 -2
  18. package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs +3 -1108
  19. package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs.map +1 -1
  20. package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs +3 -1107
  21. package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs.map +1 -1
  22. package/datepicker/package.json +10 -8
  23. package/datepicker/public_api.d.ts +0 -8
  24. package/dropdown/package.json +6 -4
  25. package/focus-trap/package.json +3 -1
  26. package/locale/esm2020/public_api.mjs +2 -1
  27. package/locale/fesm2015/ngx-bootstrap-locale.mjs +1 -1
  28. package/locale/fesm2020/ngx-bootstrap-locale.mjs +1 -1
  29. package/locale/package.json +4 -2
  30. package/locale/public_api.d.ts +1 -0
  31. package/mini-ngrx/package.json +3 -1
  32. package/modal/package.json +7 -5
  33. package/package.json +5 -5
  34. package/pagination/package.json +3 -1
  35. package/popover/esm2020/popover-container.component.mjs +3 -3
  36. package/popover/fesm2015/ngx-bootstrap-popover.mjs +2 -2
  37. package/popover/fesm2015/ngx-bootstrap-popover.mjs.map +1 -1
  38. package/popover/fesm2020/ngx-bootstrap-popover.mjs +2 -2
  39. package/popover/fesm2020/ngx-bootstrap-popover.mjs.map +1 -1
  40. package/popover/package.json +6 -4
  41. package/positioning/esm2020/modifiers/preventOverflow.mjs +6 -7
  42. package/positioning/esm2020/utils/computeAutoPlacement.mjs +15 -19
  43. package/positioning/fesm2015/ngx-bootstrap-positioning.mjs +21 -26
  44. package/positioning/fesm2015/ngx-bootstrap-positioning.mjs.map +1 -1
  45. package/positioning/fesm2020/ngx-bootstrap-positioning.mjs +19 -24
  46. package/positioning/fesm2020/ngx-bootstrap-positioning.mjs.map +1 -1
  47. package/positioning/package.json +4 -2
  48. package/progressbar/package.json +4 -2
  49. package/rating/package.json +3 -1
  50. package/schematics/package.json +3 -1
  51. package/schematics/utils/current_dependency_versions.json +1 -1
  52. package/sortable/package.json +3 -1
  53. package/tabs/package.json +3 -1
  54. package/timepicker/package.json +4 -2
  55. package/tooltip/package.json +6 -4
  56. package/typeahead/package.json +6 -4
  57. package/utils/package.json +3 -1
  58. package/datepicker/date-formatter.d.ts +0 -3
  59. package/datepicker/datepicker-inner.component.d.ts +0 -80
  60. package/datepicker/datepicker.component.d.ts +0 -81
  61. package/datepicker/datepicker.config.d.ts +0 -22
  62. package/datepicker/datepicker.module.d.ts +0 -15
  63. package/datepicker/daypicker.component.d.ts +0 -20
  64. package/datepicker/esm2020/date-formatter.mjs +0 -7
  65. package/datepicker/esm2020/datepicker-inner.component.mjs +0 -325
  66. package/datepicker/esm2020/datepicker.component.mjs +0 -204
  67. package/datepicker/esm2020/datepicker.config.mjs +0 -32
  68. package/datepicker/esm2020/datepicker.module.mjs +0 -48
  69. package/datepicker/esm2020/daypicker.component.mjs +0 -255
  70. package/datepicker/esm2020/monthpicker.component.mjs +0 -131
  71. package/datepicker/esm2020/yearpicker.component.mjs +0 -146
  72. package/datepicker/monthpicker.component.d.ts +0 -14
  73. package/datepicker/yearpicker.component.d.ts +0 -14
@@ -1,204 +0,0 @@
1
- import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { DatePickerInnerComponent } from './datepicker-inner.component';
4
- import { DatepickerConfig } from './datepicker.config';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./datepicker.config";
7
- import * as i2 from "./datepicker-inner.component";
8
- import * as i3 from "./daypicker.component";
9
- import * as i4 from "./monthpicker.component";
10
- import * as i5 from "./yearpicker.component";
11
- export const DATEPICKER_CONTROL_VALUE_ACCESSOR = {
12
- provide: NG_VALUE_ACCESSOR,
13
- useExisting: forwardRef(() => DatePickerComponent),
14
- multi: true
15
- };
16
- export class DatePickerComponent {
17
- constructor(config) {
18
- /** sets datepicker mode, supports: `day`, `month`, `year` */
19
- this.datepickerMode = 'day';
20
- /** if false week numbers will be hidden */
21
- this.showWeeks = true;
22
- /** number of months displayed in a single row of month picker */
23
- this.monthColLimit = 3;
24
- /** number of years displayed in a single row of year picker */
25
- this.yearColLimit = 5;
26
- this.selectionDone = new EventEmitter(undefined);
27
- /** callback to invoke when the activeDate is changed. */
28
- this.activeDateChange = new EventEmitter(undefined);
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- this.onChange = Function.prototype;
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
- this.onTouched = Function.prototype;
33
- this._now = new Date();
34
- this.config = config;
35
- this.configureOptions();
36
- }
37
- /** currently active date */
38
- get activeDate() {
39
- return this._activeDate || this._now;
40
- }
41
- set activeDate(value) {
42
- this._activeDate = value;
43
- }
44
- configureOptions() {
45
- Object.assign(this, this.config);
46
- }
47
- onUpdate(event) {
48
- this.activeDate = event;
49
- this.onChange(event);
50
- }
51
- onSelectionDone(event) {
52
- this.selectionDone.emit(event);
53
- }
54
- onActiveDateChange(event) {
55
- this.activeDateChange.emit(event);
56
- }
57
- // todo: support null value
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- writeValue(value) {
60
- if (this._datePicker?.compare(value, this._activeDate) === 0) {
61
- return;
62
- }
63
- if (value && value instanceof Date) {
64
- this.activeDate = value;
65
- this._datePicker?.select(value, false);
66
- return;
67
- }
68
- this.activeDate = value ? new Date(value) : void 0;
69
- }
70
- registerOnChange(fn) {
71
- this.onChange = fn;
72
- }
73
- registerOnTouched(fn) {
74
- this.onTouched = fn;
75
- }
76
- }
77
- DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.DatepickerConfig }], target: i0.ɵɵFactoryTarget.Component });
78
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DatePickerComponent, selector: "datepicker", inputs: { datepickerMode: "datepickerMode", initDate: "initDate", minDate: "minDate", maxDate: "maxDate", minMode: "minMode", maxMode: "maxMode", showWeeks: "showWeeks", formatDay: "formatDay", formatMonth: "formatMonth", formatYear: "formatYear", formatDayHeader: "formatDayHeader", formatDayTitle: "formatDayTitle", formatMonthTitle: "formatMonthTitle", startingDay: "startingDay", yearRange: "yearRange", onlyCurrentMonth: "onlyCurrentMonth", shortcutPropagation: "shortcutPropagation", monthColLimit: "monthColLimit", yearColLimit: "yearColLimit", customClass: "customClass", dateDisabled: "dateDisabled", dayDisabled: "dayDisabled", activeDate: "activeDate" }, outputs: { selectionDone: "selectionDone", activeDateChange: "activeDateChange" }, providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "_datePicker", first: true, predicate: DatePickerInnerComponent, descendants: true, static: true }], ngImport: i0, template: `
79
- <datepicker-inner [activeDate]="activeDate"
80
- (update)="onUpdate($event)"
81
- [locale]="config.locale"
82
- [datepickerMode]="datepickerMode"
83
- [initDate]="initDate"
84
- [minDate]="minDate"
85
- [maxDate]="maxDate"
86
- [minMode]="minMode"
87
- [maxMode]="maxMode"
88
- [showWeeks]="showWeeks"
89
- [formatDay]="formatDay"
90
- [formatMonth]="formatMonth"
91
- [formatYear]="formatYear"
92
- [formatDayHeader]="formatDayHeader"
93
- [formatDayTitle]="formatDayTitle"
94
- [formatMonthTitle]="formatMonthTitle"
95
- [startingDay]="startingDay"
96
- [yearRange]="yearRange"
97
- [customClass]="customClass"
98
- [dateDisabled]="dateDisabled"
99
- [dayDisabled]="dayDisabled"
100
- [onlyCurrentMonth]="onlyCurrentMonth"
101
- [shortcutPropagation]="shortcutPropagation"
102
- [monthColLimit]="monthColLimit"
103
- [yearColLimit]="yearColLimit"
104
- (selectionDone)="onSelectionDone($event)"
105
- (activeDateChange)="onActiveDateChange($event)">
106
- <daypicker tabindex="0"></daypicker>
107
- <monthpicker tabindex="0"></monthpicker>
108
- <yearpicker tabindex="0"></yearpicker>
109
- </datepicker-inner>
110
- `, isInline: true, components: [{ type: i2.DatePickerInnerComponent, selector: "datepicker-inner", inputs: ["locale", "datepickerMode", "startingDay", "yearRange", "minDate", "maxDate", "minMode", "maxMode", "showWeeks", "formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "onlyCurrentMonth", "shortcutPropagation", "customClass", "monthColLimit", "yearColLimit", "dateDisabled", "dayDisabled", "initDate", "activeDate"], outputs: ["selectionDone", "update", "activeDateChange"] }, { type: i3.DayPickerComponent, selector: "daypicker" }, { type: i4.MonthPickerComponent, selector: "monthpicker" }, { type: i5.YearPickerComponent, selector: "yearpicker" }] });
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatePickerComponent, decorators: [{
112
- type: Component,
113
- args: [{
114
- selector: 'datepicker',
115
- template: `
116
- <datepicker-inner [activeDate]="activeDate"
117
- (update)="onUpdate($event)"
118
- [locale]="config.locale"
119
- [datepickerMode]="datepickerMode"
120
- [initDate]="initDate"
121
- [minDate]="minDate"
122
- [maxDate]="maxDate"
123
- [minMode]="minMode"
124
- [maxMode]="maxMode"
125
- [showWeeks]="showWeeks"
126
- [formatDay]="formatDay"
127
- [formatMonth]="formatMonth"
128
- [formatYear]="formatYear"
129
- [formatDayHeader]="formatDayHeader"
130
- [formatDayTitle]="formatDayTitle"
131
- [formatMonthTitle]="formatMonthTitle"
132
- [startingDay]="startingDay"
133
- [yearRange]="yearRange"
134
- [customClass]="customClass"
135
- [dateDisabled]="dateDisabled"
136
- [dayDisabled]="dayDisabled"
137
- [onlyCurrentMonth]="onlyCurrentMonth"
138
- [shortcutPropagation]="shortcutPropagation"
139
- [monthColLimit]="monthColLimit"
140
- [yearColLimit]="yearColLimit"
141
- (selectionDone)="onSelectionDone($event)"
142
- (activeDateChange)="onActiveDateChange($event)">
143
- <daypicker tabindex="0"></daypicker>
144
- <monthpicker tabindex="0"></monthpicker>
145
- <yearpicker tabindex="0"></yearpicker>
146
- </datepicker-inner>
147
- `,
148
- providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]
149
- }]
150
- }], ctorParameters: function () { return [{ type: i1.DatepickerConfig }]; }, propDecorators: { datepickerMode: [{
151
- type: Input
152
- }], initDate: [{
153
- type: Input
154
- }], minDate: [{
155
- type: Input
156
- }], maxDate: [{
157
- type: Input
158
- }], minMode: [{
159
- type: Input
160
- }], maxMode: [{
161
- type: Input
162
- }], showWeeks: [{
163
- type: Input
164
- }], formatDay: [{
165
- type: Input
166
- }], formatMonth: [{
167
- type: Input
168
- }], formatYear: [{
169
- type: Input
170
- }], formatDayHeader: [{
171
- type: Input
172
- }], formatDayTitle: [{
173
- type: Input
174
- }], formatMonthTitle: [{
175
- type: Input
176
- }], startingDay: [{
177
- type: Input
178
- }], yearRange: [{
179
- type: Input
180
- }], onlyCurrentMonth: [{
181
- type: Input
182
- }], shortcutPropagation: [{
183
- type: Input
184
- }], monthColLimit: [{
185
- type: Input
186
- }], yearColLimit: [{
187
- type: Input
188
- }], customClass: [{
189
- type: Input
190
- }], dateDisabled: [{
191
- type: Input
192
- }], dayDisabled: [{
193
- type: Input
194
- }], activeDate: [{
195
- type: Input
196
- }], selectionDone: [{
197
- type: Output
198
- }], activeDateChange: [{
199
- type: Output
200
- }], _datePicker: [{
201
- type: ViewChild,
202
- args: [DatePickerInnerComponent, { static: true }]
203
- }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBRXZELE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFhO0lBQ3pELE9BQU8sRUFBRSxpQkFBaUI7SUFDeEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNwRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUF1Q0YsTUFBTSxPQUFPLG1CQUFtQjtJQThFOUIsWUFBWSxNQUF3QjtRQTdFcEMsNkRBQTZEO1FBQ3BELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBV2hDLDJDQUEyQztRQUNsQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBcUIxQixpRUFBaUU7UUFDeEQsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDM0IsK0RBQStEO1FBQ3RELGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBbUIxQixrQkFBYSxHQUF1QixJQUFJLFlBQVksQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUV0RSx5REFBeUQ7UUFFekQscUJBQWdCLEdBQXVCLElBQUksWUFBWSxDQUNyRCxTQUFTLENBQ1YsQ0FBQztRQUtGLDhEQUE4RDtRQUM5RCxhQUFRLEdBQVEsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUNuQyw4REFBOEQ7UUFD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QUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRixVQUFVO3NCQURiLEtBQUs7Z0JBVU4sYUFBYTtzQkFEWixNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQU1QLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVQaWNrZXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgREFURVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRlcGlja2VyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGF0ZXBpY2tlci1pbm5lciBbYWN0aXZlRGF0ZV09XCJhY3RpdmVEYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAodXBkYXRlKT1cIm9uVXBkYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwiY29uZmlnLmxvY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGVwaWNrZXJNb2RlXT1cImRhdGVwaWNrZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5pdERhdGVdPVwiaW5pdERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFttaW5Nb2RlXT1cIm1pbk1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFttYXhNb2RlXT1cIm1heE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93V2Vla3NdPVwic2hvd1dlZWtzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0RGF5XT1cImZvcm1hdERheVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdE1vbnRoXT1cImZvcm1hdE1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0WWVhcl09XCJmb3JtYXRZZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0RGF5SGVhZGVyXT1cImZvcm1hdERheUhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdERheVRpdGxlXT1cImZvcm1hdERheVRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0TW9udGhUaXRsZV09XCJmb3JtYXRNb250aFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRpbmdEYXldPVwic3RhcnRpbmdEYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFt5ZWFyUmFuZ2VdPVwieWVhclJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiY3VzdG9tQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRlRGlzYWJsZWRdPVwiZGF0ZURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF5RGlzYWJsZWRdPVwiZGF5RGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvbmx5Q3VycmVudE1vbnRoXT1cIm9ubHlDdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG9ydGN1dFByb3BhZ2F0aW9uXT1cInNob3J0Y3V0UHJvcGFnYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFttb250aENvbExpbWl0XT1cIm1vbnRoQ29sTGltaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIFt5ZWFyQ29sTGltaXRdPVwieWVhckNvbExpbWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uRG9uZSk9XCJvblNlbGVjdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZURhdGVDaGFuZ2UpPVwib25BY3RpdmVEYXRlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDxkYXlwaWNrZXIgdGFiaW5kZXg9XCIwXCI+PC9kYXlwaWNrZXI+XG4gICAgICA8bW9udGhwaWNrZXIgdGFiaW5kZXg9XCIwXCI+PC9tb250aHBpY2tlcj5cbiAgICAgIDx5ZWFycGlja2VyIHRhYmluZGV4PVwiMFwiPjwveWVhcnBpY2tlcj5cbiAgICA8L2RhdGVwaWNrZXItaW5uZXI+XG4gICAgYCxcbiAgcHJvdmlkZXJzOiBbREFURVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKiogc2V0cyBkYXRlcGlja2VyIG1vZGUsIHN1cHBvcnRzOiBgZGF5YCwgYG1vbnRoYCwgYHllYXJgICovXG4gIEBJbnB1dCgpIGRhdGVwaWNrZXJNb2RlID0gJ2RheSc7XG4gIC8qKiBkZWZhdWx0IGRhdGUgdG8gc2hvdyBpZiBgbmctbW9kZWxgIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQgKi9cbiAgQElucHV0KCkgaW5pdERhdGU/OiBEYXRlO1xuICAvKiogIG9sZGVzdCBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBsYXRlc3Qgc2VsZWN0YWJsZSBkYXRlICovXG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICAvKiogc2V0IGxvd2VyIGRhdGVwaWNrZXIgbW9kZSwgc3VwcG9ydHM6IGBkYXlgLCBgbW9udGhgLCBgeWVhcmAgKi9cbiAgQElucHV0KCkgbWluTW9kZT86IHN0cmluZztcbiAgLyoqIHNldHMgdXBwZXIgZGF0ZXBpY2tlciBtb2RlLCBzdXBwb3J0czogYGRheWAsIGBtb250aGAsIGB5ZWFyYCAqL1xuICBASW5wdXQoKSBtYXhNb2RlPzogc3RyaW5nO1xuICAvKiogaWYgZmFsc2Ugd2VlayBudW1iZXJzIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIHNob3dXZWVrcyA9IHRydWU7XG4gIC8qKiBmb3JtYXQgb2YgZGF5IGluIG1vbnRoICovXG4gIEBJbnB1dCgpIGZvcm1hdERheT86IHN0cmluZztcbiAgLyoqIGZvcm1hdCBvZiBtb250aCBpbiB5ZWFyICovXG4gIEBJbnB1dCgpIGZvcm1hdE1vbnRoPzogc3RyaW5nO1xuICAvKiogZm9ybWF0IG9mIHllYXIgaW4geWVhciByYW5nZSAqL1xuICBASW5wdXQoKSBmb3JtYXRZZWFyPzogc3RyaW5nO1xuICAvKiogZm9ybWF0IG9mIGRheSBpbiB3ZWVrIGhlYWRlciAqL1xuICBASW5wdXQoKSBmb3JtYXREYXlIZWFkZXI/OiBzdHJpbmc7XG4gIC8qKiBmb3JtYXQgb2YgdGl0bGUgd2hlbiBzZWxlY3RpbmcgZGF5ICovXG4gIEBJbnB1dCgpIGZvcm1hdERheVRpdGxlPzogc3RyaW5nO1xuICAvKiogZm9ybWF0IG9mIHRpdGxlIHdoZW4gc2VsZWN0aW5nIG1vbnRoICovXG4gIEBJbnB1dCgpIGZvcm1hdE1vbnRoVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgZnJvbSAwLTYgKDA9U3VuZGF5LCAuLi4sIDY9U2F0dXJkYXkpICovXG4gIEBJbnB1dCgpIHN0YXJ0aW5nRGF5PzogbnVtYmVyO1xuICAvKiogbnVtYmVyIG9mIHllYXJzIGRpc3BsYXllZCBpbiB5ZWFyIHNlbGVjdGlvbiAqL1xuICBASW5wdXQoKSB5ZWFyUmFuZ2U/OiBudW1iZXI7XG4gIC8qKiBpZiB0cnVlIG9ubHkgZGF0ZXMgZnJvbSB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBtb250aCB3aWxsIGJlIHNob3duICovXG4gIEBJbnB1dCgpIG9ubHlDdXJyZW50TW9udGg/OiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSBzaG9ydGN1dGBzIGV2ZW50IHByb3BhZ2F0aW9uIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgQElucHV0KCkgc2hvcnRjdXRQcm9wYWdhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBudW1iZXIgb2YgbW9udGhzIGRpc3BsYXllZCBpbiBhIHNpbmdsZSByb3cgb2YgbW9udGggcGlja2VyICovXG4gIEBJbnB1dCgpIG1vbnRoQ29sTGltaXQgPSAzO1xuICAvKiogbnVtYmVyIG9mIHllYXJzIGRpc3BsYXllZCBpbiBhIHNpbmdsZSByb3cgb2YgeWVhciBwaWNrZXIgKi9cbiAgQElucHV0KCkgeWVhckNvbExpbWl0ID0gNTtcbiAgLyoqIGFycmF5IG9mIGN1c3RvbSBjc3MgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRhcmdldGVkIGRhdGVzICovXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogeyBkYXRlOiBEYXRlOyBtb2RlOiBzdHJpbmc7IGNsYXp6OiBzdHJpbmcgfVtdO1xuICAvKiogYXJyYXkgb2YgZGlzYWJsZWQgZGF0ZXMgKi9cbiAgQElucHV0KCkgZGF0ZURpc2FibGVkPzogeyBkYXRlOiBEYXRlOyBtb2RlOiBzdHJpbmcgfVtdO1xuICAvKiogZGlzYWJsZWQgZGF5cyBvZiB0aGUgd2VlayBmcm9tIDAtNiAoMD1TdW5kYXksIC4uLiwgNj1TYXR1cmRheSkgKi9cbiAgQElucHV0KCkgZGF5RGlzYWJsZWQ/OiBudW1iZXJbXTtcblxuICAvKiogY3VycmVudGx5IGFjdGl2ZSBkYXRlICovXG4gIEBJbnB1dCgpXG4gIGdldCBhY3RpdmVEYXRlKCk6IERhdGV8dW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGF0ZSB8fCB0aGlzLl9ub3c7XG4gIH1cblxuICBzZXQgYWN0aXZlRGF0ZSh2YWx1ZTogRGF0ZXx1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9hY3RpdmVEYXRlID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgc2VsZWN0aW9uRG9uZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPih1bmRlZmluZWQpO1xuXG4gIC8qKiBjYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgYWN0aXZlRGF0ZSBpcyBjaGFuZ2VkLiAqL1xuICBAT3V0cHV0KClcbiAgYWN0aXZlRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPihcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICBAVmlld0NoaWxkKERhdGVQaWNrZXJJbm5lckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgX2RhdGVQaWNrZXI/OiBEYXRlUGlja2VySW5uZXJDb21wb25lbnQ7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgb25DaGFuZ2U6IGFueSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgb25Ub3VjaGVkOiBhbnkgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgY29uZmlnOiBEYXRlcGlja2VyQ29uZmlnO1xuXG4gIHByb3RlY3RlZCBfbm93OiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJvdGVjdGVkIF9hY3RpdmVEYXRlPzogRGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IERhdGVwaWNrZXJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmNvbmZpZ3VyZU9wdGlvbnMoKTtcbiAgfVxuXG4gIGNvbmZpZ3VyZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBvblVwZGF0ZShldmVudDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IGV2ZW50O1xuICAgIHRoaXMub25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgb25TZWxlY3Rpb25Eb25lKGV2ZW50OiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25Eb25lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25BY3RpdmVEYXRlQ2hhbmdlKGV2ZW50OiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG4gIC8vIHRvZG86IHN1cHBvcnQgbnVsbCB2YWx1ZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGF0ZVBpY2tlcj8uY29tcGFyZSh2YWx1ZSwgdGhpcy5fYWN0aXZlRGF0ZSkgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyPy5zZWxlY3QodmFsdWUsIGZhbHNlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogdm9pZCAwO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxufVxuIl19
@@ -1,32 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DatepickerConfig {
4
- constructor() {
5
- this.locale = 'en';
6
- this.datepickerMode = 'day';
7
- this.startingDay = 0;
8
- this.yearRange = 20;
9
- this.minMode = 'day';
10
- this.maxMode = 'year';
11
- this.showWeeks = true;
12
- this.formatDay = 'DD';
13
- this.formatMonth = 'MMMM';
14
- this.formatYear = 'YYYY';
15
- this.formatDayHeader = 'dd';
16
- this.formatDayTitle = 'MMMM YYYY';
17
- this.formatMonthTitle = 'YYYY';
18
- this.onlyCurrentMonth = false;
19
- this.monthColLimit = 3;
20
- this.yearColLimit = 5;
21
- this.shortcutPropagation = false;
22
- }
23
- }
24
- DatepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
- DatepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerConfig, providedIn: 'root' });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerConfig, decorators: [{
27
- type: Injectable,
28
- args: [{
29
- providedIn: 'root'
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUUsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxNQUFNLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxXQUFXLENBQUM7UUFDN0IscUJBQWdCLEdBQUcsTUFBTSxDQUFDO1FBQzFCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7S0FDN0I7OzZHQWxCWSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbmZpZyB7XG4gIGxvY2FsZSA9ICdlbic7XG4gIGRhdGVwaWNrZXJNb2RlID0gJ2RheSc7XG4gIHN0YXJ0aW5nRGF5ID0gMDtcbiAgeWVhclJhbmdlID0gMjA7XG4gIG1pbk1vZGUgPSAnZGF5JztcbiAgbWF4TW9kZSA9ICd5ZWFyJztcbiAgc2hvd1dlZWtzID0gdHJ1ZTtcbiAgZm9ybWF0RGF5ID0gJ0REJztcbiAgZm9ybWF0TW9udGggPSAnTU1NTSc7XG4gIGZvcm1hdFllYXIgPSAnWVlZWSc7XG4gIGZvcm1hdERheUhlYWRlciA9ICdkZCc7XG4gIGZvcm1hdERheVRpdGxlID0gJ01NTU0gWVlZWSc7XG4gIGZvcm1hdE1vbnRoVGl0bGUgPSAnWVlZWSc7XG4gIG9ubHlDdXJyZW50TW9udGggPSBmYWxzZTtcbiAgbW9udGhDb2xMaW1pdCA9IDM7XG4gIHllYXJDb2xMaW1pdCA9IDU7XG4gIHNob3J0Y3V0UHJvcGFnYXRpb24gPSBmYWxzZTtcbn1cbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { DatePickerInnerComponent } from './datepicker-inner.component';
5
- import { DatePickerComponent } from './datepicker.component';
6
- import { DatepickerConfig } from './datepicker.config';
7
- import { DayPickerComponent } from './daypicker.component';
8
- import { MonthPickerComponent } from './monthpicker.component';
9
- import { YearPickerComponent } from './yearpicker.component';
10
- import * as i0 from "@angular/core";
11
- export class DatepickerModule {
12
- static forRoot() {
13
- return { ngModule: DatepickerModule, providers: [DatepickerConfig] };
14
- }
15
- }
16
- DatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- DatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerModule, declarations: [DatePickerComponent,
18
- DatePickerInnerComponent,
19
- DayPickerComponent,
20
- MonthPickerComponent,
21
- YearPickerComponent], imports: [CommonModule, FormsModule], exports: [DatePickerComponent,
22
- DatePickerInnerComponent,
23
- DayPickerComponent,
24
- MonthPickerComponent,
25
- YearPickerComponent] });
26
- DatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerModule, imports: [[CommonModule, FormsModule]] });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatepickerModule, decorators: [{
28
- type: NgModule,
29
- args: [{
30
- imports: [CommonModule, FormsModule],
31
- declarations: [
32
- DatePickerComponent,
33
- DatePickerInnerComponent,
34
- DayPickerComponent,
35
- MonthPickerComponent,
36
- YearPickerComponent
37
- ],
38
- exports: [
39
- DatePickerComponent,
40
- DatePickerInnerComponent,
41
- DayPickerComponent,
42
- MonthPickerComponent,
43
- YearPickerComponent
44
- ],
45
- entryComponents: [DatePickerComponent]
46
- }]
47
- }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQW9CN0QsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7OzZHQUhVLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQWZ6QixtQkFBbUI7UUFDbkIsd0JBQXdCO1FBQ3hCLGtCQUFrQjtRQUNsQixvQkFBb0I7UUFDcEIsbUJBQW1CLGFBTlgsWUFBWSxFQUFFLFdBQVcsYUFTakMsbUJBQW1CO1FBQ25CLHdCQUF3QjtRQUN4QixrQkFBa0I7UUFDbEIsb0JBQW9CO1FBQ3BCLG1CQUFtQjs4R0FJVixnQkFBZ0IsWUFqQmxCLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQzsyRkFpQnpCLGdCQUFnQjtrQkFsQjVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztvQkFDcEMsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixtQkFBbUI7cUJBQ3BCO29CQUNELGVBQWUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IERhdGVQaWNrZXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb25maWcnO1xuaW1wb3J0IHsgRGF5UGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXlwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vbnRoUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9tb250aHBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgWWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4veWVhcnBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERhdGVQaWNrZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlcklubmVyQ29tcG9uZW50LFxuICAgIERheVBpY2tlckNvbXBvbmVudCxcbiAgICBNb250aFBpY2tlckNvbXBvbmVudCxcbiAgICBZZWFyUGlja2VyQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LFxuICAgIERhdGVQaWNrZXJJbm5lckNvbXBvbmVudCxcbiAgICBEYXlQaWNrZXJDb21wb25lbnQsXG4gICAgTW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgWWVhclBpY2tlckNvbXBvbmVudFxuICBdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtEYXRlUGlja2VyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEYXRlcGlja2VyTW9kdWxlPiB7XG4gICAgcmV0dXJuIHsgbmdNb2R1bGU6IERhdGVwaWNrZXJNb2R1bGUsIHByb3ZpZGVyczogW0RhdGVwaWNrZXJDb25maWddIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,255 +0,0 @@
1
- // @deprecated
2
- import { Component } from '@angular/core';
3
- import { isBs3 } from 'ngx-bootstrap/utils';
4
- import { DatePickerInnerComponent } from './datepicker-inner.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./datepicker-inner.component";
7
- import * as i2 from "@angular/common";
8
- export class DayPickerComponent {
9
- constructor(datePicker) {
10
- this.labels = [];
11
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
- // @ts-ignore
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- this.rows = [];
15
- this.weekNumbers = [];
16
- this.datePicker = datePicker;
17
- }
18
- get isBs4() {
19
- return !isBs3();
20
- }
21
- /*protected getDaysInMonth(year:number, month:number) {
22
- return ((month === 1) && (year % 4 === 0) &&
23
- ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];
24
- }*/
25
- ngOnInit() {
26
- // eslint-disable-next-line @typescript-eslint/no-this-alias
27
- const self = this;
28
- this.datePicker.stepDay = { months: 1 };
29
- // todo valorkin fix
30
- this.datePicker.setRefreshViewHandler(function () {
31
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
32
- // @ts-ignore
33
- // eslint-disable-next-line @typescript-eslint/no-this-alias
34
- const that = this;
35
- const year = that.activeDate.getFullYear();
36
- const month = that.activeDate.getMonth();
37
- const firstDayOfMonth = new Date(year, month, 1);
38
- const difference = that.startingDay - firstDayOfMonth.getDay();
39
- const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;
40
- const firstDate = new Date(firstDayOfMonth.getTime());
41
- if (numDisplayedFromPreviousMonth > 0) {
42
- firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
43
- }
44
- // 42 is the number of days on a six-week calendar
45
- const _days = self.getDates(firstDate, 42);
46
- const days = [];
47
- for (let i = 0; i < 42; i++) {
48
- const _dateObject = that.createDateObject(_days[i], that.formatDay);
49
- _dateObject.secondary = _days[i].getMonth() !== month;
50
- _dateObject.uid = that.uniqueId + '-' + i;
51
- days[i] = _dateObject;
52
- }
53
- self.labels = [];
54
- for (let j = 0; j < 7; j++) {
55
- self.labels[j] = {};
56
- self.labels[j].abbr = that.dateFilter(days[j].date, that.formatDayHeader);
57
- self.labels[j].full = that.dateFilter(days[j].date, 'EEEE');
58
- }
59
- self.title = that.dateFilter(that.activeDate, that.formatDayTitle);
60
- self.rows = that.split(days, 7);
61
- if (that.showWeeks) {
62
- self.weekNumbers = [];
63
- const thursdayIndex = (4 + 7 - that.startingDay) % 7;
64
- const numWeeks = self.rows.length;
65
- for (let curWeek = 0; curWeek < numWeeks; curWeek++) {
66
- const _date = self.rows[curWeek][thursdayIndex].date;
67
- if (_date) {
68
- self.weekNumbers.push(self.getISO8601WeekNumber(_date));
69
- }
70
- }
71
- }
72
- }, 'day');
73
- this.datePicker.setCompareHandler(function (date1, date2) {
74
- const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
75
- const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
76
- return d1.getTime() - d2.getTime();
77
- }, 'day');
78
- this.datePicker.refreshView();
79
- }
80
- getDates(startDate, n) {
81
- const dates = new Array(n);
82
- let current = new Date(startDate.getTime());
83
- let i = 0;
84
- let date;
85
- while (i < n) {
86
- date = new Date(current.getTime());
87
- date = this.datePicker.fixTimeZone(date);
88
- dates[i++] = date;
89
- current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
90
- }
91
- return dates;
92
- }
93
- getISO8601WeekNumber(date) {
94
- const checkDate = new Date(date.getTime());
95
- // Thursday
96
- checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
97
- const time = checkDate.getTime();
98
- // Compare with Jan 1
99
- checkDate.setMonth(0);
100
- checkDate.setDate(1);
101
- return (Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1);
102
- }
103
- }
104
- DayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DayPickerComponent, deps: [{ token: i1.DatePickerInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
105
- DayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DayPickerComponent, selector: "daypicker", ngImport: i0, template: `
106
- <table *ngIf="datePicker.datepickerMode === 'day'" role="grid" [attr.aria-labelledby]="datePicker.uniqueId + '-title'" aria-activedescendant="activeDateId">
107
- <thead>
108
- <tr>
109
- <th>
110
- <button *ngIf="!isBs4"
111
- type="button"
112
- class="btn btn-default btn-secondary btn-sm pull-left float-left"
113
- (click)="datePicker.move(-1)"
114
- tabindex="-1">‹</button>
115
- <button *ngIf="isBs4"
116
- type="button"
117
- class="btn btn-default btn-secondary btn-sm pull-left float-left"
118
- (click)="datePicker.move(-1)"
119
- tabindex="-1">&lt;</button>
120
- </th>
121
- <th [attr.colspan]="5 + (datePicker.showWeeks ? 1 : 0)">
122
- <button [id]="datePicker.uniqueId + '-title'"
123
- type="button" class="btn btn-default btn-secondary btn-sm"
124
- (click)="datePicker.toggleMode(0)"
125
- [disabled]="datePicker.datepickerMode === datePicker.maxMode"
126
- [ngClass]="{disabled: datePicker.datepickerMode === datePicker.maxMode}" tabindex="-1" style="width:100%;">
127
- <strong>{{ title }}</strong>
128
- </button>
129
- </th>
130
- <th>
131
- <button *ngIf="!isBs4"
132
- type="button"
133
- class="btn btn-default btn-secondary btn-sm pull-right float-right"
134
- (click)="datePicker.move(1)"
135
- tabindex="-1">›</button>
136
- <button *ngIf="isBs4"
137
- type="button"
138
- class="btn btn-default btn-secondary btn-sm pull-right float-right"
139
- (click)="datePicker.move(1)"
140
- tabindex="-1">&gt;
141
- </button>
142
- </th>
143
- </tr>
144
- <tr>
145
- <th *ngIf="datePicker.showWeeks"></th>
146
- <th *ngFor="let labelz of labels" class="text-center">
147
- <small aria-label="labelz.full"><b>{{ labelz.abbr }}</b></small>
148
- </th>
149
- </tr>
150
- </thead>
151
- <tbody>
152
- <ng-template ngFor [ngForOf]="rows" let-rowz="$implicit" let-index="index">
153
- <tr *ngIf="!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)">
154
- <td *ngIf="datePicker.showWeeks" class="h6" class="text-center">
155
- <em>{{ weekNumbers[index] }}</em>
156
- </td>
157
- <td *ngFor="let dtz of rowz" class="text-center" role="gridcell" [id]="dtz.uid">
158
- <button type="button" style="min-width:100%;" class="btn btn-sm {{dtz.customClass}}"
159
- *ngIf="!(datePicker.onlyCurrentMonth && dtz.secondary)"
160
- [ngClass]="{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}"
161
- [disabled]="dtz.disabled"
162
- (click)="datePicker.select(dtz.date)" tabindex="-1">
163
- <span [ngClass]="{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}">{{ dtz.label }}</span>
164
- </button>
165
- </td>
166
- </tr>
167
- </ng-template>
168
- </tbody>
169
- </table>
170
- `, isInline: true, styles: [":host .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}:host .btn-info .text-muted{color:#292b2c!important}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DayPickerComponent, decorators: [{
172
- type: Component,
173
- args: [{
174
- selector: 'daypicker',
175
- template: `
176
- <table *ngIf="datePicker.datepickerMode === 'day'" role="grid" [attr.aria-labelledby]="datePicker.uniqueId + '-title'" aria-activedescendant="activeDateId">
177
- <thead>
178
- <tr>
179
- <th>
180
- <button *ngIf="!isBs4"
181
- type="button"
182
- class="btn btn-default btn-secondary btn-sm pull-left float-left"
183
- (click)="datePicker.move(-1)"
184
- tabindex="-1">‹</button>
185
- <button *ngIf="isBs4"
186
- type="button"
187
- class="btn btn-default btn-secondary btn-sm pull-left float-left"
188
- (click)="datePicker.move(-1)"
189
- tabindex="-1">&lt;</button>
190
- </th>
191
- <th [attr.colspan]="5 + (datePicker.showWeeks ? 1 : 0)">
192
- <button [id]="datePicker.uniqueId + '-title'"
193
- type="button" class="btn btn-default btn-secondary btn-sm"
194
- (click)="datePicker.toggleMode(0)"
195
- [disabled]="datePicker.datepickerMode === datePicker.maxMode"
196
- [ngClass]="{disabled: datePicker.datepickerMode === datePicker.maxMode}" tabindex="-1" style="width:100%;">
197
- <strong>{{ title }}</strong>
198
- </button>
199
- </th>
200
- <th>
201
- <button *ngIf="!isBs4"
202
- type="button"
203
- class="btn btn-default btn-secondary btn-sm pull-right float-right"
204
- (click)="datePicker.move(1)"
205
- tabindex="-1">›</button>
206
- <button *ngIf="isBs4"
207
- type="button"
208
- class="btn btn-default btn-secondary btn-sm pull-right float-right"
209
- (click)="datePicker.move(1)"
210
- tabindex="-1">&gt;
211
- </button>
212
- </th>
213
- </tr>
214
- <tr>
215
- <th *ngIf="datePicker.showWeeks"></th>
216
- <th *ngFor="let labelz of labels" class="text-center">
217
- <small aria-label="labelz.full"><b>{{ labelz.abbr }}</b></small>
218
- </th>
219
- </tr>
220
- </thead>
221
- <tbody>
222
- <ng-template ngFor [ngForOf]="rows" let-rowz="$implicit" let-index="index">
223
- <tr *ngIf="!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)">
224
- <td *ngIf="datePicker.showWeeks" class="h6" class="text-center">
225
- <em>{{ weekNumbers[index] }}</em>
226
- </td>
227
- <td *ngFor="let dtz of rowz" class="text-center" role="gridcell" [id]="dtz.uid">
228
- <button type="button" style="min-width:100%;" class="btn btn-sm {{dtz.customClass}}"
229
- *ngIf="!(datePicker.onlyCurrentMonth && dtz.secondary)"
230
- [ngClass]="{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}"
231
- [disabled]="dtz.disabled"
232
- (click)="datePicker.select(dtz.date)" tabindex="-1">
233
- <span [ngClass]="{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}">{{ dtz.label }}</span>
234
- </button>
235
- </td>
236
- </tr>
237
- </ng-template>
238
- </tbody>
239
- </table>
240
- `,
241
- styles: [
242
- `
243
- :host .btn-secondary {
244
- color: #292b2c;
245
- background-color: #fff;
246
- border-color: #ccc;
247
- }
248
- :host .btn-info .text-muted {
249
- color: #292b2c !important;
250
- }
251
- `
252
- ]
253
- }]
254
- }], ctorParameters: function () { return [{ type: i1.DatePickerInnerComponent }]; } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlcGlja2VyL2RheXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBbUZ4RSxNQUFNLE9BQU8sa0JBQWtCO0lBVTdCLFlBQVksVUFBb0M7UUFUaEQsV0FBTSxHQUF1QyxFQUFFLENBQUM7UUFFaEQsNkRBQTZEO1FBQzdELGFBQWE7UUFDYiw4REFBOEQ7UUFDOUQsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBSXpCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7UUFHSTtJQUNKLFFBQVE7UUFDTiw0REFBNEQ7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRXhDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDLDZEQUE2RDtZQUM3RCxhQUFhO1lBQ2IsNERBQTREO1lBQzVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztZQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxF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USxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRVQ7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOOzs7Ozs7Ozs7R0FTRDtxQkFDQTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBkZXByZWNhdGVkXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNCczMgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3V0aWxzJztcbmltcG9ydCB7IERhdGVQaWNrZXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1pbm5lci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXlwaWNrZXInLFxuICB0ZW1wbGF0ZTogYFxuPHRhYmxlICpuZ0lmPVwiZGF0ZVBpY2tlci5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheSdcIiByb2xlPVwiZ3JpZFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJkYXRlUGlja2VyLnVuaXF1ZUlkICsgJy10aXRsZSdcIiBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQ9XCJhY3RpdmVEYXRlSWRcIj5cbiAgPHRoZWFkPlxuICAgIDx0cj5cbiAgICAgIDx0aD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0JzNFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNlY29uZGFyeSBidG4tc20gcHVsbC1sZWZ0IGZsb2F0LWxlZnRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm1vdmUoLTEpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+4oC5PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJpc0JzNFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNlY29uZGFyeSBidG4tc20gcHVsbC1sZWZ0IGZsb2F0LWxlZnRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm1vdmUoLTEpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+Jmx0OzwvYnV0dG9uPlxuICAgICAgPC90aD5cbiAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cIjUgKyAoZGF0ZVBpY2tlci5zaG93V2Vla3MgPyAxIDogMClcIj5cbiAgICAgICAgPGJ1dHRvbiBbaWRdPVwiZGF0ZVBpY2tlci51bmlxdWVJZCArICctdGl0bGUnXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNlY29uZGFyeSBidG4tc21cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLnRvZ2dsZU1vZGUoMClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRlUGlja2VyLmRhdGVwaWNrZXJNb2RlID09PSBkYXRlUGlja2VyLm1heE1vZGVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogZGF0ZVBpY2tlci5kYXRlcGlja2VyTW9kZSA9PT0gZGF0ZVBpY2tlci5tYXhNb2RlfVwiIHRhYmluZGV4PVwiLTFcIiBzdHlsZT1cIndpZHRoOjEwMCU7XCI+XG4gICAgICAgICAgPHN0cm9uZz57eyB0aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGg+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNCczRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zZWNvbmRhcnkgYnRuLXNtIHB1bGwtcmlnaHQgZmxvYXQtcmlnaHRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm1vdmUoMSlcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj7igLo8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzQnM0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc2Vjb25kYXJ5IGJ0bi1zbSBwdWxsLXJpZ2h0IGZsb2F0LXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5tb3ZlKDEpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+Jmd0O1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgICA8dHI+XG4gICAgICA8dGggKm5nSWY9XCJkYXRlUGlja2VyLnNob3dXZWVrc1wiPjwvdGg+XG4gICAgICA8dGggKm5nRm9yPVwibGV0IGxhYmVseiBvZiBsYWJlbHNcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgIDxzbWFsbCBhcmlhLWxhYmVsPVwibGFiZWx6LmZ1bGxcIj48Yj57eyBsYWJlbHouYWJiciB9fTwvYj48L3NtYWxsPlxuICAgICAgPC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cInJvd3NcIiBsZXQtcm93ej1cIiRpbXBsaWNpdFwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgICA8dHIgKm5nSWY9XCIhKGRhdGVQaWNrZXIub25seUN1cnJlbnRNb250aCAmJiByb3d6WzBdLnNlY29uZGFyeSAmJiByb3d6WzZdLnNlY29uZGFyeSlcIj5cbiAgICAgICAgPHRkICpuZ0lmPVwiZGF0ZVBpY2tlci5zaG93V2Vla3NcIiBjbGFzcz1cImg2XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxlbT57eyB3ZWVrTnVtYmVyc1tpbmRleF0gfX08L2VtPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGR0eiBvZiByb3d6XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHJvbGU9XCJncmlkY2VsbFwiIFtpZF09XCJkdHoudWlkXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6MTAwJTtcIiBjbGFzcz1cImJ0biBidG4tc20ge3tkdHouY3VzdG9tQ2xhc3N9fVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiEoZGF0ZVBpY2tlci5vbmx5Q3VycmVudE1vbnRoICYmIGR0ei5zZWNvbmRhcnkpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYnRuLXNlY29uZGFyeSc6IGlzQnM0ICYmICFkdHouc2VsZWN0ZWQgJiYgIWRhdGVQaWNrZXIuaXNBY3RpdmUoZHR6KSwgJ2J0bi1pbmZvJzogZHR6LnNlbGVjdGVkLCBkaXNhYmxlZDogZHR6LmRpc2FibGVkLCBhY3RpdmU6ICFpc0JzNCAmJiBkYXRlUGlja2VyLmlzQWN0aXZlKGR0eiksICdidG4tZGVmYXVsdCc6ICFpc0JzNH1cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImR0ei5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5zZWxlY3QoZHR6LmRhdGUpXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyd0ZXh0LW11dGVkJzogZHR6LnNlY29uZGFyeSB8fCBkdHouY3VycmVudCwgJ3RleHQtaW5mbyc6ICFpc0JzNCAmJiBkdHouY3VycmVudH1cIj57eyBkdHoubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgOmhvc3QgLmJ0bi1zZWNvbmRhcnkge1xuICAgICAgY29sb3I6ICMyOTJiMmM7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjY2NjO1xuICAgIH1cbiAgICA6aG9zdCAuYnRuLWluZm8gLnRleHQtbXV0ZWQge1xuICAgICAgY29sb3I6ICMyOTJiMmMgIWltcG9ydGFudDtcbiAgICB9XG4gIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXlQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBsYWJlbHM6IHthYmJyPzogdW5rbm93biwgZnVsbD86IHVua25vd259W10gPSBbXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByb3dzOiBhbnkgPSBbXTtcbiAgd2Vla051bWJlcnM6IG51bWJlcltdID0gW107XG4gIGRhdGVQaWNrZXI6IERhdGVQaWNrZXJJbm5lckNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihkYXRlUGlja2VyOiBEYXRlUGlja2VySW5uZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXIgPSBkYXRlUGlja2VyO1xuICB9XG5cbiAgZ2V0IGlzQnM0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNCczMoKTtcbiAgfVxuXG4gIC8qcHJvdGVjdGVkIGdldERheXNJbk1vbnRoKHllYXI6bnVtYmVyLCBtb250aDpudW1iZXIpIHtcbiAgIHJldHVybiAoKG1vbnRoID09PSAxKSAmJiAoeWVhciAlIDQgPT09IDApICYmXG4gICAoKHllYXIgJSAxMDAgIT09IDApIHx8ICh5ZWFyICUgNDAwID09PSAwKSkpID8gMjkgOiBEQVlTX0lOX01PTlRIW21vbnRoXTtcbiAgIH0qL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuZGF0ZVBpY2tlci5zdGVwRGF5ID0geyBtb250aHM6IDEgfTtcblxuICAgIC8vIHRvZG8gdmFsb3JraW4gZml4XG4gICAgdGhpcy5kYXRlUGlja2VyLnNldFJlZnJlc2hWaWV3SGFuZGxlcihmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICBjb25zdCB5ZWFyID0gdGhhdC5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBtb250aCA9IHRoYXQuYWN0aXZlRGF0ZS5nZXRNb250aCgpO1xuICAgICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoYXQuc3RhcnRpbmdEYXkgLSBmaXJzdERheU9mTW9udGguZ2V0RGF5KCk7XG4gICAgICBjb25zdCBudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA9XG4gICAgICAgIGRpZmZlcmVuY2UgPiAwID8gNyAtIGRpZmZlcmVuY2UgOiAtZGlmZmVyZW5jZTtcbiAgICAgIGNvbnN0IGZpcnN0RGF0ZSA9IG5ldyBEYXRlKGZpcnN0RGF5T2ZNb250aC5nZXRUaW1lKCkpO1xuXG4gICAgICBpZiAobnVtRGlzcGxheWVkRnJvbVByZXZpb3VzTW9udGggPiAwKSB7XG4gICAgICAgIGZpcnN0RGF0ZS5zZXREYXRlKC1udW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCArIDEpO1xuICAgICAgfVxuXG4gICAgICAvLyA0MiBpcyB0aGUgbnVtYmVyIG9mIGRheXMgb24gYSBzaXgtd2VlayBjYWxlbmRhclxuICAgICAgY29uc3QgX2RheXM6IERhdGVbXSA9IHNlbGYuZ2V0RGF0ZXMoZmlyc3REYXRlLCA0Mik7XG4gICAgICBjb25zdCBkYXlzID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQyOyBpKyspIHtcbiAgICAgICAgY29uc3QgX2RhdGVPYmplY3QgPSB0aGF0LmNyZWF0ZURhdGVPYmplY3QoX2RheXNbaV0sIHRoYXQuZm9ybWF0RGF5KTtcbiAgICAgICAgX2RhdGVPYmplY3Quc2Vjb25kYXJ5ID0gX2RheXNbaV0uZ2V0TW9udGgoKSAhPT0gbW9udGg7XG4gICAgICAgIF9kYXRlT2JqZWN0LnVpZCA9IHRoYXQudW5pcXVlSWQgKyAnLScgKyBpO1xuICAgICAgICBkYXlzW2ldID0gX2RhdGVPYmplY3Q7XG4gICAgICB9XG5cbiAgICAgIHNlbGYubGFiZWxzID0gW107XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgICBzZWxmLmxhYmVsc1tqXSA9IHt9O1xuICAgICAgICBzZWxmLmxhYmVsc1tqXS5hYmJyID0gdGhhdC5kYXRlRmlsdGVyKFxuICAgICAgICAgIGRheXNbal0uZGF0ZSxcbiAgICAgICAgICB0aGF0LmZvcm1hdERheUhlYWRlclxuICAgICAgICApO1xuICAgICAgICBzZWxmLmxhYmVsc1tqXS5mdWxsID0gdGhhdC5kYXRlRmlsdGVyKGRheXNbal0uZGF0ZSwgJ0VFRUUnKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi50aXRsZSA9IHRoYXQuZGF0ZUZpbHRlcih0aGF0LmFjdGl2ZURhdGUsIHRoYXQuZm9ybWF0RGF5VGl0bGUpO1xuICAgICAgc2VsZi5yb3dzID0gdGhhdC5zcGxpdChkYXlzLCA3KTtcblxuICAgICAgaWYgKHRoYXQuc2hvd1dlZWtzKSB7XG4gICAgICAgIHNlbGYud2Vla051bWJlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdGh1cnNkYXlJbmRleCA9ICg0ICsgNyAtIHRoYXQuc3RhcnRpbmdEYXkpICUgNztcbiAgICAgICAgY29uc3QgbnVtV2Vla3MgPSBzZWxmLnJvd3MubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBjdXJXZWVrID0gMDsgY3VyV2VlayA8IG51bVdlZWtzOyBjdXJXZWVrKyspIHtcbiAgICAgICAgICBjb25zdCBfZGF0ZSA9IHNlbGYucm93c1tjdXJXZWVrXVt0aHVyc2RheUluZGV4XS5kYXRlO1xuICAgICAgICAgIGlmIChfZGF0ZSkge1xuICAgICAgICAgICAgc2VsZi53ZWVrTnVtYmVycy5wdXNoKHNlbGYuZ2V0SVNPODYwMVdlZWtOdW1iZXIoX2RhdGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVQaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIoZnVuY3Rpb24oXG4gICAgICBkYXRlMTogRGF0ZSxcbiAgICAgIGRhdGUyOiBEYXRlXG4gICAgKTogbnVtYmVyIHtcbiAgICAgIGNvbnN0IGQxID0gbmV3IERhdGUoZGF0ZTEuZ2V0RnVsbFllYXIoKSwgZGF0ZTEuZ2V0TW9udGgoKSwgZGF0ZTEuZ2V0RGF0ZSgpKTtcbiAgICAgIGNvbnN0IGQyID0gbmV3IERhdGUoZGF0ZTIuZ2V0RnVsbFllYXIoKSwgZGF0ZTIuZ2V0TW9udGgoKSwgZGF0ZTIuZ2V0RGF0ZSgpKTtcbiAgICAgIHJldHVybiBkMS5nZXRUaW1lKCkgLSBkMi5nZXRUaW1lKCk7XG4gICAgfSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlUGlja2VyLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBuOiBudW1iZXIpOiBEYXRlW10ge1xuICAgIGNvbnN0IGRhdGVzOiBEYXRlW10gPSBuZXcgQXJyYXkobik7XG4gICAgbGV0IGN1cnJlbnQgPSBuZXcgRGF0ZShzdGFydERhdGUuZ2V0VGltZSgpKTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGRhdGU6IERhdGU7XG4gICAgd2hpbGUgKGkgPCBuKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoY3VycmVudC5nZXRUaW1lKCkpO1xuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZVBpY2tlci5maXhUaW1lWm9uZShkYXRlKTtcbiAgICAgIGRhdGVzW2krK10gPSBkYXRlO1xuICAgICAgY3VycmVudCA9IG5ldyBEYXRlKFxuICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgZGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SVNPODYwMVdlZWtOdW1iZXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgY2hlY2tEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICAgIC8vIFRodXJzZGF5XG4gICAgY2hlY2tEYXRlLnNldERhdGUoY2hlY2tEYXRlLmdldERhdGUoKSArIDQgLSAoY2hlY2tEYXRlLmdldERheSgpIHx8IDcpKTtcbiAgICBjb25zdCB0aW1lID0gY2hlY2tEYXRlLmdldFRpbWUoKTtcbiAgICAvLyBDb21wYXJlIHdpdGggSmFuIDFcbiAgICBjaGVja0RhdGUuc2V0TW9udGgoMCk7XG4gICAgY2hlY2tEYXRlLnNldERhdGUoMSk7XG4gICAgcmV0dXJuIChcbiAgICAgIE1hdGguZmxvb3IoTWF0aC5yb3VuZCgodGltZSAtIGNoZWNrRGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApIC8gNykgKyAxXG4gICAgKTtcbiAgfVxuXG4gIC8vIHRvZG86IGtleSBldmVudHMgaW1wbGVtZW50YXRpb25cbn1cbiJdfQ==