mis-crystal-design-system 3.1.13 → 3.1.14

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 (34) hide show
  1. package/bundles/mis-crystal-design-system-dynamic-form.umd.js +2 -2
  2. package/bundles/mis-crystal-design-system-dynamic-form.umd.js.map +1 -1
  3. package/bundles/mis-crystal-design-system-dynamic-form.umd.min.js +1 -1
  4. package/bundles/mis-crystal-design-system-dynamic-form.umd.min.js.map +1 -1
  5. package/bundles/mis-crystal-design-system-specificdatepicker.umd.js +906 -0
  6. package/bundles/mis-crystal-design-system-specificdatepicker.umd.js.map +1 -0
  7. package/bundles/mis-crystal-design-system-specificdatepicker.umd.min.js +16 -0
  8. package/bundles/mis-crystal-design-system-specificdatepicker.umd.min.js.map +1 -0
  9. package/esm2015/dynamic-form/dynamic-form.component.js +3 -3
  10. package/esm2015/specificdatepicker/daterangepicker-constants.js +5 -0
  11. package/esm2015/specificdatepicker/index.js +2 -0
  12. package/esm2015/specificdatepicker/mis-crystal-design-system-specificdatepicker.js +7 -0
  13. package/esm2015/specificdatepicker/models/sdp-config.model.js +2 -0
  14. package/esm2015/specificdatepicker/public_api.js +3 -0
  15. package/esm2015/specificdatepicker/specificdatepicker.module.js +18 -0
  16. package/esm2015/specificdatepicker/tz-sdp-container/tz-sdp-container.component.js +308 -0
  17. package/esm2015/specificdatepicker/tz-specificdatepicker.directive.js +154 -0
  18. package/esm2015/specificdatepicker/utils/index.js +45 -0
  19. package/fesm2015/mis-crystal-design-system-dynamic-form.js +2 -2
  20. package/fesm2015/mis-crystal-design-system-dynamic-form.js.map +1 -1
  21. package/fesm2015/mis-crystal-design-system-specificdatepicker.js +526 -0
  22. package/fesm2015/mis-crystal-design-system-specificdatepicker.js.map +1 -0
  23. package/package.json +1 -1
  24. package/specificdatepicker/daterangepicker-constants.d.ts +4 -0
  25. package/specificdatepicker/index.d.ts +1 -0
  26. package/specificdatepicker/mis-crystal-design-system-specificdatepicker.d.ts +7 -0
  27. package/specificdatepicker/mis-crystal-design-system-specificdatepicker.metadata.json +1 -0
  28. package/specificdatepicker/models/sdp-config.model.d.ts +47 -0
  29. package/specificdatepicker/package.json +11 -0
  30. package/specificdatepicker/public_api.d.ts +3 -0
  31. package/specificdatepicker/specificdatepicker.module.d.ts +2 -0
  32. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +39 -0
  33. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +37 -0
  34. package/specificdatepicker/utils/index.d.ts +2 -0
@@ -0,0 +1,308 @@
1
+ import { Component, Inject } from "@angular/core";
2
+ import { CONTAINER_DATA, DATE_FORMAT } from "../daterangepicker-constants";
3
+ import { parseZone } from "moment-timezone";
4
+ import { getMonth } from "../utils";
5
+ import { ToastService } from "mis-crystal-design-system/toast";
6
+ export class TzDrpContainerComponent {
7
+ constructor(data, toast) {
8
+ var _a, _b, _c, _d, _e, _f;
9
+ this.toast = toast;
10
+ this.parseZoneInstance = (...args) => {
11
+ return parseZone(...args);
12
+ };
13
+ this.rawWeekDays = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
14
+ this.weekDays = [];
15
+ this.currentMonthDates = [];
16
+ this.nextMonthDates = [];
17
+ this.isPreviousMonthDisabled = false;
18
+ this.isNextMonthDisabled = false;
19
+ this.selectionStarted = false;
20
+ this.isDatesValid = false;
21
+ this.today = new Date();
22
+ this.todayMonthNumber = this.today.getMonth();
23
+ this.dateRangeSelected = false;
24
+ this.dateRangeLength = 0;
25
+ this.data = data;
26
+ this.localSelectedDatesRange = this.data.datesRange;
27
+ const startDate = new Date((_a = this.localSelectedDatesRange) === null || _a === void 0 ? void 0 : _a.startDate);
28
+ const endDate = new Date((_b = this.localSelectedDatesRange) === null || _b === void 0 ? void 0 : _b.endDate);
29
+ if (startDate && endDate) {
30
+ this.dateRangeLength = (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24) + 1;
31
+ }
32
+ this.localSelectedDates = this.data.dates;
33
+ if (!this.data.isSPickerSelected) {
34
+ this.isDatesValid = false;
35
+ if (this.localSelectedDatesRange.startDate && this.localSelectedDatesRange.endDate) {
36
+ this.isDatesValid = true;
37
+ }
38
+ }
39
+ else {
40
+ this.isDatesValid = false;
41
+ if (this.localSelectedDates.length > 0) {
42
+ this.isDatesValid = true;
43
+ }
44
+ }
45
+ if ((_d = (_c = this.data) === null || _c === void 0 ? void 0 : _c.dpConfig) === null || _d === void 0 ? void 0 : _d.timezone) {
46
+ this.parseZoneInstance = (...args) => {
47
+ return parseZone(...args).tz(this.data.dpConfig.timezone);
48
+ };
49
+ }
50
+ this.currentMonthNumber = this.parseZoneInstance().month();
51
+ this.nextMonthNumber = this.parseZoneInstance().add(1, "month").month();
52
+ this.currentMonth = getMonth(this.currentMonthNumber);
53
+ this.nextMonth = getMonth(this.nextMonthNumber);
54
+ this.currentYearNumber = this.parseZoneInstance().year();
55
+ this.nextYearNumber = this.parseZoneInstance().add(1, "month").year();
56
+ this.weekDays = this.rawWeekDays.map((day, index) => ({
57
+ label: `${day[0]}${day.slice(1).toLowerCase()}`,
58
+ isCurrentDay: this.parseZoneInstance().day() === index
59
+ }));
60
+ if (!((_f = (_e = this.data) === null || _e === void 0 ? void 0 : _e.dpConfig) === null || _f === void 0 ? void 0 : _f.format)) {
61
+ this.data.dpConfig = Object.assign(Object.assign({}, this.data.dpConfig), { format: DATE_FORMAT });
62
+ }
63
+ }
64
+ ngOnInit() {
65
+ this.currentDateInstance();
66
+ this.calculateMinMaxDays();
67
+ }
68
+ currentDateInstance() {
69
+ var _a, _b, _c;
70
+ let selectedStartDate;
71
+ if (!this.data.isSPickerSelected) {
72
+ if (!((_a = this.localSelectedDatesRange) === null || _a === void 0 ? void 0 : _a.startDate)) {
73
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
74
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
75
+ return;
76
+ }
77
+ selectedStartDate = this.parseZoneInstance((_b = this.localSelectedDatesRange) === null || _b === void 0 ? void 0 : _b.startDate, this.data.dpConfig.format);
78
+ }
79
+ else {
80
+ selectedStartDate = this.parseZoneInstance((_c = this.localSelectedDates) === null || _c === void 0 ? void 0 : _c[0].selectedDate, this.data.dpConfig.format);
81
+ }
82
+ if (selectedStartDate.isValid()) {
83
+ this.currentYearNumber = selectedStartDate.year();
84
+ this.nextYearNumber = selectedStartDate.add(1, "month").year();
85
+ this.currentMonthNumber = selectedStartDate.get("month") - 1;
86
+ this.nextMonthNumber = selectedStartDate.add(1, "month").month() - 1;
87
+ this.currentMonth = getMonth(this.currentMonthNumber);
88
+ this.nextMonth = getMonth(this.nextMonthNumber);
89
+ }
90
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
91
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
92
+ }
93
+ calculateMinMaxDays() {
94
+ const currentInstance = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);
95
+ const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);
96
+ if (minDate.isValid()) {
97
+ this.isPreviousMonthDisabled = minDate.isSameOrAfter(currentInstance, "month");
98
+ }
99
+ const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);
100
+ if (maxDate.isValid()) {
101
+ this.isNextMonthDisabled = maxDate.isSameOrBefore(currentInstance, "month");
102
+ }
103
+ }
104
+ navigateMonth(direction) {
105
+ let thisMonth = parseZone().year(this.currentYearNumber).month(this.currentMonthNumber);
106
+ if (direction === "NEXT") {
107
+ thisMonth = thisMonth.add(1, "month");
108
+ }
109
+ else if (direction === "PREVIOUS") {
110
+ thisMonth = thisMonth.subtract(1, "month");
111
+ }
112
+ this.currentMonthNumber = thisMonth.month();
113
+ this.nextMonthNumber = thisMonth.clone().add(1, "month").month();
114
+ this.currentMonth = getMonth(this.currentMonthNumber);
115
+ this.nextMonth = getMonth(this.nextMonthNumber);
116
+ if (this.nextMonthNumber === 0 && direction === "PREVIOUS") {
117
+ this.currentYearNumber--;
118
+ }
119
+ else if (this.currentMonthNumber === 11 && direction === "NEXT") {
120
+ this.nextYearNumber++;
121
+ }
122
+ else if (this.currentMonthNumber === 0 && direction === "NEXT") {
123
+ this.currentYearNumber++;
124
+ }
125
+ else if (this.nextMonthNumber === 11 && direction === "PREVIOUS") {
126
+ this.nextYearNumber--;
127
+ }
128
+ else {
129
+ this.nextYearNumber = this.currentYearNumber;
130
+ }
131
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
132
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
133
+ this.calculateMinMaxDays();
134
+ }
135
+ generateDates(month, currentYearNumber) {
136
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
137
+ let dates = [];
138
+ const daysInMonth = parseZone().year(currentYearNumber).month(month).daysInMonth();
139
+ for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {
140
+ const date = this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate);
141
+ const dateString = date.format(this.data.dpConfig.format);
142
+ let isDisabledDay = this.data.datesDisabled.some(d => d === dateString);
143
+ const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);
144
+ if (!isDisabledDay && minDate.isValid()) {
145
+ isDisabledDay = minDate.isAfter(date, "day");
146
+ }
147
+ const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);
148
+ if (!isDisabledDay && maxDate.isValid()) {
149
+ isDisabledDay = maxDate.isBefore(date, "day");
150
+ }
151
+ const isCurrentDay = this.parseZoneInstance().year(currentYearNumber).month(month).date(currentDate).format(this.data.dpConfig.format) ===
152
+ this.parseZoneInstance().format(this.data.dpConfig.format);
153
+ let isSelectedDay = false;
154
+ for (const selectedDateConfig of this.localSelectedDates) {
155
+ if (!isSelectedDay && date.format(this.data.dpConfig.format) === selectedDateConfig.selectedDate) {
156
+ isSelectedDay = true;
157
+ }
158
+ }
159
+ let isHoliday = false;
160
+ for (const day of this.data.holidays) {
161
+ if (date.format(this.data.dpConfig.format) === day) {
162
+ isHoliday = true;
163
+ }
164
+ }
165
+ const isSelectedStartDay = !isDisabledDay &&
166
+ ((_b = (_a = this.localSelectedDatesRange) === null || _a === void 0 ? void 0 : _a.startDate) !== null && _b !== void 0 ? _b : false) &&
167
+ date.format(this.data.dpConfig.format) === ((_c = this.localSelectedDatesRange) === null || _c === void 0 ? void 0 : _c.startDate);
168
+ const isAfterSelectedStartDate = this.parseZoneInstance(date).isAfter((_d = this.localSelectedDatesRange) === null || _d === void 0 ? void 0 : _d.startDate, "day");
169
+ const isBeforeSelectedEndDate = this.parseZoneInstance(date).isBefore(parseZone((_e = this.localSelectedDatesRange) === null || _e === void 0 ? void 0 : _e.endDate), "day");
170
+ const inRangeDay = ((_g = (_f = this.localSelectedDatesRange) === null || _f === void 0 ? void 0 : _f.startDate) !== null && _g !== void 0 ? _g : false) &&
171
+ ((_j = (_h = this.localSelectedDatesRange) === null || _h === void 0 ? void 0 : _h.endDate) !== null && _j !== void 0 ? _j : false) &&
172
+ isAfterSelectedStartDate &&
173
+ isBeforeSelectedEndDate;
174
+ const isSelectedEndDay = !isDisabledDay &&
175
+ ((_m = (((_k = this.localSelectedDatesRange) === null || _k === void 0 ? void 0 : _k.startDate) && ((_l = this.localSelectedDatesRange) === null || _l === void 0 ? void 0 : _l.endDate))) !== null && _m !== void 0 ? _m : false) &&
176
+ date.format(this.data.dpConfig.format) === ((_o = this.localSelectedDatesRange) === null || _o === void 0 ? void 0 : _o.endDate);
177
+ dates.push({
178
+ date: currentDate,
179
+ weekDay: date.day(),
180
+ isSelectedDay,
181
+ isCurrentDay,
182
+ isSelectedStartDay,
183
+ isSelectedEndDay,
184
+ inRangeDay,
185
+ isHoliday,
186
+ toastMessage: ((_p = this.data.messages.find(q => date.format(this.data.dpConfig.format) === q.date)) === null || _p === void 0 ? void 0 : _p.message) || "",
187
+ isDisabledDay
188
+ });
189
+ }
190
+ for (let i = dates[0].weekDay; i > 0; i--) {
191
+ dates.unshift({ date: 0, weekDay: i - 1 });
192
+ }
193
+ return dates;
194
+ }
195
+ selectDay(from, day) {
196
+ var _a, _b, _c, _d, _e;
197
+ if (day.date <= 0)
198
+ return;
199
+ if (!this.data.isSPickerSelected) {
200
+ if (!day.isDisabledDay) {
201
+ if (this.selectionStarted) {
202
+ const momentDay = parseZone()
203
+ .year(from === "LEFT" ? this.currentYearNumber : this.nextYearNumber)
204
+ .month(from === "LEFT" ? this.currentMonthNumber : this.nextMonthNumber)
205
+ .date(day.date);
206
+ if (momentDay.isBefore((_a = this.localSelectedDatesRange) === null || _a === void 0 ? void 0 : _a.startDate, "day")) {
207
+ this.localSelectedDatesRange = {
208
+ startDate: momentDay.format(this.data.dpConfig.format),
209
+ endDate: null
210
+ };
211
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
212
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
213
+ return;
214
+ }
215
+ this.selectionStarted = false;
216
+ this.localSelectedDatesRange = Object.assign(Object.assign({}, this.localSelectedDatesRange), { endDate: momentDay.format(this.data.dpConfig.format) });
217
+ }
218
+ else {
219
+ this.selectionStarted = true;
220
+ this.localSelectedDatesRange = {
221
+ startDate: parseZone()
222
+ .year(from === "LEFT" ? this.currentYearNumber : this.nextYearNumber)
223
+ .month(from === "LEFT" ? this.currentMonthNumber : this.nextMonthNumber)
224
+ .date(day.date)
225
+ .format(this.data.dpConfig.format),
226
+ endDate: null
227
+ };
228
+ }
229
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
230
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
231
+ this.isDatesValid = false;
232
+ if (((_b = this.localSelectedDatesRange) === null || _b === void 0 ? void 0 : _b.startDate) && ((_c = this.localSelectedDatesRange) === null || _c === void 0 ? void 0 : _c.endDate)) {
233
+ this.isDatesValid = true;
234
+ }
235
+ }
236
+ const startDate = new Date((_d = this.localSelectedDatesRange) === null || _d === void 0 ? void 0 : _d.startDate);
237
+ const endDate = new Date((_e = this.localSelectedDatesRange) === null || _e === void 0 ? void 0 : _e.endDate);
238
+ if (startDate && endDate) {
239
+ this.dateRangeLength = (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24) + 1;
240
+ }
241
+ }
242
+ else {
243
+ const currentSelection = parseZone()
244
+ .year(from === "LEFT" ? this.currentYearNumber : this.nextYearNumber)
245
+ .month(from === "LEFT" ? this.currentMonthNumber : this.nextMonthNumber)
246
+ .date(day.date).format(this.data.dpConfig.format);
247
+ const existingIndex = this.localSelectedDates.findIndex(selectedDateConfig => selectedDateConfig.selectedDate === currentSelection);
248
+ if (existingIndex !== -1) {
249
+ this.localSelectedDates = this.localSelectedDates.filter((_, index) => index !== existingIndex);
250
+ this.isDatesValid = false;
251
+ if (this.localSelectedDates.length > 0) {
252
+ this.isDatesValid = true;
253
+ }
254
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
255
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
256
+ }
257
+ else if (!day.isDisabledDay) {
258
+ this.localSelectedDates = [
259
+ ...this.localSelectedDates,
260
+ {
261
+ selectedDate: currentSelection
262
+ }
263
+ ];
264
+ this.isDatesValid = false;
265
+ if (this.localSelectedDates.length > 0) {
266
+ this.isDatesValid = true;
267
+ }
268
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
269
+ this.nextMonthDates = this.generateDates(this.nextMonthNumber, this.nextYearNumber);
270
+ }
271
+ else {
272
+ return;
273
+ }
274
+ }
275
+ if (day.toastMessage) {
276
+ this.toast.displayMsg(day.toastMessage, 4000);
277
+ }
278
+ }
279
+ applyDates() {
280
+ this.data.dateChange(this.localSelectedDates);
281
+ }
282
+ applyDatesRange() {
283
+ this.data.dateChangeRange(this.localSelectedDatesRange);
284
+ }
285
+ cancelDatePicker() {
286
+ this.data.close();
287
+ }
288
+ changePicker(event) {
289
+ if (event.target.value === "DateRange") {
290
+ this.data.isSPickerSelected = false;
291
+ }
292
+ else {
293
+ this.data.isSPickerSelected = true;
294
+ }
295
+ }
296
+ }
297
+ TzDrpContainerComponent.decorators = [
298
+ { type: Component, args: [{
299
+ selector: "mis-tz-sdp",
300
+ template: "<div class=\"daterangepicker-container\">\n <div class=\"radio-container\">\n <label>\n <input type=\"radio\" (change)=\"changePicker($event)\" name=\"dateSelection\" value=\"SpecificDate\" [checked]=\"data.isSPickerSelected\"> Specific Date(s)\n</label>\n<label>\n <input type=\"radio\" (change)=\"changePicker($event)\" name=\"dateSelection\" value=\"DateRange\" [checked]=\"!data.isSPickerSelected\" >Date Range\n</label>\n</div>\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isPreviousMonthDisabled && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth }} {{ currentYearNumber }} </span>\n <div></div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber === todayMonthNumber)\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && data.isSPickerSelected,\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !data.isSPickerSelected,\n 'selected-end-day': day.isSelectedEndDay && !data.isSPickerSelected,\n 'in-range-day': day.inRangeDay && !data.isSPickerSelected,\n 'is-valid-date': day.date > 0 && !data.isSPickerSelected && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"{'margin-right': !data.isSPickerSelected ? '0px' : '1px','width': !data.isSPickerSelected ? '36px' : '35px','justify-content': day.isHoliday ? 'flex-start' : 'center','padding-top': day.isHoliday ? '2.8px' : '0px','height': day.isHoliday ? '33px' : '36px'}\"\n *ngFor=\"let day of currentMonthDates\"\n (click)=\"selectDay('LEFT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth }} {{ nextYearNumber }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isNextMonthDisabled && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays\" >\n <span >{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && data.isSPickerSelected,\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !data.isSPickerSelected,\n 'selected-end-day': day.isSelectedEndDay && !data.isSPickerSelected,\n 'in-range-day': day.inRangeDay && !data.isSPickerSelected,\n 'is-valid-date': day.date > 0 && !data.isSPickerSelected && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"{ 'margin-right': !data.isSPickerSelected ? '0px' : '1px','width': !data.isSPickerSelected ? '36px' : '35px','justify-content': day.isHoliday ? 'flex-start' : 'center','padding-top': day.isHoliday ? '3px' : '0px','height': day.isHoliday ? '33px' : '36px'}\"\n *ngFor=\"let day of nextMonthDates\"\n (click)=\"selectDay('RIGHT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay && (currentMonthNumber === todayMonthNumber)\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"weekOffs_holidays_container\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data.weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" style=\"display: inline-block; margin-left: 10px;\"></span></span>\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"data.isSPickerSelected\"><span>{{localSelectedDates.length}} </span>day(s) selected</span>\n <span *ngIf=\"!data.isSPickerSelected\"><span>{{dateRangeLength > 0 ? dateRangeLength : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button mis-button size=\"md\" type=\"none\" (click)=\"cancelDatePicker()\" >Cancel</button>\n <button *ngIf=\"data.isSPickerSelected\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid\" >Apply</button>\n <button *ngIf=\"!data.isSPickerSelected\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid || (dateRangeLength === 0)\" >Apply</button>\n\n </div>\n </div>\n</div>\n",
301
+ styles: [".daterangepicker-container{background:#fff;border:1px solid #e0e0e0;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.daterangepicker-container .radio-container{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--lt-bg-ntrl-seperators,#e0e0e0);background:var(--lt-text-white,#fff)}.daterangepicker-container .radio-container label{display:flex;align-items:center}.daterangepicker-container .radio-container label input{margin-right:8px;width:20px;height:20px}.daterangepicker-container .radio-container label:first-child{padding-right:16px;border-right:1px solid #e0e0e0}.daterangepicker-container .radio-container label:nth-child(2){padding-left:16px}.daterangepicker-container .daterangepicker-container__view{display:flex;gap:24px;padding:16px}.daterangepicker-container .daterangepicker-container__view .datepicker__left,.daterangepicker-container .daterangepicker-container__view .datepicker__right{display:flex;flex-direction:column}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:#cbddfb}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:first-child{transform:rotate(180deg)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body{height:100%;width:252px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday{width:36px;height:18px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:#6a737d}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:#181f33}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days{display:flex;flex-wrap:wrap}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day{cursor:default}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day:hover{background-color:transparent}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day>span{color:#6a737d}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:#cbddfb;cursor:pointer}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:#181f33}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px;color:#0937b2}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.selected-day{color:#fff}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.disabled-day{color:#6a737d}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day{background-color:#0937b2;border-radius:20px 4px 4px 20px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day>span{color:#fff!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day{background-color:#0937b2;border-radius:0 20px 20px 0}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day>span{color:#fff!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .in-range-day:not(.disabled-day){background-color:#cbddfb}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day{background-color:#0937b2;border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day>span{color:#fff!important}.daterangepicker-container .weekOffs_holidays_container{font-size:12px;color:var(--lt-text-muted,#6a737d);padding:8px 24px 12px}.daterangepicker-container .weekOffs_holidays_container>span{margin-right:16px}.daterangepicker-container .weekOffs_holidays_container>span>span{color:var(--lt-text-black,#181f33)}.daterangepicker-container .daterangepicker__footer{display:flex;justify-content:space-between;border-top:1px solid #e0e0e0;padding:16px 24px;word-spacing:4px}.daterangepicker-container .daterangepicker__footer span{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container .daterangepicker__footer span span{font-weight:700}.daterangepicker-container .daterangepicker__footer .footer_action_btn{display:flex}.daterangepicker-container .daterangepicker__footer button{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot{width:5px;height:5px;background-color:#ed711c;border-radius:50%}"]
302
+ },] }
303
+ ];
304
+ TzDrpContainerComponent.ctorParameters = () => [
305
+ { type: undefined, decorators: [{ type: Inject, args: [CONTAINER_DATA,] }] },
306
+ { type: ToastService }
307
+ ];
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU8vRCxNQUFNLE9BQU8sdUJBQXVCO0lBMEJsQyxZQUFvQyxJQUFxQixFQUFVLEtBQW1COztRQUFuQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBeEI5RSxzQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDdEMsT0FBTyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFDTSxnQkFBVyxHQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEYsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUkxQixzQkFBaUIsR0FBeUIsRUFBRSxDQUFDO1FBSTdDLG1CQUFjLEdBQXlCLEVBQUUsQ0FBQztRQUMxQyw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFDekMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUd6QixpQkFBWSxHQUFH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QztJQUNwQixDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7U0FDckM7YUFBSTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7O1lBclRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsbW9PQUFnRDs7YUFFakQ7Ozs0Q0EyQmMsTUFBTSxTQUFDLGNBQWM7WUFqQzNCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9kYXRlcmFuZ2VwaWNrZXItY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJQ3VycmVudE1vbnRoLCBJQ3VycmVudE1vbnRoRGF0ZXMsIElEYXRlUGlja2VyRGF0YSwgSVdlZWtEYXksIElTU2VsZWN0ZWREYXRlc0NvbmZpZywgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBwYXJzZVpvbmUsIE1vbWVudCB9IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IGdldE1vbnRoIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS90b2FzdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXR6LXNkcFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVHpEcnBDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkYXRhOiBJRGF0ZVBpY2tlckRhdGE7XG4gIHByaXZhdGUgcGFyc2Vab25lSW5zdGFuY2UgPSAoLi4uYXJncykgPT4ge1xuICAgIHJldHVybiBwYXJzZVpvbmUoLi4uYXJncyk7XG4gIH07XG4gIHByaXZhdGUgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuICB3ZWVrRGF5czogSVdlZWtEYXlbXSA9IFtdO1xuICBjdXJyZW50TW9udGhOdW1iZXI6IG51bWJlcjtcbiAgY3VycmVudE1vbnRoOiBJQ3VycmVudE1vbnRoO1xuICBjdXJyZW50WWVhck51bWJlcjogbnVtYmVyO1xuICBjdXJyZW50TW9udGhEYXRlczogSUN1cnJlbnRNb250aERhdGVzW10gPSBbXTtcbiAgbmV4dE1vbnRoTnVtYmVyOiBudW1iZXI7XG4gIG5leHRNb250aDogSUN1cnJlbnRNb250aDtcbiAgbmV4dFllYXJOdW1iZXI6IG51bWJlcjtcbiAgbmV4dE1vbnRoRGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gIGlzUHJldmlvdXNNb250aERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmV4dE1vbnRoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0aW9uU3RhcnRlZCA9IGZhbHNlO1xuICBsb2NhbFNlbGVjdGVkRGF0ZXM6IElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdOyBcbiAgbG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U6IElSU2VsZWN0ZWREYXRlc0NvbmZpZztcbiAgaXNEYXRlc1ZhbGlkID0gZmFsc2U7XG4gIHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgdG9kYXlNb250aE51bWJlciA9IHRoaXMudG9kYXkuZ2V0TW9udGgoKVxuICBkYXRlUmFuZ2VTZWxlY3RlZDpib29sZWFuID0gZmFsc2U7XG4gIGRhdGVSYW5nZUxlbmd0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENPTlRBSU5FUl9EQVRBKSBkYXRhOiBJRGF0ZVBpY2tlckRhdGEsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSkge1xuICAgIFxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSA9IHRoaXMuZGF0YS5kYXRlc1JhbmdlO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LnN0YXJ0RGF0ZSk7XG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uZW5kRGF0ZSk7XG4gICAgICBpZihzdGFydERhdGUgJiYgZW5kRGF0ZSl7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlTGVuZ3RoID0gKGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKSkvICgxMDAwICogNjAgKiA2MCAqIDI0KSArIDE7XG4gICAgICB9XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMgPSB0aGlzLmRhdGEuZGF0ZXM7XG4gICAgaWYoIXRoaXMuZGF0YS5pc1NQaWNrZXJTZWxlY3RlZCl7XG4gICAgICB0aGlzLmlzRGF0ZXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2Uuc3RhcnREYXRlICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UuZW5kRGF0ZSkge1xuICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLmlzRGF0ZXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhPy5kcENvbmZpZz8udGltZXpvbmUpIHtcbiAgICAgIHRoaXMucGFyc2Vab25lSW5zdGFuY2UgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICByZXR1cm4gcGFyc2Vab25lKC4uLmFyZ3MpLnR6KHRoaXMuZGF0YS5kcENvbmZpZy50aW1lem9uZSk7XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlciA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5tb250aCgpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCk7XG4gICAgdGhpcy5jdXJyZW50TW9udGggPSBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gICAgdGhpcy5uZXh0TW9udGggPSBnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcik7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlciA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKCk7XG4gICAgdGhpcy5uZXh0WWVhck51bWJlciA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCk7XG4gICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMucmF3V2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke2RheVswXX0ke2RheS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBpc0N1cnJlbnREYXk6IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5kYXkoKSA9PT0gaW5kZXggXG4gICAgfSkpO1xuICAgIGlmICghdGhpcy5kYXRhPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEuZHBDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGF0YS5kcENvbmZpZyxcbiAgICAgICAgZm9ybWF0OiBEQVRFX0ZPUk1BVFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlSW5zdGFuY2UoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZU1pbk1heERheXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudERhdGVJbnN0YW5jZSgpOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRTdGFydERhdGU7XG4gICAgaWYoIXRoaXMuZGF0YS5pc1NQaWNrZXJTZWxlY3RlZCl7XG4gICAgICBpZiAoIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LnN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgICAgICAgdGhpcy5uZXh0TW9udGhEYXRlcyA9IHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlciwgdGhpcy5uZXh0WWVhck51bWJlcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LnN0YXJ0RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgfWVsc2V7XG4gICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXM/LlswXS5zZWxlY3RlZERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWRTdGFydERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyID0gc2VsZWN0ZWRTdGFydERhdGUueWVhcigpO1xuICAgICAgdGhpcy5uZXh0WWVhck51bWJlciA9IHNlbGVjdGVkU3RhcnREYXRlLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyID0gc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikgLSAxO1xuICAgICAgdGhpcy5uZXh0TW9udGhOdW1iZXIgPSBzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpIC0gMTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICAgICAgdGhpcy5uZXh0TW9udGggPSBnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcik7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXIsIHRoaXMuY3VycmVudFllYXJOdW1iZXIpO1xuICAgIHRoaXMubmV4dE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIsIHRoaXMubmV4dFllYXJOdW1iZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNaW5NYXhEYXlzKCkge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgaWYgKG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLmlzUHJldmlvdXNNb250aERpc2FibGVkID0gbWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgIGlmIChtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5pc05leHRNb250aERpc2FibGVkID0gbWF4RGF0ZS5pc1NhbWVPckJlZm9yZShjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gICAgfVxuICB9XG5cbm5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuIGxldCB0aGlzTW9udGg6IE1vbWVudCA9IHBhcnNlWm9uZSgpLnllYXIodGhpcy5jdXJyZW50WWVhck51bWJlcikubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuIGlmIChkaXJlY3Rpb24gPT09IFwiTkVYVFwiKSB7XG4gIHRoaXNNb250aCA9IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKTtcbiB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJQUkVWSU9VU1wiKSB7XG4gIHRoaXNNb250aCA9IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuIH1cbiB0aGlzLmN1cnJlbnRNb250aE51bWJlciA9IHRoaXNNb250aC5tb250aCgpO1xuIHRoaXMubmV4dE1vbnRoTnVtYmVyID0gdGhpc01vbnRoLmNsb25lKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKTtcbiB0aGlzLmN1cnJlbnRNb250aCA9IGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKTtcbiB0aGlzLm5leHRNb250aCA9IGdldE1vbnRoKHRoaXMubmV4dE1vbnRoTnVtYmVyKTtcbiBpZiAodGhpcy5uZXh0TW9udGhOdW1iZXIgPT09IDAgJiYgZGlyZWN0aW9uID09PSBcIlBSRVZJT1VTXCIpIHtcbiAgdGhpcy5jdXJyZW50WWVhck51bWJlci0tO1xuIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPT09IDExICYmIGRpcmVjdGlvbiA9PT0gXCJORVhUXCIpIHtcbiAgdGhpcy5uZXh0WWVhck51bWJlcisrO1xuIH1lbHNlIGlmICh0aGlzLmN1cnJlbnRNb250aE51bWJlciA9PT0gMCAmJiBkaXJlY3Rpb24gPT09IFwiTkVYVFwiKSB7XG4gIHRoaXMuY3VycmVudFllYXJOdW1iZXIrKztcbiB9IGVsc2UgaWYgKHRoaXMubmV4dE1vbnRoTnVtYmVyID09PSAxMSAmJiBkaXJlY3Rpb24gPT09IFwiUFJFVklPVVNcIikge1xuICB0aGlzLm5leHRZZWFyTnVtYmVyLS07XG4gfWVsc2V7XG4gIHRoaXMubmV4dFllYXJOdW1iZXIgPSB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyO1xuIH1cbiB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiB0aGlzLm5leHRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMubmV4dE1vbnRoTnVtYmVyLCB0aGlzLm5leHRZZWFyTnVtYmVyKTtcbiB0aGlzLmNhbGN1bGF0ZU1pbk1heERheXMoKTtcbn1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0ZXMobW9udGg6IG51bWJlciwgY3VycmVudFllYXJOdW1iZXI6IG51bWJlcik6IElDdXJyZW50TW9udGhEYXRlc1tdIHtcbiAgICBsZXQgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgY29uc3QgZGF5c0luTW9udGggPSBwYXJzZVpvbmUoKS55ZWFyKGN1cnJlbnRZZWFyTnVtYmVyKS5tb250aChtb250aCkuZGF5c0luTW9udGgoKTtcbiAgICBmb3IgKGxldCBjdXJyZW50RGF0ZSA9IDE7IGN1cnJlbnREYXRlIDw9IGRheXNJbk1vbnRoOyBjdXJyZW50RGF0ZSsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGxldCBpc0Rpc2FibGVkRGF5ID0gdGhpcy5kYXRhLmRhdGVzRGlzYWJsZWQuc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0N1cnJlbnREYXkgPVxuICAgICAgICB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KSA9PT1cbiAgICAgICAgdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkRGF0ZUNvbmZpZyBvZiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcykge1xuICAgICAgaWYgKCFpc1NlbGVjdGVkRGF5ICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpID09PSBzZWxlY3RlZERhdGVDb25maWcuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIGlzU2VsZWN0ZWREYXkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgaXNIb2xpZGF5ID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IGRheSBvZiB0aGlzLmRhdGEuaG9saWRheXMpIHtcbiAgICAgIGlmICggZGF0ZS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgPT09IGRheSkge1xuICAgICAgICBpc0hvbGlkYXkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBpc1NlbGVjdGVkU3RhcnREYXkgPVxuICAgICAgICAhaXNEaXNhYmxlZERheSAmJlxuICAgICAgICAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uc3RhcnREYXRlID8/IGZhbHNlKSAmJlxuICAgICAgICBkYXRlLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KSA9PT0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uc3RhcnREYXRlO1xuICAgICAgY29uc3QgaXNBZnRlclNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZShkYXRlKS5pc0FmdGVyKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LnN0YXJ0RGF0ZSwgXCJkYXlcIik7XG4gICAgICBjb25zdCBpc0JlZm9yZVNlbGVjdGVkRW5kRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoZGF0ZSkuaXNCZWZvcmUocGFyc2Vab25lKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LmVuZERhdGUpLCBcImRheVwiKTtcbiAgICAgIGNvbnN0IGluUmFuZ2VEYXkgPVxuICAgICAgICAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uc3RhcnREYXRlID8/IGZhbHNlKSAmJlxuICAgICAgICAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uZW5kRGF0ZSA/PyBmYWxzZSkgJiZcbiAgICAgICAgaXNBZnRlclNlbGVjdGVkU3RhcnREYXRlICYmXG4gICAgICAgIGlzQmVmb3JlU2VsZWN0ZWRFbmREYXRlO1xuXG4gICAgICBjb25zdCBpc1NlbGVjdGVkRW5kRGF5ID1cbiAgICAgICAgIWlzRGlzYWJsZWREYXkgJiZcbiAgICAgICAgKCh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlPy5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uZW5kRGF0ZSkgPz8gZmFsc2UpICYmXG4gICAgICAgIGRhdGUuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlPy5lbmREYXRlO1xuICAgICAgZGF0ZXMucHVzaCh7XG4gICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICB3ZWVrRGF5OiBkYXRlLmRheSgpLFxuICAgICAgICBpc1NlbGVjdGVkRGF5LFxuICAgICAgICBpc0N1cnJlbnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRTdGFydERheSxcbiAgICAgICAgaXNTZWxlY3RlZEVuZERheSxcbiAgICAgICAgaW5SYW5nZURheSxcbiAgICAgICAgaXNIb2xpZGF5LFxuICAgICAgICB0b2FzdE1lc3NhZ2U6IHRoaXMuZGF0YS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgPT09IHEuZGF0ZSk/Lm1lc3NhZ2UgfHwgXCJcIixcbiAgICAgICAgaXNEaXNhYmxlZERheVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSBkYXRlc1swXS53ZWVrRGF5OyBpID4gMDsgaS0tKSB7XG4gICAgICBkYXRlcy51bnNoaWZ0KHsgZGF0ZTogMCwgd2Vla0RheTogaSAtIDEgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gIHNlbGVjdERheShmcm9tOiBcIkxFRlRcIiB8IFwiUklHSFRcIiwgZGF5OiBJQ3VycmVudE1vbnRoRGF0ZXMpIHtcbiAgICBpZiAoZGF5LmRhdGUgPD0gMCkgcmV0dXJuO1xuICAgIGlmKCF0aGlzLmRhdGEuaXNTUGlja2VyU2VsZWN0ZWQpe1xuICAgICAgaWYgKCFkYXkuaXNEaXNhYmxlZERheSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydGVkKSB7XG4gICAgICAgICAgY29uc3QgbW9tZW50RGF5ID0gcGFyc2Vab25lKClcbiAgICAgICAgICAgIC55ZWFyKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlciA6IHRoaXMubmV4dFllYXJOdW1iZXIpXG4gICAgICAgICAgICAubW9udGgoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRNb250aE51bWJlciA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKVxuICAgICAgICAgICAgLmRhdGUoZGF5LmRhdGUpO1xuICAgICAgICAgIGlmIChtb21lbnREYXkuaXNCZWZvcmUodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uc3RhcnREYXRlLCBcImRheVwiKSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSA9IHtcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBtb21lbnREYXkuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpLFxuICAgICAgICAgICAgICBlbmREYXRlOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlcyA9IHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlciwgdGhpcy5jdXJyZW50WWVhck51bWJlcik7XG4gICAgICAgICAgICB0aGlzLm5leHRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMubmV4dE1vbnRoTnVtYmVyLCB0aGlzLm5leHRZZWFyTnVtYmVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UsXG4gICAgICAgICAgICBlbmREYXRlOiBtb21lbnREYXkuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UgPSB7XG4gICAgICAgICAgICBzdGFydERhdGU6IHBhcnNlWm9uZSgpXG4gICAgICAgICAgICAgIC55ZWFyKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlciA6IHRoaXMubmV4dFllYXJOdW1iZXIpXG4gICAgICAgICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyIDogdGhpcy5uZXh0TW9udGhOdW1iZXIpXG4gICAgICAgICAgICAgIC5kYXRlKGRheS5kYXRlKVxuICAgICAgICAgICAgICAuZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpLFxuICAgICAgICAgICAgZW5kRGF0ZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlcyA9IHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlciwgdGhpcy5jdXJyZW50WWVhck51bWJlcik7XG4gICAgICAgIHRoaXMubmV4dE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIsIHRoaXMubmV4dFllYXJOdW1iZXIpO1xuICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uc3RhcnREYXRlICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LmVuZERhdGUpIHtcbiAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2U/LnN0YXJ0RGF0ZSk7XG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZT8uZW5kRGF0ZSk7XG4gICAgICBpZihzdGFydERhdGUgJiYgZW5kRGF0ZSl7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlTGVuZ3RoID0gKGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKSkvICgxMDAwICogNjAgKiA2MCAqIDI0KSArIDE7XG4gICAgICB9XG4gICAgICBcbiAgICB9ZWxzZXtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSAgcGFyc2Vab25lKClcbiAgICAgIC55ZWFyKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlciA6IHRoaXMubmV4dFllYXJOdW1iZXIpXG4gICAgICAubW9udGgoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRNb250aE51bWJlciA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKVxuICAgICAgLmRhdGUoZGF5LmRhdGUpLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KVxuICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLmZpbmRJbmRleChzZWxlY3RlZERhdGVDb25maWcgPT4gc2VsZWN0ZWREYXRlQ29uZmlnLnNlbGVjdGVkRGF0ZSA9PT0gY3VycmVudFNlbGVjdGlvbik7XG4gIFxuICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcyA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSBleGlzdGluZ0luZGV4KTtcbiAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgICAgIHRoaXMubmV4dE1vbnRoRGF0ZXMgPSB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIsIHRoaXMubmV4dFllYXJOdW1iZXIpO1xuICAgICAgfWVsc2UgaWYoIWRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzID0gW1xuICAgICAgICAgIC4uLnRoaXMubG9jYWxTZWxlY3RlZERhdGVzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZTogY3VycmVudFNlbGVjdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzID0gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKTtcbiAgICAgICAgdGhpcy5uZXh0TW9udGhEYXRlcyA9IHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlciwgdGhpcy5uZXh0WWVhck51bWJlcik7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkge1xuICAgICAgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RGF0ZXMoKSB7XG4gICAgdGhpcy5kYXRhLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMpO1xuICB9XG4gIGFwcGx5RGF0ZXNSYW5nZSgpIHtcbiAgICB0aGlzLmRhdGEuZGF0ZUNoYW5nZVJhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGEuY2xvc2UoKTtcbiAgfVxuICBjaGFuZ2VQaWNrZXIoZXZlbnQ6IGFueSkge1xuICAgIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gXCJEYXRlUmFuZ2VcIil7XG4gICAgICB0aGlzLmRhdGEuaXNTUGlja2VyU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuZGF0YS5pc1NQaWNrZXJTZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
@@ -0,0 +1,154 @@
1
+ import { Overlay, OverlayConfig } from "@angular/cdk/overlay";
2
+ import { ComponentPortal } from "@angular/cdk/portal";
3
+ import { Directive, ElementRef, EventEmitter, HostListener, Injector, Input, Optional, Output, Self, ViewContainerRef } from "@angular/core";
4
+ import { NgControl } from "@angular/forms";
5
+ import { take } from "rxjs/operators";
6
+ import { genPositionPairs } from "mis-crystal-design-system/utils";
7
+ import { CONTAINER_DATA, DATE_FORMAT } from "./daterangepicker-constants";
8
+ import { TzDrpContainerComponent } from "./tz-sdp-container/tz-sdp-container.component";
9
+ export class TzSpecificDatepickerDirective {
10
+ constructor(control, element, overlay, viewContainerRef) {
11
+ this.control = control;
12
+ this.element = element;
13
+ this.overlay = overlay;
14
+ this.viewContainerRef = viewContainerRef;
15
+ this.dpConfig = {
16
+ format: DATE_FORMAT,
17
+ minDate: "",
18
+ maxDate: "",
19
+ timezone: "Asia/Kolkata"
20
+ };
21
+ this.dateMessages = [];
22
+ this.positionX = "center";
23
+ this.positionY = "bottom";
24
+ this.offsetX = 0;
25
+ this.offsetY = 0;
26
+ this.isSPickerSelected = false;
27
+ this.dateChange = new EventEmitter(true);
28
+ this.dateChangeRange = new EventEmitter(true);
29
+ this.isOpen = false;
30
+ this.dates = [];
31
+ this.weekOffs = [];
32
+ this.dpDisabledDates = [];
33
+ this.dpHolidays = [];
34
+ }
35
+ set selectedDates(dates) {
36
+ this.dates = dates;
37
+ }
38
+ set selectedDatesRange(dates) {
39
+ this.datesRange = dates;
40
+ }
41
+ set datesDisabled(dates) {
42
+ this.dpDisabledDates = dates;
43
+ }
44
+ set holidaysDates(dates) {
45
+ this.dpHolidays = dates;
46
+ }
47
+ set weekOffsSelection(dates) {
48
+ this.weekOffs = dates;
49
+ }
50
+ toggleDatePicker() {
51
+ if (this.isOpen) {
52
+ this.close();
53
+ }
54
+ else {
55
+ this.open();
56
+ }
57
+ }
58
+ open() {
59
+ var _a, _b;
60
+ this.isOpen = true;
61
+ const positionStrategy = this.overlay
62
+ .position()
63
+ .flexibleConnectedTo(this.element)
64
+ .withPositions(genPositionPairs({
65
+ positionX: this.positionX,
66
+ positionY: this.positionY,
67
+ offsetX: this.offsetX,
68
+ offsetY: this.offsetY
69
+ }, true))
70
+ .withPush(true);
71
+ const config = new OverlayConfig({
72
+ hasBackdrop: true,
73
+ positionStrategy,
74
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
75
+ backdropClass: "cdk-overlay-transparent-backdrop"
76
+ });
77
+ this.overlayRef = this.overlay.create(config);
78
+ const tempRef = new ComponentPortal(TzDrpContainerComponent, this.viewContainerRef, Injector.create({
79
+ providers: [
80
+ {
81
+ provide: CONTAINER_DATA,
82
+ useValue: {
83
+ messages: this.dateMessages,
84
+ dates: ((_a = this.control) === null || _a === void 0 ? void 0 : _a.control.value) || this.dates,
85
+ datesRange: ((_b = this.control) === null || _b === void 0 ? void 0 : _b.control.value) || this.datesRange,
86
+ dpConfig: this.dpConfig,
87
+ datesDisabled: this.dpDisabledDates,
88
+ dateChange: this.applyDate.bind(this),
89
+ dateChangeRange: this.applyDateRange.bind(this),
90
+ close: this.close.bind(this),
91
+ weekOffs: this.weekOffs,
92
+ holidays: this.dpHolidays,
93
+ isSPickerSelected: this.isSPickerSelected
94
+ }
95
+ }
96
+ ]
97
+ }));
98
+ this.overlayRef.attach(tempRef);
99
+ this.overlayRef
100
+ .backdropClick()
101
+ .pipe(take(1))
102
+ .subscribe(() => {
103
+ this.close();
104
+ });
105
+ }
106
+ applyDate(dates) {
107
+ var _a;
108
+ this.dateChange.emit(dates);
109
+ (_a = this.control) === null || _a === void 0 ? void 0 : _a.control.patchValue(dates);
110
+ this.dates = dates;
111
+ this.close();
112
+ }
113
+ applyDateRange(dates) {
114
+ var _a;
115
+ this.dateChangeRange.emit(dates);
116
+ (_a = this.control) === null || _a === void 0 ? void 0 : _a.control.patchValue(dates);
117
+ this.datesRange = dates;
118
+ this.close();
119
+ }
120
+ close() {
121
+ this.isOpen = false;
122
+ this.overlayRef.detach();
123
+ this.overlayRef.dispose();
124
+ }
125
+ }
126
+ TzSpecificDatepickerDirective.decorators = [
127
+ { type: Directive, args: [{
128
+ selector: "input[misTzSdp]"
129
+ },] }
130
+ ];
131
+ TzSpecificDatepickerDirective.ctorParameters = () => [
132
+ { type: NgControl, decorators: [{ type: Self }, { type: Optional }] },
133
+ { type: ElementRef },
134
+ { type: Overlay },
135
+ { type: ViewContainerRef }
136
+ ];
137
+ TzSpecificDatepickerDirective.propDecorators = {
138
+ dpConfig: [{ type: Input }],
139
+ selectedDates: [{ type: Input }],
140
+ selectedDatesRange: [{ type: Input }],
141
+ datesDisabled: [{ type: Input }],
142
+ holidaysDates: [{ type: Input }],
143
+ weekOffsSelection: [{ type: Input }],
144
+ dateMessages: [{ type: Input }],
145
+ positionX: [{ type: Input }],
146
+ positionY: [{ type: Input }],
147
+ offsetX: [{ type: Input }],
148
+ offsetY: [{ type: Input }],
149
+ isSPickerSelected: [{ type: Input }],
150
+ dateChange: [{ type: Output }],
151
+ dateChangeRange: [{ type: Output }],
152
+ toggleDatePicker: [{ type: HostListener, args: ["click",] }]
153
+ };
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc3BlY2lmaWNkYXRlcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zcGVjaWZpY2RhdGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFLeEYsTUFBTSxPQUFPLDZCQUE2QjtJQXNDeEMsWUFDOEIsT0FBa0IsRUFDdEMsT0FBbUIsRUFDbkIsT0FBZ0IsRUFDaEIsZ0JBQWtDO1FBSGQsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUN0QyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXpDbkMsYUFBUSxHQUF1QjtZQUN0QyxNQUFNLEVBQUUsV0FBVztZQUNuQixPQUFPLEVBQUUs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Q0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7O1lBbElGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7WUFUUSxTQUFTLHVCQWlEYixJQUFJLFlBQUksUUFBUTtZQWxERCxVQUFVO1lBRnJCLE9BQU87WUFFcUYsZ0JBQWdCOzs7dUJBWWxILEtBQUs7NEJBTUwsS0FBSztpQ0FHTCxLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSztnQ0FHTCxLQUFLOzJCQUdMLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3NCQUNMLEtBQUs7c0JBQ0wsS0FBSztnQ0FDTCxLQUFLO3lCQUVMLE1BQU07OEJBQ04sTUFBTTsrQkFlTixZQUFZLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBnZW5Qb3NpdGlvblBhaXJzIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdXRpbHNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuL2RhdGVyYW5nZXBpY2tlci1jb25zdGFudHNcIjtcbmltcG9ydCB7IElTRGF0ZVBpY2tlckNvbmZpZywgSVNEYXRlUGlja2VyVG9hc3RUZXh0LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSBcIi4vbW9kZWxzL3NkcC1jb25maWcubW9kZWxcIjtcbmltcG9ydCB7IFR6RHJwQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSBcIi4vdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiaW5wdXRbbWlzVHpTZHBdXCJcbn0pXG5leHBvcnQgY2xhc3MgVHpTcGVjaWZpY0RhdGVwaWNrZXJEaXJlY3RpdmUge1xuICBASW5wdXQoKSBkcENvbmZpZzogSVNEYXRlUGlja2VyQ29uZmlnID0ge1xuICAgIGZvcm1hdDogREFURV9GT1JNQVQsXG4gICAgbWluRGF0ZTogXCJcIixcbiAgICBtYXhEYXRlOiBcIlwiLFxuICAgIHRpbWV6b25lOiBcIkFzaWEvS29sa2F0YVwiXG4gIH07XG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZERhdGVzKGRhdGVzOiBJU1NlbGVjdGVkRGF0ZXNDb25maWdbXSkge1xuICAgIHRoaXMuZGF0ZXMgPSBkYXRlcztcbiAgfVxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWREYXRlc1JhbmdlKGRhdGVzOiBJUlNlbGVjdGVkRGF0ZXNDb25maWcpIHtcbiAgICB0aGlzLmRhdGVzUmFuZ2UgPSBkYXRlcztcbiAgfVxuICBASW5wdXQoKSBzZXQgZGF0ZXNEaXNhYmxlZChkYXRlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRwRGlzYWJsZWREYXRlcyA9IGRhdGVzO1xuICB9XG4gIEBJbnB1dCgpIHNldCBob2xpZGF5c0RhdGVzKGRhdGVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZHBIb2xpZGF5cyA9IGRhdGVzO1xuICB9XG4gIEBJbnB1dCgpIHNldCB3ZWVrT2Zmc1NlbGVjdGlvbihkYXRlczogc3RyaW5nW10pe1xuICAgIHRoaXMud2Vla09mZnMgPSBkYXRlcztcbiAgfVxuICBASW5wdXQoKSBkYXRlTWVzc2FnZXM6IElTRGF0ZVBpY2tlclRvYXN0VGV4dFtdID0gW107XG4gIEBJbnB1dCgpIHBvc2l0aW9uWDogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCIgPSBcImNlbnRlclwiO1xuICBASW5wdXQoKSBwb3NpdGlvblk6IFwidG9wXCIgfCBcImNlbnRlclwiIHwgXCJib3R0b21cIiA9IFwiYm90dG9tXCI7XG4gIEBJbnB1dCgpIG9mZnNldFg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG9mZnNldFk6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGlzU1BpY2tlclNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdPih0cnVlKTtcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2VSYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVJTZWxlY3RlZERhdGVzQ29uZmlnPih0cnVlKTtcbiAgcHJpdmF0ZSBpc09wZW4gPSBmYWxzZTtcbiAgZGF0ZXM6IElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdID0gW107XG4gIGRhdGVzUmFuZ2U6SVJTZWxlY3RlZERhdGVzQ29uZmlnOyBcbiAgd2Vla09mZnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZHBEaXNhYmxlZERhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRwSG9saWRheXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXG4gIHRvZ2dsZURhdGVQaWNrZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbigpIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudClcbiAgICAgIC53aXRoUG9zaXRpb25zKFxuICAgICAgICBnZW5Qb3NpdGlvblBhaXJzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5wb3NpdGlvblgsXG4gICAgICAgICAgICBwb3NpdGlvblk6IHRoaXMucG9zaXRpb25ZLFxuICAgICAgICAgICAgb2Zmc2V0WDogdGhpcy5vZmZzZXRYLFxuICAgICAgICAgICAgb2Zmc2V0WTogdGhpcy5vZmZzZXRZXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgYmFja2Ryb3BDbGFzczogXCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuICAgIGNvbnN0IHRlbXBSZWYgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgVHpEcnBDb250YWluZXJDb21wb25lbnQsXG4gICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDT05UQUlORVJfREFUQSxcbiAgICAgICAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgICAgICAgIG1lc3NhZ2VzOiB0aGlzLmRhdGVNZXNzYWdlcyxcbiAgICAgICAgICAgICAgZGF0ZXM6IHRoaXMuY29udHJvbD8uY29udHJvbC52YWx1ZSB8fCB0aGlzLmRhdGVzLFxuICAgICAgICAgICAgICBkYXRlc1JhbmdlOiAgdGhpcy5jb250cm9sPy5jb250cm9sLnZhbHVlIHx8IHRoaXMuZGF0ZXNSYW5nZSxcbiAgICAgICAgICAgICAgZHBDb25maWc6IHRoaXMuZHBDb25maWcsXG4gICAgICAgICAgICAgIGRhdGVzRGlzYWJsZWQ6IHRoaXMuZHBEaXNhYmxlZERhdGVzLFxuICAgICAgICAgICAgICBkYXRlQ2hhbmdlOiB0aGlzLmFwcGx5RGF0ZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICBkYXRlQ2hhbmdlUmFuZ2U6IHRoaXMuYXBwbHlEYXRlUmFuZ2UuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgY2xvc2U6IHRoaXMuY2xvc2UuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgd2Vla09mZnM6IHRoaXMud2Vla09mZnMsXG4gICAgICAgICAgICAgIGhvbGlkYXlzOiB0aGlzLmRwSG9saWRheXMsXG4gICAgICAgICAgICAgIGlzU1BpY2tlclNlbGVjdGVkOiB0aGlzLmlzU1BpY2tlclNlbGVjdGVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0ZW1wUmVmKTtcbiAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBhcHBseURhdGUoZGF0ZXM6IElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdKSB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZGF0ZXMpO1xuICAgIHRoaXMuY29udHJvbD8uY29udHJvbC5wYXRjaFZhbHVlKGRhdGVzKTtcbiAgICB0aGlzLmRhdGVzID0gZGF0ZXM7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG4gIGFwcGx5RGF0ZVJhbmdlKGRhdGVzOiBJUlNlbGVjdGVkRGF0ZXNDb25maWcpIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2VSYW5nZS5lbWl0KGRhdGVzKTtcbiAgICB0aGlzLmNvbnRyb2w/LmNvbnRyb2wucGF0Y2hWYWx1ZShkYXRlcyk7XG4gICAgdGhpcy5kYXRlc1JhbmdlID0gZGF0ZXM7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG4gIGNsb3NlKCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gIH1cbn1cblxuIl19