@annalib/anna-core 0.0.1

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 (165) hide show
  1. package/README.md +24 -0
  2. package/annalib-anna-core.d.ts +5 -0
  3. package/esm2020/annalib-anna-core.mjs +5 -0
  4. package/esm2020/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
  5. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
  6. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
  7. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  8. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
  9. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
  10. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
  11. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
  12. package/esm2020/lib/anna-core-shared-lib/index.mjs +2 -0
  13. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  14. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  15. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
  16. package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
  17. package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
  18. package/esm2020/lib/anna-core-shared-lib/public-api.mjs +25 -0
  19. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
  20. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
  21. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
  22. package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
  23. package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
  24. package/esm2020/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
  25. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
  26. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
  27. package/esm2020/lib/anna-dropdown-lib/index.mjs +2 -0
  28. package/esm2020/lib/anna-dropdown-lib/public-api.mjs +6 -0
  29. package/esm2020/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
  30. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
  31. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
  32. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
  33. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -0
  34. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
  35. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
  36. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
  37. package/esm2020/lib/anna-generic-table-lib/index.mjs +2 -0
  38. package/esm2020/lib/anna-generic-table-lib/public-api.mjs +10 -0
  39. package/esm2020/public-api.mjs +7 -0
  40. package/esm2020/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
  41. package/esm2020/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +5 -0
  42. package/esm2020/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
  43. package/esm2020/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
  44. package/esm2020/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  45. package/esm2020/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
  46. package/esm2020/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
  47. package/esm2020/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
  48. package/esm2020/src/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
  49. package/esm2020/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  50. package/esm2020/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  51. package/esm2020/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
  52. package/esm2020/src/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
  53. package/esm2020/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
  54. package/esm2020/src/lib/anna-core-shared-lib/public-api.mjs +25 -0
  55. package/esm2020/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
  56. package/esm2020/src/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
  57. package/esm2020/src/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
  58. package/esm2020/src/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
  59. package/esm2020/src/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
  60. package/esm2020/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
  61. package/esm2020/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +5 -0
  62. package/esm2020/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
  63. package/esm2020/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
  64. package/esm2020/src/lib/anna-dropdown-lib/public-api.mjs +6 -0
  65. package/esm2020/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
  66. package/esm2020/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +5 -0
  67. package/esm2020/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
  68. package/esm2020/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
  69. package/esm2020/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
  70. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -0
  71. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
  72. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
  73. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
  74. package/esm2020/src/lib/anna-generic-table-lib/public-api.mjs +10 -0
  75. package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
  76. package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
  77. package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +474 -0
  78. package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
  79. package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1887 -0
  80. package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
  81. package/fesm2015/annalib-anna-core.mjs +3630 -0
  82. package/fesm2015/annalib-anna-core.mjs.map +1 -0
  83. package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
  84. package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
  85. package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +472 -0
  86. package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
  87. package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1886 -0
  88. package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
  89. package/fesm2020/annalib-anna-core.mjs +3627 -0
  90. package/fesm2020/annalib-anna-core.mjs.map +1 -0
  91. package/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
  92. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
  93. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
  94. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
  95. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
  96. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
  97. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
  98. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
  99. package/lib/anna-core-shared-lib/index.d.ts +1 -0
  100. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
  101. package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
  102. package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
  103. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
  104. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
  105. package/lib/anna-core-shared-lib/public-api.d.ts +18 -0
  106. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
  107. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
  108. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
  109. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
  110. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
  111. package/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
  112. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
  113. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
  114. package/lib/anna-dropdown-lib/index.d.ts +1 -0
  115. package/lib/anna-dropdown-lib/public-api.d.ts +3 -0
  116. package/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
  117. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
  118. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
  119. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
  120. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -0
  121. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
  122. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
  123. package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
  124. package/lib/anna-generic-table-lib/index.d.ts +1 -0
  125. package/lib/anna-generic-table-lib/public-api.d.ts +6 -0
  126. package/package.json +61 -0
  127. package/public-api.d.ts +3 -0
  128. package/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
  129. package/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.d.ts +5 -0
  130. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
  131. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
  132. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
  133. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
  134. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
  135. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
  136. package/src/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
  137. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
  138. package/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
  139. package/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
  140. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
  141. package/src/lib/anna-core-shared-lib/package.json +10 -0
  142. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
  143. package/src/lib/anna-core-shared-lib/public-api.d.ts +18 -0
  144. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
  145. package/src/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
  146. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
  147. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
  148. package/src/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
  149. package/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
  150. package/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.d.ts +5 -0
  151. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
  152. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
  153. package/src/lib/anna-dropdown-lib/package.json +10 -0
  154. package/src/lib/anna-dropdown-lib/public-api.d.ts +3 -0
  155. package/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
  156. package/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.d.ts +5 -0
  157. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
  158. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
  159. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
  160. package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -0
  161. package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
  162. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
  163. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
  164. package/src/lib/anna-generic-table-lib/package.json +10 -0
  165. package/src/lib/anna-generic-table-lib/public-api.d.ts +6 -0
@@ -0,0 +1,360 @@
1
+ // Angular import statements
2
+ import { DatePipe } from "@angular/common";
3
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
4
+ // Third party import statements
5
+ import { NgbCalendar, NgbDate, NgbDatepickerConfig } from "@ng-bootstrap/ng-bootstrap";
6
+ import moment from "moment";
7
+ // User defined import statements
8
+ //sub-entries of anna lib import statement
9
+ import { AnnaDateTimeFormatService, AnnaGlobalConfigService } from "@annalib/anna-core/src/lib/anna-core-shared-lib";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
12
+ import * as i2 from "@annalib/anna-core/src/lib/anna-core-shared-lib";
13
+ import * as i3 from "@angular/common";
14
+ export class AnnaWeekCalendarComponent {
15
+ constructor(calendar, datePickerConfig, annaDateTimeFormatService, globalConfigService) {
16
+ this.calendar = calendar;
17
+ this.datePickerConfig = datePickerConfig;
18
+ this.annaDateTimeFormatService = annaDateTimeFormatService;
19
+ this.globalConfigService = globalConfigService;
20
+ this.hoveredDate = null;
21
+ this.toDate = null;
22
+ this.weekNumbers = [];
23
+ this.dateToDisplay = "";
24
+ this.multiSelectDropdownOpen = false;
25
+ this.calendarMap = new Map();
26
+ this.disabledDates = [];
27
+ this.applyWeekCalendarChanges = new EventEmitter();
28
+ this.calendarToggled = new EventEmitter();
29
+ }
30
+ ngOnChanges(changes) {
31
+ //if some values are not sent, setting the default values
32
+ this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;
33
+ this.config = { ...this._defaultValues, ...this.config };
34
+ if (this.config.selectCurrentWeek) {
35
+ this.initializeWeekData();
36
+ this.fromDate && this.selectWeek(this.fromDate);
37
+ }
38
+ this.formatter = this.formattedDates();
39
+ if (this.selectedFromDate && this.selectedEndDate && this.config) {
40
+ // this.selectWeek(this.fromDate);
41
+ this.fromDate = NgbDate.from(this.selectedFromDate);
42
+ this.toDate = NgbDate.from(this.selectedEndDate);
43
+ this.weekNumberGenerator();
44
+ this.displayToUI();
45
+ this.setCalendarMap();
46
+ }
47
+ if (this.disabledDates.length > 0) {
48
+ this.disabledFunc = (date, current) => {
49
+ return this.checkIfDateIsDisabled(date);
50
+ };
51
+ }
52
+ }
53
+ getWeekNumber(week, firstDayOfWeek) {
54
+ const weekStartDate = moment(convertNgbDateToMoment(week[0]), "MM/DD/YYYY");
55
+ const weekYear = weekStartDate.year();
56
+ const yearStartDate = moment(`01/01/${weekYear}`, "MM/DD/YYYY");
57
+ const weekDay = yearStartDate.day();
58
+ const noOfDays = weekStartDate.diff(yearStartDate, "d") + 1;
59
+ function convertNgbDateToMoment(ngbDate) {
60
+ let converted = moment();
61
+ converted.month(ngbDate.month - 1);
62
+ converted.date(ngbDate.day);
63
+ converted.year(ngbDate.year);
64
+ return converted.format("MM/DD/YYYY");
65
+ }
66
+ function checkIfYearIsBroadcastLeapYear() {
67
+ let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;
68
+ return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);
69
+ }
70
+ const isLeapYear = checkIfYearIsBroadcastLeapYear();
71
+ const divider = isLeapYear ? 53 : 52;
72
+ const adder = isLeapYear ? 2 : 1;
73
+ let broadcastNumberOfDays = weekDay + noOfDays;
74
+ let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;
75
+ if (Math.floor(broadcastWeekNumber % divider) === 0) {
76
+ return divider;
77
+ }
78
+ return Math.floor(broadcastWeekNumber % divider);
79
+ }
80
+ ngAfterViewInit() {
81
+ // CHANGES@ANNALIB Changed this.
82
+ // this.calendar["__proto__"].getWeekNumber = this.getWeekNumber;
83
+ Object.setPrototypeOf(this.calendar, { getWeekNumber: this.getWeekNumber });
84
+ }
85
+ ngOnInit() {
86
+ // this.selectWeek(this.fromDate);
87
+ this.setCalendarMap();
88
+ }
89
+ initializeWeekData() {
90
+ this.weekObjects = [];
91
+ this.fromDate = this.calendar.getToday();
92
+ this.today = this.calendar.getToday();
93
+ let backDatedPeriod = JSON.parse(localStorage.getItem("userDetails") || '{}').locking_period_days;
94
+ if (backDatedPeriod < 0) {
95
+ let date = this.calendar.getPrev(this.calendar.getToday(), "d", Math.abs(backDatedPeriod));
96
+ this.today = NgbDate.from(date);
97
+ this.fromDate = NgbDate.from(date);
98
+ }
99
+ // Disable months before numberOfMonthsToEnable
100
+ this.datePickerConfig.markDisabled = (date) => {
101
+ let previousMonth = this.calendar.getPrev(this.today, "m", this.config.numberOfMonthsToEnableInPast);
102
+ let previousDay = this.calendar.getPrev(previousMonth, "d", 1);
103
+ return !NgbDate.from(previousDay).before(date);
104
+ };
105
+ this.formatter = this.formattedDates();
106
+ this.flag1 = false;
107
+ this.flag2 = false;
108
+ }
109
+ selectWeek(date) {
110
+ const dateObject = new Date(date.year, date.month - 1, date.day);
111
+ let constructDate = this.buildDate(dateObject);
112
+ if (!this.config.selectMultipleWeeks) {
113
+ //Single week selection
114
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
115
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
116
+ this.weekNumberGenerator();
117
+ }
118
+ else {
119
+ if (date.before(this.fromDate)) {
120
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
121
+ if (this.flag1) {
122
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
123
+ }
124
+ this.flag1 = !this.flag1;
125
+ }
126
+ else if (date.after(this.toDate)) {
127
+ if (this.flag2) {
128
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
129
+ //this.toDate = this.constructEndDate(dateObject)(constructDate);
130
+ }
131
+ this.flag2 = !this.flag2;
132
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
133
+ }
134
+ else {
135
+ this.fromDate = this.constructStartDate(dateObject)(constructDate);
136
+ this.toDate = this.constructEndDate(dateObject)(constructDate);
137
+ }
138
+ if (this.disabledDates.length > 0) {
139
+ let momentStartDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), "MM/DD/YYYY");
140
+ let momentEndDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), "MM/DD/YYYY");
141
+ let ngbDate;
142
+ while (!momentStartDate.isSame(momentEndDate)) {
143
+ ngbDate = this.annaDateTimeFormatService.convertToNgbDate(momentStartDate, "MM/DD/YYYY");
144
+ if (this.checkIfDateIsDisabled(ngbDate)) {
145
+ break;
146
+ }
147
+ momentStartDate.add(1, "d");
148
+ }
149
+ let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);
150
+ let constructDate = this.buildDate(newDateObject);
151
+ this.toDate = this.constructEndDate(newDateObject)(constructDate);
152
+ }
153
+ this.weekNumberGenerator();
154
+ }
155
+ if (!this.config.showAsDropdown) {
156
+ this.applyChanges();
157
+ }
158
+ }
159
+ weekNumberGenerator() {
160
+ let dates = [];
161
+ let week = [];
162
+ let startDate = NgbDate.from(this.fromDate);
163
+ let endDate = NgbDate.from(this.toDate);
164
+ week.push(startDate);
165
+ while (endDate != null && !startDate.equals(endDate)) {
166
+ let date = this.calendar.getNext(startDate, "d", 1);
167
+ startDate = date;
168
+ week.push(date);
169
+ // Collect all days in week to calculate the week number
170
+ if (week.length == 7) {
171
+ dates.push(week);
172
+ week = [];
173
+ }
174
+ }
175
+ if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {
176
+ dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));
177
+ }
178
+ this.selectedDates(dates);
179
+ this.weekNumbers = [];
180
+ this.weekObjects = [];
181
+ if (dates.length > 0) {
182
+ for (let date of dates) {
183
+ this.weekNumbers.push(" Week " + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));
184
+ let dates = this.formatter(date[0], date[6]);
185
+ let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };
186
+ this.weekObjects.push(dateObjects);
187
+ }
188
+ }
189
+ this.displayToUI();
190
+ }
191
+ selectedDates(dates) {
192
+ this.fromDate = dates[0][0];
193
+ this.toDate = dates[dates.length - 1][6];
194
+ }
195
+ formattedDates() {
196
+ let pipe = new DatePipe("en-US");
197
+ let thisObj = this;
198
+ return function (fromDate, toDate) {
199
+ let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);
200
+ let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);
201
+ thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);
202
+ thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);
203
+ thisObj.dateToDisplay =
204
+ pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +
205
+ " to " +
206
+ pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);
207
+ return thisObj;
208
+ };
209
+ }
210
+ displayToUI() {
211
+ if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {
212
+ // Display for only Single Week
213
+ this.formatter(this.fromDate, this.toDate);
214
+ }
215
+ else {
216
+ // Display for Multiple Weeks
217
+ if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {
218
+ let weekDisplay = [];
219
+ for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {
220
+ weekDisplay.push(this.weekNumbers.shift());
221
+ }
222
+ let remainingWeeks = this.weekNumbers.length;
223
+ this.weekNumbers = [];
224
+ this.weekNumbers.push(weekDisplay + " +" + remainingWeeks);
225
+ }
226
+ }
227
+ }
228
+ constructStartDate(date) {
229
+ let firstDayOfWeek = this.config.firstDayOfWeek;
230
+ return function (constructDate) {
231
+ let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;
232
+ return constructDate(startDay);
233
+ };
234
+ }
235
+ constructEndDate(date) {
236
+ let firstDayOfWeek = this.config.firstDayOfWeek;
237
+ return function (constructDate) {
238
+ let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;
239
+ return constructDate(endDay);
240
+ };
241
+ }
242
+ buildDate(date) {
243
+ return function (number) {
244
+ let day = date.getDate() + number;
245
+ const dateObject = new Date(date.getFullYear(), date.getMonth(), day);
246
+ let ngbDateObject = {};
247
+ ngbDateObject.day = day;
248
+ if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {
249
+ ngbDateObject.day = dateObject.getDate();
250
+ }
251
+ ngbDateObject.month = dateObject.getMonth() + 1;
252
+ ngbDateObject.year = dateObject.getFullYear();
253
+ return NgbDate.from(ngbDateObject);
254
+ };
255
+ }
256
+ isHovered(date) {
257
+ return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);
258
+ }
259
+ isInside(date) {
260
+ return this.toDate && date.after(this.fromDate) && date.before(this.toDate);
261
+ }
262
+ isRange(date) {
263
+ return (date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date));
264
+ }
265
+ previousWeek() {
266
+ if (this.fromDate) {
267
+ this.toDate = this.calendar.getPrev(this.fromDate, "d", 1);
268
+ this.fromDate = this.calendar.getPrev(this.fromDate, "d", this.calendar.getDaysPerWeek());
269
+ }
270
+ this.weekNumberGenerator();
271
+ this.applyChanges();
272
+ }
273
+ nextWeek() {
274
+ if (this.fromDate) {
275
+ this.fromDate = this.calendar.getNext(this.fromDate, "d", this.calendar.getDaysPerWeek());
276
+ this.toDate = this.calendar.getNext(this.fromDate, "d", this.calendar.getDaysPerWeek() - 1);
277
+ }
278
+ this.weekNumberGenerator();
279
+ this.applyChanges();
280
+ }
281
+ setCalendarMap() {
282
+ let dateObj = { fromDate: this.fromDate, toDate: this.toDate };
283
+ this.calendarMap.set("oldDates", dateObj);
284
+ }
285
+ applyChanges() {
286
+ this.multiSelectDropdownOpen = false;
287
+ if (!this.config.emitMultipleWeekObjects) {
288
+ let dates = {};
289
+ let formattedDates = this.formatter(this.fromDate, this.toDate);
290
+ dates.startDate = formattedDates.formattedStartDate;
291
+ dates.endDate = formattedDates.formattedEndDate;
292
+ this.applyWeekCalendarChanges.emit(dates);
293
+ }
294
+ else {
295
+ this.applyWeekCalendarChanges.emit(this.weekObjects);
296
+ }
297
+ this.setCalendarMap();
298
+ }
299
+ isFocused(value) {
300
+ this.calendarToggled.emit(value);
301
+ }
302
+ isDropdownOpenedForCalendar(datepicker) {
303
+ this.datepicker = datepicker;
304
+ if (this.datepicker.isOpen()) {
305
+ this.revertDates();
306
+ this.datepicker.close();
307
+ this.multiSelectDropdownOpen = false;
308
+ }
309
+ else {
310
+ this.datepicker.open();
311
+ this.multiSelectDropdownOpen = true;
312
+ }
313
+ }
314
+ revertDates() {
315
+ this.multiSelectDropdownOpen = false;
316
+ if (this.calendarMap.get("oldDates")) {
317
+ let dateObj = this.calendarMap.get("oldDates");
318
+ this.fromDate = dateObj.fromDate;
319
+ this.toDate = dateObj.toDate;
320
+ this.weekNumberGenerator();
321
+ this.displayToUI();
322
+ }
323
+ }
324
+ checkIfDateIsDisabled(date) {
325
+ const validatorFunc = (ngbDate) => ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;
326
+ return this.disabledDates.some(validatorFunc);
327
+ }
328
+ closeDatepicker(datepickerRef) {
329
+ datepickerRef.close();
330
+ }
331
+ }
332
+ AnnaWeekCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaWeekCalendarComponent, deps: [{ token: i1.NgbCalendar }, { token: i1.NgbDatepickerConfig }, { token: i2.AnnaDateTimeFormatService }, { token: i2.AnnaGlobalConfigService }], target: i0.ɵɵFactoryTarget.Component });
333
+ AnnaWeekCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: AnnaWeekCalendarComponent, selector: "anna-core-week-calendar-filter-lib", inputs: { selectedFromDate: ["from-date", "selectedFromDate"], selectedEndDate: ["to-date", "selectedEndDate"], disabledDates: ["disabled-dates", "disabledDates"], maxDate: "maxDate", minDate: "minDate", config: ["week-calendar-config", "config"] }, outputs: { applyWeekCalendarChanges: "apply", calendarToggled: "toggle-calendar" }, usesOnChanges: true, ngImport: i0, template: "<form class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> &nbsp;{{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n", styles: [":host::ng-deep .right{width:unset!important;background-color:#fff!important}:host::ng-deep .ngb-dp-day,:host::ng-deep .ngb-dp-weekday{width:3rem!important;font-style:unset!important;color:#8bac2a;outline:none}:host::ng-deep .ngb-dp-day:first-child{border:1px solid black}:host::ng-deep .ngb-dp-day.disabled{color:#d4d4d4;cursor:not-allowed}:host::ng-deep .ngb-dp-showweek:before{content:\"Weeks\";margin-right:5px}:host::ng-deep .ngb-dp-week-number{font-style:unset!important;width:4rem!important;margin-right:5px;font-weight:700;color:#000!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-week-number:before{font-style:unset!important;content:\"Week \"}:host::ng-deep .ngb-dp-weekday.ngb-dp-showweek{margin-right:5px;width:4rem!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .dropdown-menu{box-shadow:none}:host::ng-deep .dropdown-menu.show{top:15px!important}:host::ng-deep .bg-light{background-color:#fff!important}:host::ng-deep .ngb-dp-weekdays{border-top:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-arrow-btn:focus{box-shadow:none}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:1.75rem;font-weight:700;color:#222b45;width:3rem!important}.custom-day.focused{background-color:#fff}.custom-day.faded{background-color:#0275d880!important}.custom-day.faded:focus{outline:none!important}.custom-day:hover{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day:focus{outline:none!important}.custom-day.range{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day.range:focus{outline:none!important}.custom-day.disabled{color:#d3d3d3}.input-group>.single-week,.input-group .multiple-weeks{display:inline-flex!important}.input-group>.single-week>.form-control,.input-group .multiple-weeks>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.input-group>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.form-control[readonly]{background-color:#fff!important}.next-round-btn{transform:rotate(180deg);margin-left:.125rem;line-height:1.3;border-radius:50%;cursor:pointer}.round-btn{line-height:1.3;border-radius:50%;cursor:pointer;margin-left:.25rem}:host::ng-deep select.custom-select{background:none;-webkit-appearance:auto;appearance:auto}.left,.right{width:1.875rem!important;height:1.875rem;background:#d8d8d8!important;border-radius:50%}.left{margin-right:.3125rem}.right{margin-left:.3125rem}:host::ng-deep .right .ngb-dp-navigation-chevron,:host::ng-deep .ngb-dp-navigation-chevron{color:#268bff}:host::ng-deep .ngb-dp-arrow-btn:focus{outline-width:0px}.custom-day.faded{background-color:#268bff33;color:#000;font-weight:600}.custom-day{text-align:center;padding:.185rem .25rem;color:#000;display:inline-block;line-height:1.9;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:#268bff;color:#fff;font-weight:600}:host::ng-deep div.ngb-dp-weekday{color:#8bac2a;font-family:Roboto;font-size:.8125rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:2.6;letter-spacing:normal}.mdi-menu-up,.mdi-menu-down{position:absolute;right:2.438rem;top:1px;font-size:1.375rem;cursor:pointer}.multiselect-input-arrow{position:absolute;right:.75rem;top:3px;font-size:1.25rem;cursor:pointer;pointer-events:none}button:focus{outline:none;box-shadow:none;border-color:transparent}::ng-deep .ngb-dp-header,::ng-deep .ngb-dp-week{background:white!important}\n"], components: [{ type: i1.NgbDatepicker, selector: "ngb-datepicker", inputs: ["dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekdays", "showWeekNumbers", "startDate"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekdays", "showWeekNumbers", "startDate", "container", "positionTarget"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaWeekCalendarComponent, decorators: [{
335
+ type: Component,
336
+ args: [{ selector: "anna-core-week-calendar-filter-lib", template: "<form class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> &nbsp;{{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n", styles: [":host::ng-deep .right{width:unset!important;background-color:#fff!important}:host::ng-deep .ngb-dp-day,:host::ng-deep .ngb-dp-weekday{width:3rem!important;font-style:unset!important;color:#8bac2a;outline:none}:host::ng-deep .ngb-dp-day:first-child{border:1px solid black}:host::ng-deep .ngb-dp-day.disabled{color:#d4d4d4;cursor:not-allowed}:host::ng-deep .ngb-dp-showweek:before{content:\"Weeks\";margin-right:5px}:host::ng-deep .ngb-dp-week-number{font-style:unset!important;width:4rem!important;margin-right:5px;font-weight:700;color:#000!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-week-number:before{font-style:unset!important;content:\"Week \"}:host::ng-deep .ngb-dp-weekday.ngb-dp-showweek{margin-right:5px;width:4rem!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .dropdown-menu{box-shadow:none}:host::ng-deep .dropdown-menu.show{top:15px!important}:host::ng-deep .bg-light{background-color:#fff!important}:host::ng-deep .ngb-dp-weekdays{border-top:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-arrow-btn:focus{box-shadow:none}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:1.75rem;font-weight:700;color:#222b45;width:3rem!important}.custom-day.focused{background-color:#fff}.custom-day.faded{background-color:#0275d880!important}.custom-day.faded:focus{outline:none!important}.custom-day:hover{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day:focus{outline:none!important}.custom-day.range{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day.range:focus{outline:none!important}.custom-day.disabled{color:#d3d3d3}.input-group>.single-week,.input-group .multiple-weeks{display:inline-flex!important}.input-group>.single-week>.form-control,.input-group .multiple-weeks>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.input-group>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.form-control[readonly]{background-color:#fff!important}.next-round-btn{transform:rotate(180deg);margin-left:.125rem;line-height:1.3;border-radius:50%;cursor:pointer}.round-btn{line-height:1.3;border-radius:50%;cursor:pointer;margin-left:.25rem}:host::ng-deep select.custom-select{background:none;-webkit-appearance:auto;appearance:auto}.left,.right{width:1.875rem!important;height:1.875rem;background:#d8d8d8!important;border-radius:50%}.left{margin-right:.3125rem}.right{margin-left:.3125rem}:host::ng-deep .right .ngb-dp-navigation-chevron,:host::ng-deep .ngb-dp-navigation-chevron{color:#268bff}:host::ng-deep .ngb-dp-arrow-btn:focus{outline-width:0px}.custom-day.faded{background-color:#268bff33;color:#000;font-weight:600}.custom-day{text-align:center;padding:.185rem .25rem;color:#000;display:inline-block;line-height:1.9;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:#268bff;color:#fff;font-weight:600}:host::ng-deep div.ngb-dp-weekday{color:#8bac2a;font-family:Roboto;font-size:.8125rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:2.6;letter-spacing:normal}.mdi-menu-up,.mdi-menu-down{position:absolute;right:2.438rem;top:1px;font-size:1.375rem;cursor:pointer}.multiselect-input-arrow{position:absolute;right:.75rem;top:3px;font-size:1.25rem;cursor:pointer;pointer-events:none}button:focus{outline:none;box-shadow:none;border-color:transparent}::ng-deep .ngb-dp-header,::ng-deep .ngb-dp-week{background:white!important}\n"] }]
337
+ }], ctorParameters: function () { return [{ type: i1.NgbCalendar }, { type: i1.NgbDatepickerConfig }, { type: i2.AnnaDateTimeFormatService }, { type: i2.AnnaGlobalConfigService }]; }, propDecorators: { selectedFromDate: [{
338
+ type: Input,
339
+ args: ["from-date"]
340
+ }], selectedEndDate: [{
341
+ type: Input,
342
+ args: ["to-date"]
343
+ }], disabledDates: [{
344
+ type: Input,
345
+ args: ["disabled-dates"]
346
+ }], maxDate: [{
347
+ type: Input
348
+ }], minDate: [{
349
+ type: Input
350
+ }], config: [{
351
+ type: Input,
352
+ args: ["week-calendar-config"]
353
+ }], applyWeekCalendarChanges: [{
354
+ type: Output,
355
+ args: ["apply"]
356
+ }], calendarToggled: [{
357
+ type: Output,
358
+ args: ["toggle-calendar"]
359
+ }] } });
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFeEgsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixpQ0FBaUM7QUFFakMsMENBQTBDO0FBQzFDLE9BQU8sRUFBNkIseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7QUFRaEosTUFBTSxPQUFPLHlCQUF5QjtJQWdFcEMsWUFDVSxRQUFxQixFQUNyQixnQkFBcUMsRUFDckMseUJBQW9ELEVBQ3BELG1CQUE0QztRQUg1QyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtR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OzBHQUF6Qix5QkFBeUIsNmFDbkJ0Qyx3aUtBaUlBOzJGRDlHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0NBQW9DO2tOQXdCMUIsZ0JBQWdCO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ0EsZUFBZTtzQkFBaEMsS0FBSzt1QkFBQyxTQUFTO2dCQUNTLGFBQWE7c0JBQXJDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUXlCLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUNaLHdCQUF3QjtzQkFBeEMsTUFBTTt1QkFBQyxPQUFPO2dCQUNZLGVBQWU7c0JBQXpDLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlLCBOZ2JEYXRlcGlja2VyQ29uZmlnLCBOZ2JEYXRlU3RydWN0LCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBXZWVrT2JqZWN0LCBJV2Vla0NhbGVuZGFyLCBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLCBBbm5hR2xvYmFsQ29uZmlnU2VydmljZSB9IGZyb20gXCJAYW5uYWxpYi9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYlwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFXZWVrQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG4gIGhvdmVyZWREYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9EYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9kYXk6IE5nYkRhdGU7XHJcblxyXG4gIG1vZGVsOiBOZ2JEYXRlU3RydWN0O1xyXG5cclxuICB3ZWVrTnVtYmVyczogc3RyaW5nW10gPSBbXTtcclxuICBwaXBlOiBEYXRlUGlwZTtcclxuICBkYXRlVG9EaXNwbGF5OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHdlZWtPYmplY3RzOiBXZWVrT2JqZWN0W107XHJcbiAgbXVsdGlTZWxlY3REcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkYXRlcGlja2VyOiBOZ2JJbnB1dERhdGVwaWNrZXI7XHJcbiAgcHJpdmF0ZSBmb3JtYXR0ZXI6IGFueTtcclxuICBwdWJsaWMgZm9ybWF0dGVkU3RhcnREYXRlOiBzdHJpbmc7XHJcbiAgcHVibGljIGZvcm1hdHRlZEVuZERhdGU6IHN0cmluZztcclxuICBwcml2YXRlIGNhbGVuZGFyTWFwID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgZmxhZzE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBmbGFnMjogYm9vbGVhbjtcclxuICBASW5wdXQoXCJmcm9tLWRhdGVcIikgc2VsZWN0ZWRGcm9tRGF0ZTogTmdiRGF0ZVN0cnVjdDtcclxuICBASW5wdXQoXCJ0by1kYXRlXCIpIHNlbGVjdGVkRW5kRGF0ZTogTmdiRGF0ZVN0cnVjdDtcclxuICBASW5wdXQoXCJkaXNhYmxlZC1kYXRlc1wiKSBkaXNhYmxlZERhdGVzOiBOZ2JEYXRlW10gPSBbXTtcclxuICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogYW55O1xyXG5cclxuICBkaXNhYmxlZEZ1bmM6IGFueTtcclxuICBzdGF0ZTogYW55O1xyXG5cclxuICAvL1NldHRpbmcgdGhlIGRlZmF1bHQgdmFsdWVzO1xyXG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZXM6IElXZWVrQ2FsZW5kYXI7XHJcblxyXG4gIEBJbnB1dChcIndlZWstY2FsZW5kYXItY29uZmlnXCIpIGNvbmZpZzogSVdlZWtDYWxlbmRhcjtcclxuICBAT3V0cHV0KFwiYXBwbHlcIikgYXBwbHlXZWVrQ2FsZW5kYXJDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoXCJ0b2dnbGUtY2FsZW5kYXJcIikgY2FsZW5kYXJUb2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvL2lmIHNvbWUgdmFsdWVzIGFyZSBub3Qgc2VudCwgc2V0dGluZyB0aGUgZGVmYXVsdCB2YWx1ZXNcclxuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMgPSB0aGlzLmdsb2JhbENvbmZpZ1NlcnZpY2UuZGVmYXVsdFdlZWtDYWxlbmRhckNvbmZpZztcclxuICAgIHRoaXMuY29uZmlnID0geyAuLi50aGlzLl9kZWZhdWx0VmFsdWVzLCAuLi50aGlzLmNvbmZpZyB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5zZWxlY3RDdXJyZW50V2Vlaykge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVXZWVrRGF0YSgpO1xyXG4gICAgICB0aGlzLmZyb21EYXRlICYmIHRoaXMuc2VsZWN0V2Vlayh0aGlzLmZyb21EYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVkRGF0ZXMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZyb21EYXRlICYmIHRoaXMuc2VsZWN0ZWRFbmREYXRlICYmIHRoaXMuY29uZmlnKSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0V2Vlayh0aGlzLmZyb21EYXRlKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLnNlbGVjdGVkRnJvbURhdGUpO1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLnNlbGVjdGVkRW5kRGF0ZSk7XHJcbiAgICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgICB0aGlzLmRpc3BsYXlUb1VJKCk7XHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJNYXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZEZ1bmMgPSAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudDogeyBtb250aDogbnVtYmVyIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0lmRGF0ZUlzRGlzYWJsZWQoZGF0ZSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FsZW5kYXI6IE5nYkNhbGVuZGFyLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlja2VyQ29uZmlnOiBOZ2JEYXRlcGlja2VyQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSBhbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlOiBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxDb25maWdTZXJ2aWNlOiBBbm5hR2xvYmFsQ29uZmlnU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG5cclxuICBnZXRXZWVrTnVtYmVyKHdlZWs6IGFueSwgZmlyc3REYXlPZldlZWs6IGFueSkge1xyXG4gICAgY29uc3Qgd2Vla1N0YXJ0RGF0ZSA9IG1vbWVudChjb252ZXJ0TmdiRGF0ZVRvTW9tZW50KHdlZWtbMF0pLCBcIk1NL0REL1lZWVlcIik7XHJcbiAgICBjb25zdCB3ZWVrWWVhciA9IHdlZWtTdGFydERhdGUueWVhcigpO1xyXG4gICAgY29uc3QgeWVhclN0YXJ0RGF0ZSA9IG1vbWVudChgMDEvMDEvJHt3ZWVrWWVhcn1gLCBcIk1NL0REL1lZWVlcIik7XHJcbiAgICBjb25zdCB3ZWVrRGF5ID0geWVhclN0YXJ0RGF0ZS5kYXkoKTtcclxuXHJcbiAgICBjb25zdCBub09mRGF5cyA9IHdlZWtTdGFydERhdGUuZGlmZih5ZWFyU3RhcnREYXRlLCBcImRcIikgKyAxO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNvbnZlcnROZ2JEYXRlVG9Nb21lbnQobmdiRGF0ZTogTmdiRGF0ZSk6IHN0cmluZyB7XHJcbiAgICAgIGxldCBjb252ZXJ0ZWQgPSBtb21lbnQoKTtcclxuICAgICAgY29udmVydGVkLm1vbnRoKG5nYkRhdGUubW9udGggLSAxKTtcclxuICAgICAgY29udmVydGVkLmRhdGUobmdiRGF0ZS5kYXkpO1xyXG4gICAgICBjb252ZXJ0ZWQueWVhcihuZ2JEYXRlLnllYXIpO1xyXG4gICAgICByZXR1cm4gY29udmVydGVkLmZvcm1hdChcIk1NL0REL1lZWVlcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2hlY2tJZlllYXJJc0Jyb2FkY2FzdExlYXBZZWFyKCkge1xyXG4gICAgICBsZXQgaXNMZWFwWWVhciA9ICh3ZWVrWWVhciAlIDQgPT0gMCAmJiB3ZWVrWWVhciAlIDEwMCAhPSAwKSB8fCB3ZWVrWWVhciAlIDQwMCA9PSAwO1xyXG4gICAgICByZXR1cm4gKGlzTGVhcFllYXIgJiYgKHdlZWtEYXkgPT0gMCB8fCB3ZWVrRGF5ID09IDYpKSB8fCAoIWlzTGVhcFllYXIgJiYgd2Vla0RheSA9PSAwKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc0xlYXBZZWFyID0gY2hlY2tJZlllYXJJc0Jyb2FkY2FzdExlYXBZZWFyKCk7XHJcbiAgICBjb25zdCBkaXZpZGVyID0gaXNMZWFwWWVhciA/IDUzIDogNTI7XHJcbiAgICBjb25zdCBhZGRlciA9IGlzTGVhcFllYXIgPyAyIDogMTtcclxuXHJcbiAgICBsZXQgYnJvYWRjYXN0TnVtYmVyT2ZEYXlzID0gd2Vla0RheSArIG5vT2ZEYXlzO1xyXG4gICAgbGV0IGJyb2FkY2FzdFdlZWtOdW1iZXIgPSBicm9hZGNhc3ROdW1iZXJPZkRheXMgJSA3ID4gMCA/IGJyb2FkY2FzdE51bWJlck9mRGF5cyAvIDcgKyBhZGRlciA6IGJyb2FkY2FzdE51bWJlck9mRGF5cyAvIDc7XHJcblxyXG4gICAgaWYgKE1hdGguZmxvb3IoYnJvYWRjYXN0V2Vla051bWJlciAlIGRpdmlkZXIpID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBkaXZpZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoYnJvYWRjYXN0V2Vla051bWJlciAlIGRpdmlkZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gQ0hBTkdFU0BBTk5BTElCIENoYW5nZWQgdGhpcy5cclxuICAgIC8vIHRoaXMuY2FsZW5kYXJbXCJfX3Byb3RvX19cIl0uZ2V0V2Vla051bWJlciA9IHRoaXMuZ2V0V2Vla051bWJlcjtcclxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLmNhbGVuZGFyLCB7Z2V0V2Vla051bWJlcjogdGhpcy5nZXRXZWVrTnVtYmVyfSlcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5zZWxlY3RXZWVrKHRoaXMuZnJvbURhdGUpO1xyXG4gICAgdGhpcy5zZXRDYWxlbmRhck1hcCgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVdlZWtEYXRhKCkge1xyXG4gICAgdGhpcy53ZWVrT2JqZWN0cyA9IFtdO1xyXG5cclxuICAgIHRoaXMuZnJvbURhdGUgPSB0aGlzLmNhbGVuZGFyLmdldFRvZGF5KCk7XHJcbiAgICB0aGlzLnRvZGF5ID0gdGhpcy5jYWxlbmRhci5nZXRUb2RheSgpO1xyXG5cclxuICAgIGxldCBiYWNrRGF0ZWRQZXJpb2QgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlckRldGFpbHNcIikgfHwgJ3t9JykubG9ja2luZ19wZXJpb2RfZGF5cztcclxuICAgIGlmIChiYWNrRGF0ZWRQZXJpb2QgPCAwKSB7XHJcbiAgICAgIGxldCBkYXRlOiBOZ2JEYXRlID0gdGhpcy5jYWxlbmRhci5nZXRQcmV2KHRoaXMuY2FsZW5kYXIuZ2V0VG9kYXkoKSwgXCJkXCIsIE1hdGguYWJzKGJhY2tEYXRlZFBlcmlvZCkpO1xyXG4gICAgICB0aGlzLnRvZGF5ID0gTmdiRGF0ZS5mcm9tKGRhdGUpO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gTmdiRGF0ZS5mcm9tKGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERpc2FibGUgbW9udGhzIGJlZm9yZSBudW1iZXJPZk1vbnRoc1RvRW5hYmxlXHJcbiAgICB0aGlzLmRhdGVQaWNrZXJDb25maWcubWFya0Rpc2FibGVkID0gKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpID0+IHtcclxuICAgICAgbGV0IHByZXZpb3VzTW9udGggPSB0aGlzLmNhbGVuZGFyLmdldFByZXYodGhpcy50b2RheSwgXCJtXCIsIHRoaXMuY29uZmlnLm51bWJlck9mTW9udGhzVG9FbmFibGVJblBhc3QpO1xyXG4gICAgICBsZXQgcHJldmlvdXNEYXkgPSB0aGlzLmNhbGVuZGFyLmdldFByZXYocHJldmlvdXNNb250aCwgXCJkXCIsIDEpO1xyXG4gICAgICByZXR1cm4gIU5nYkRhdGUuZnJvbShwcmV2aW91c0RheSkuYmVmb3JlKGRhdGUpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZWREYXRlcygpO1xyXG4gICAgdGhpcy5mbGFnMSA9IGZhbHNlO1xyXG4gICAgdGhpcy5mbGFnMiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0V2VlayhkYXRlOiBOZ2JEYXRlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRlT2JqZWN0ID0gbmV3IERhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoIC0gMSwgZGF0ZS5kYXkpO1xyXG4gICAgbGV0IGNvbnN0cnVjdERhdGUgPSB0aGlzLmJ1aWxkRGF0ZShkYXRlT2JqZWN0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLnNlbGVjdE11bHRpcGxlV2Vla3MpIHtcclxuICAgICAgLy9TaW5nbGUgd2VlayBzZWxlY3Rpb25cclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY29uc3RydWN0U3RhcnREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IHRoaXMuY29uc3RydWN0RW5kRGF0ZShkYXRlT2JqZWN0KShjb25zdHJ1Y3REYXRlKTtcclxuICAgICAgdGhpcy53ZWVrTnVtYmVyR2VuZXJhdG9yKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZGF0ZS5iZWZvcmUodGhpcy5mcm9tRGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jb25zdHJ1Y3RTdGFydERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZmxhZzEpIHtcclxuICAgICAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZsYWcxID0gIXRoaXMuZmxhZzE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0ZS5hZnRlcih0aGlzLnRvRGF0ZSkpIHtcclxuICAgICAgICBpZiAodGhpcy5mbGFnMikge1xyXG4gICAgICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY29uc3RydWN0U3RhcnREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICAgICAgLy90aGlzLnRvRGF0ZSA9IHRoaXMuY29uc3RydWN0RW5kRGF0ZShkYXRlT2JqZWN0KShjb25zdHJ1Y3REYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mbGFnMiA9ICF0aGlzLmZsYWcyO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSB0aGlzLmNvbnN0cnVjdFN0YXJ0RGF0ZShkYXRlT2JqZWN0KShjb25zdHJ1Y3REYXRlKTtcclxuICAgICAgICB0aGlzLnRvRGF0ZSA9IHRoaXMuY29uc3RydWN0RW5kRGF0ZShkYXRlT2JqZWN0KShjb25zdHJ1Y3REYXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IG1vbWVudFN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudCh0aGlzLmZyb21EYXRlKSwgXCJNTS9ERC9ZWVlZXCIpO1xyXG4gICAgICAgIGxldCBtb21lbnRFbmREYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KHRoaXMudG9EYXRlKSwgXCJNTS9ERC9ZWVlZXCIpO1xyXG4gICAgICAgIGxldCBuZ2JEYXRlO1xyXG4gICAgICAgIHdoaWxlICghbW9tZW50U3RhcnREYXRlLmlzU2FtZShtb21lbnRFbmREYXRlKSkge1xyXG4gICAgICAgICAgbmdiRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1vbWVudFN0YXJ0RGF0ZSwgXCJNTS9ERC9ZWVlZXCIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJZkRhdGVJc0Rpc2FibGVkKG5nYkRhdGUpKSB7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbW9tZW50U3RhcnREYXRlLmFkZCgxLCBcImRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdEYXRlT2JqZWN0ID0gbmV3IERhdGUobmdiRGF0ZS55ZWFyLCBuZ2JEYXRlLm1vbnRoIC0gMSwgbmdiRGF0ZS5kYXkgLSAxKTtcclxuICAgICAgICBsZXQgY29uc3RydWN0RGF0ZSA9IHRoaXMuYnVpbGREYXRlKG5ld0RhdGVPYmplY3QpO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKG5ld0RhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLndlZWtOdW1iZXJHZW5lcmF0b3IoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLnNob3dBc0Ryb3Bkb3duKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3ZWVrTnVtYmVyR2VuZXJhdG9yKCk6IHZvaWQge1xyXG4gICAgbGV0IGRhdGVzID0gW107XHJcbiAgICBsZXQgd2VlayA9IFtdO1xyXG5cclxuICAgIGxldCBzdGFydERhdGUgPSBOZ2JEYXRlLmZyb20odGhpcy5mcm9tRGF0ZSk7XHJcbiAgICBsZXQgZW5kRGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLnRvRGF0ZSk7XHJcblxyXG4gICAgd2Vlay5wdXNoKHN0YXJ0RGF0ZSk7XHJcbiAgICB3aGlsZSAoZW5kRGF0ZSAhPSBudWxsICYmICFzdGFydERhdGUuZXF1YWxzKGVuZERhdGUpKSB7XHJcbiAgICAgIGxldCBkYXRlID0gdGhpcy5jYWxlbmRhci5nZXROZXh0KHN0YXJ0RGF0ZSwgXCJkXCIsIDEpO1xyXG4gICAgICBzdGFydERhdGUgPSBkYXRlO1xyXG4gICAgICB3ZWVrLnB1c2goZGF0ZSk7XHJcblxyXG4gICAgICAvLyBDb2xsZWN0IGFsbCBkYXlzIGluIHdlZWsgdG8gY2FsY3VsYXRlIHRoZSB3ZWVrIG51bWJlclxyXG4gICAgICBpZiAod2Vlay5sZW5ndGggPT0gNykge1xyXG4gICAgICAgIGRhdGVzLnB1c2god2Vlayk7XHJcbiAgICAgICAgd2VlayA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoKCh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2VsZWN0ID8/IDApID4gMCAmJiBkYXRlcy5sZW5ndGggPiAodGhpcy5jb25maWcubWF4V2Vla3NUb1NlbGVjdCA/PyAwKSkpIHtcclxuICAgICAgZGF0ZXMuc3BsaWNlKCh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2VsZWN0ID8/IDApLCBkYXRlcy5sZW5ndGggLSAodGhpcy5jb25maWcubWF4V2Vla3NUb1NlbGVjdCA/PyAwKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZXMoZGF0ZXMpO1xyXG5cclxuICAgIHRoaXMud2Vla051bWJlcnMgPSBbXTtcclxuICAgIHRoaXMud2Vla09iamVjdHMgPSBbXTtcclxuICAgIGlmIChkYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGRhdGUgb2YgZGF0ZXMpIHtcclxuICAgICAgICB0aGlzLndlZWtOdW1iZXJzLnB1c2goXCIgV2VlayBcIiArIHRoaXMuY2FsZW5kYXIuZ2V0V2Vla051bWJlcihkYXRlLCB0aGlzLmNvbmZpZy5maXJzdERheU9mV2VlaykpO1xyXG4gICAgICAgIGxldCBkYXRlcyA9IHRoaXMuZm9ybWF0dGVyKGRhdGVbMF0sIGRhdGVbNl0pO1xyXG4gICAgICAgIGxldCBkYXRlT2JqZWN0cyA9IHsgc3RhcnREYXRlOiBkYXRlcy5mb3JtYXR0ZWRTdGFydERhdGUsIGVuZERhdGU6IGRhdGVzLmZvcm1hdHRlZEVuZERhdGUgfTtcclxuICAgICAgICB0aGlzLndlZWtPYmplY3RzLnB1c2goZGF0ZU9iamVjdHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc3BsYXlUb1VJKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZERhdGVzKGRhdGVzOiBhbnkpIHtcclxuICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlc1swXVswXTtcclxuICAgIHRoaXMudG9EYXRlID0gZGF0ZXNbZGF0ZXMubGVuZ3RoIC0gMV1bNl07XHJcbiAgfVxyXG5cclxuICBmb3JtYXR0ZWREYXRlcygpIHtcclxuICAgIGxldCBwaXBlID0gbmV3IERhdGVQaXBlKFwiZW4tVVNcIik7XHJcbiAgICBsZXQgdGhpc09iaiA9IHRoaXM7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGZyb21EYXRlOiBOZ2JEYXRlLCB0b0RhdGU6IE5nYkRhdGUpIHtcclxuICAgICAgbGV0IGZyb21EYXRlT2JqZWN0ID0gbmV3IERhdGUoZnJvbURhdGUueWVhciwgZnJvbURhdGUubW9udGggLSAxLCBmcm9tRGF0ZS5kYXkpO1xyXG4gICAgICBsZXQgdG9EYXRlT2JqZWN0ID0gbmV3IERhdGUodG9EYXRlLnllYXIsIHRvRGF0ZS5tb250aCAtIDEsIHRvRGF0ZS5kYXkpO1xyXG4gICAgICB0aGlzT2JqLmZvcm1hdHRlZFN0YXJ0RGF0ZSA9IHBpcGUudHJhbnNmb3JtKGZyb21EYXRlT2JqZWN0LCB0aGlzT2JqLmNvbmZpZy5kYXRlRm9ybWF0Rm9yUmVxdWVzdCk7XHJcbiAgICAgIHRoaXNPYmouZm9ybWF0dGVkRW5kRGF0ZSA9IHBpcGUudHJhbnNmb3JtKHRvRGF0ZU9iamVjdCwgdGhpc09iai5jb25maWcuZGF0ZUZvcm1hdEZvclJlcXVlc3QpO1xyXG5cclxuICAgICAgdGhpc09iai5kYXRlVG9EaXNwbGF5ID1cclxuICAgICAgICBwaXBlLnRyYW5zZm9ybShmcm9tRGF0ZU9iamVjdCwgdGhpc09iai5jb25maWcuZGF0ZUZvcm1hdFRvRGlzcGxheSkgK1xyXG4gICAgICAgIFwiIHRvIFwiICtcclxuICAgICAgICBwaXBlLnRyYW5zZm9ybSh0b0RhdGVPYmplY3QsIHRoaXNPYmouY29uZmlnLmRhdGVGb3JtYXRUb0Rpc3BsYXkpO1xyXG4gICAgICByZXR1cm4gdGhpc09iajtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5VG9VSSgpIHtcclxuICAgIGlmICghdGhpcy5jb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrcyAmJiB0aGlzLmZyb21EYXRlICYmIHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIC8vIERpc3BsYXkgZm9yIG9ubHkgU2luZ2xlIFdlZWtcclxuICAgICAgdGhpcy5mb3JtYXR0ZXIodGhpcy5mcm9tRGF0ZSwgdGhpcy50b0RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRGlzcGxheSBmb3IgTXVsdGlwbGUgV2Vla3NcclxuICAgICAgaWYgKHRoaXMud2Vla051bWJlcnMubGVuZ3RoID4gKHRoaXMuY29uZmlnLm1heFdlZWtzVG9TaG93V2l0aFJlbWFpbmluZ0NvdW50ID8/IDApKSB7XHJcbiAgICAgICAgbGV0IHdlZWtEaXNwbGF5ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAodGhpcy5jb25maWcubWF4V2Vla3NUb1Nob3dXaXRoUmVtYWluaW5nQ291bnQgPz8gMCk7IGkrKykge1xyXG4gICAgICAgICAgd2Vla0Rpc3BsYXkucHVzaCh0aGlzLndlZWtOdW1iZXJzLnNoaWZ0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmVtYWluaW5nV2Vla3MgPSB0aGlzLndlZWtOdW1iZXJzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLndlZWtOdW1iZXJzID0gW107XHJcbiAgICAgICAgdGhpcy53ZWVrTnVtYmVycy5wdXNoKHdlZWtEaXNwbGF5ICsgXCIgK1wiICsgcmVtYWluaW5nV2Vla3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RTdGFydERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGZpcnN0RGF5T2ZXZWVrID0gdGhpcy5jb25maWcuZmlyc3REYXlPZldlZWs7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGNvbnN0cnVjdERhdGU6IGFueSkge1xyXG4gICAgICBsZXQgc3RhcnREYXkgPSBkYXRlLmdldERheSgpICE9IDAgPyAoZmlyc3REYXlPZldlZWsgPz8gMCkgLSBkYXRlLmdldERheSgpIDogLTY7XHJcbiAgICAgIHJldHVybiBjb25zdHJ1Y3REYXRlKHN0YXJ0RGF5KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RFbmREYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIGxldCBmaXJzdERheU9mV2VlayA9IHRoaXMuY29uZmlnLmZpcnN0RGF5T2ZXZWVrO1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjb25zdHJ1Y3REYXRlOiBhbnkpIHtcclxuICAgICAgbGV0IGVuZERheSA9IGRhdGUuZ2V0RGF5KCkgIT0gMCA/IChmaXJzdERheU9mV2VlayA/PyAwKSArIDYgLSBkYXRlLmdldERheSgpIDogMDtcclxuICAgICAgcmV0dXJuIGNvbnN0cnVjdERhdGUoZW5kRGF5KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBidWlsZERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXI6IG51bWJlcik6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgICAgbGV0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpICsgbnVtYmVyO1xyXG4gICAgICBjb25zdCBkYXRlT2JqZWN0ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRheSk7XHJcblxyXG4gICAgICBsZXQgbmdiRGF0ZU9iamVjdCA9IHt9IGFzIE5nYkRhdGU7XHJcbiAgICAgIG5nYkRhdGVPYmplY3QuZGF5ID0gZGF5O1xyXG5cclxuICAgICAgaWYgKG5nYkRhdGVPYmplY3QuZGF5ID4gMzEgfHwgbmdiRGF0ZU9iamVjdC5kYXkgPCAxKSB7XHJcbiAgICAgICAgbmdiRGF0ZU9iamVjdC5kYXkgPSBkYXRlT2JqZWN0LmdldERhdGUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbmdiRGF0ZU9iamVjdC5tb250aCA9IGRhdGVPYmplY3QuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgIG5nYkRhdGVPYmplY3QueWVhciA9IGRhdGVPYmplY3QuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgcmV0dXJuIE5nYkRhdGUuZnJvbShuZ2JEYXRlT2JqZWN0KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpc0hvdmVyZWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmZyb21EYXRlICYmICF0aGlzLnRvRGF0ZSAmJiB0aGlzLmhvdmVyZWREYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiYgZGF0ZS5iZWZvcmUodGhpcy5ob3ZlcmVkRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBpc0luc2lkZShkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMudG9EYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiYgZGF0ZS5iZWZvcmUodGhpcy50b0RhdGUpO1xyXG4gIH1cclxuXHJcbiAgaXNSYW5nZShkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHwgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHwgdGhpcy5pc0luc2lkZShkYXRlKSB8fCB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByZXZpb3VzV2VlaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZyb21EYXRlKSB7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jYWxlbmRhci5nZXRQcmV2KHRoaXMuZnJvbURhdGUsIFwiZFwiLCAxKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0UHJldih0aGlzLmZyb21EYXRlLCBcImRcIiwgdGhpcy5jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcclxuICAgIH1cclxuICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5leHRXZWVrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLmZyb21EYXRlLCBcImRcIiwgdGhpcy5jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNhbGVuZGFyLmdldE5leHQodGhpcy5mcm9tRGF0ZSwgXCJkXCIsIHRoaXMuY2FsZW5kYXIuZ2V0RGF5c1BlcldlZWsoKSAtIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53ZWVrTnVtYmVyR2VuZXJhdG9yKCk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2FsZW5kYXJNYXAoKSB7XHJcbiAgICBsZXQgZGF0ZU9iaiA9IHsgZnJvbURhdGU6IHRoaXMuZnJvbURhdGUsIHRvRGF0ZTogdGhpcy50b0RhdGUgfTtcclxuICAgIHRoaXMuY2FsZW5kYXJNYXAuc2V0KFwib2xkRGF0ZXNcIiwgZGF0ZU9iaik7XHJcbiAgfVxyXG5cclxuICBhcHBseUNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm11bHRpU2VsZWN0RHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVtaXRNdWx0aXBsZVdlZWtPYmplY3RzKSB7XHJcbiAgICAgIGxldCBkYXRlcyA9IHt9IGFzIFdlZWtPYmplY3Q7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlcyA9IHRoaXMuZm9ybWF0dGVyKHRoaXMuZnJvbURhdGUsIHRoaXMudG9EYXRlKTtcclxuICAgICAgZGF0ZXMuc3RhcnREYXRlID0gZm9ybWF0dGVkRGF0ZXMuZm9ybWF0dGVkU3RhcnREYXRlO1xyXG4gICAgICBkYXRlcy5lbmREYXRlID0gZm9ybWF0dGVkRGF0ZXMuZm9ybWF0dGVkRW5kRGF0ZTtcclxuICAgICAgdGhpcy5hcHBseVdlZWtDYWxlbmRhckNoYW5nZXMuZW1pdChkYXRlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFwcGx5V2Vla0NhbGVuZGFyQ2hhbmdlcy5lbWl0KHRoaXMud2Vla09iamVjdHMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRDYWxlbmRhck1hcCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJUb2dnbGVkLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaXNEcm9wZG93bk9wZW5lZEZvckNhbGVuZGFyKGRhdGVwaWNrZXI6IE5nYklucHV0RGF0ZXBpY2tlcikge1xyXG4gICAgdGhpcy5kYXRlcGlja2VyID0gZGF0ZXBpY2tlcjtcclxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIuaXNPcGVuKCkpIHtcclxuICAgICAgdGhpcy5yZXZlcnREYXRlcygpO1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgICAgdGhpcy5tdWx0aVNlbGVjdERyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlcGlja2VyLm9wZW4oKTtcclxuICAgICAgdGhpcy5tdWx0aVNlbGVjdERyb3Bkb3duT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnREYXRlcygpIHtcclxuICAgIHRoaXMubXVsdGlTZWxlY3REcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmNhbGVuZGFyTWFwLmdldChcIm9sZERhdGVzXCIpKSB7XHJcbiAgICAgIGxldCBkYXRlT2JqID0gdGhpcy5jYWxlbmRhck1hcC5nZXQoXCJvbGREYXRlc1wiKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGVPYmouZnJvbURhdGU7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gZGF0ZU9iai50b0RhdGU7XHJcbiAgICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgICB0aGlzLmRpc3BsYXlUb1VJKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0lmRGF0ZUlzRGlzYWJsZWQoZGF0ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JGdW5jID0gKG5nYkRhdGU6IE5nYkRhdGUpID0+IG5nYkRhdGUueWVhciA9PT0gZGF0ZS55ZWFyICYmIG5nYkRhdGUubW9udGggPT09IGRhdGUubW9udGggJiYgbmdiRGF0ZS5kYXkgPT09IGRhdGUuZGF5O1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKHZhbGlkYXRvckZ1bmMpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEYXRlcGlja2VyKGRhdGVwaWNrZXJSZWY6IGFueSkge1xyXG4gICAgZGF0ZXBpY2tlclJlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCIgKm5nSWY9XCJjb25maWcuc2hvd0FzRHJvcGRvd25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJkYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0KT1cInNlbGVjdFdlZWsoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoY2xvc2VkKT1cImlzRm9jdXNlZChmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlNb250aHNdPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbZGF5VGVtcGxhdGVdPVwidFwiXHJcbiAgICAgICAgICAgICAgICBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiXHJcbiAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiY29uZmlnLmZpcnN0RGF5T2ZXZWVrXCJcclxuICAgICAgICAgICAgICAgIFtzaG93V2Vla051bWJlcnNdPVwiY29uZmlnLnNob3dXZWVrTnVtYmVyc1wiXHJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXHJcbiAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLVNpbmdsZSB3ZWVrIHNlbGVjdC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrc1wiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiAzMHB4OyBmb250LXNpemU6IDEycHhcIj4gJm5ic3A7e3sgd2Vla051bWJlcnMgfX0gPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS13ZWVrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBuZXh0LXJvdW5kLWJ0blwiIChjbGljayk9XCJwcmV2aW91c1dlZWsoKVwiPiBuYXZpZ2F0ZV9uZXh0IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgI2RwRnJvbURhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBXZWVrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb25maWcuY3VzdG9tQ2xhc3MgPT0gJycgPyAnJyA6IGNvbmZpZy5jdXN0b21DbGFzc11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRlVG9EaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXNGb2N1c2VkKHRydWUpOyBpc0Ryb3Bkb3duT3BlbmVkRm9yQ2FsZW5kYXIoZGF0ZXBpY2tlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93blwiICpuZ0lmPSchZGF0ZXBpY2tlci5pc09wZW4oKScgKGNsaWNrKT1cImRhdGVwaWNrZXIub3BlbigpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSdtZGkgbWRpLW1lbnUtdXAnICpuZ0lmPVwiZGF0ZXBpY2tlci5pc09wZW4oKVwiIChjbGljayk9XCJpc0Ryb3Bkb3duT3BlbmVkRm9yQ2FsZW5kYXIoZGF0ZXBpY2tlcilcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcm91bmQtYnRuXCIgKGNsaWNrKT1cIm5leHRXZWVrKClcIj4gbmF2aWdhdGVfbmV4dCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tTXVsdGlwbGUgd2VlayBzZWxlY3QtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJjb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtd2Vla3NcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICNkcEZyb21EYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFdlZWtzXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29uZmlnLmN1c3RvbUNsYXNzID09ICcnID8gJycgOiBjb25maWcuY3VzdG9tQ2xhc3NdXCJcclxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ3ZWVrTnVtYmVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzRm9jdXNlZCh0cnVlKTsgaXNEcm9wZG93bk9wZW5lZEZvckNhbGVuZGFyKGRhdGVwaWNrZXIpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFtdWx0aVNlbGVjdERyb3Bkb3duT3BlblwiIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gbXVsdGlzZWxlY3QtaW5wdXQtYXJyb3dcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm11bHRpU2VsZWN0RHJvcGRvd25PcGVuXCIgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgbXVsdGlzZWxlY3QtaW5wdXQtYXJyb3dcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxuZ2ItZGF0ZXBpY2tlclxyXG4gICAgI3dlZWtQaWNrZXJcclxuICAgICpuZ0lmPVwiIWNvbmZpZy5zaG93QXNEcm9wZG93blwiXHJcbiAgICBbZGlzcGxheU1vbnRoc109XCIxXCJcclxuICAgIFtzdGFydERhdGVdPVwiZnJvbURhdGUhXCJcclxuICAgIFtmaXJzdERheU9mV2Vla109XCJjb25maWcuZmlyc3REYXlPZldlZWtcIlxyXG4gICAgW3Nob3dXZWVrTnVtYmVyc109XCJjb25maWcuc2hvd1dlZWtOdW1iZXJzXCJcclxuICAgIFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxyXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAoZGF0ZVNlbGVjdCk9XCJzZWxlY3RXZWVrKCRldmVudClcIlxyXG4gICAgW21hcmtEaXNhYmxlZF09XCJkaXNhYmxlZEZ1bmNcIlxyXG4+XHJcbjwvbmdiLWRhdGVwaWNrZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG0tMiBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5Q2hhbmdlcygpOyBjbG9zZURhdGVwaWNrZXIoZGF0ZXBpY2tlcilcIlxyXG4gICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzI2OGJmZjsgY29sb3I6ICNmZmZmZmZcIlxyXG4gICAgPlxyXG4gICAgICAgIEFwcGx5XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwicmV2ZXJ0RGF0ZXMoKTsgY2xvc2VEYXRlcGlja2VyKGRhdGVwaWNrZXIpXCJcclxuICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDEzOSwgMjU1LCAwLjEyKTsgY29sb3I6ICMyNjhiZmZcIlxyXG4gICAgPlxyXG4gICAgICAgIENhbmNlbFxyXG4gICAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3QgbGV0LWRhdGUgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCIgbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cclxuICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJjdXN0b20tZGF5XCJcclxuICAgICAgICBbY2xhc3MuZm9jdXNlZF09XCJmb2N1c2VkXCJcclxuICAgICAgICBbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKVwiXHJcbiAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlcmVkRGF0ZSA9IGRhdGVcIlxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWREYXRlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1cclxuXHJcbjxocj5cclxuXHJcbjxwcmU+RnJvbToge3sgZnJvbURhdGUgfCBqc29uIH19IDwvcHJlPlxyXG48cHJlPlRvOiB7eyB0b0RhdGUgfCBqc29uIH19IDwvcHJlPlxyXG48cHJlPndlZWtOdW1iZXJzOiB7eyB3ZWVrTnVtYmVycyB8IGpzb24gfX0gPC9wcmU+XHJcblxyXG4tLT5cclxuIl19
@@ -0,0 +1,2 @@
1
+ export * from "./public-api";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3B1YmxpYy1hcGlcIjsiXX0=
@@ -0,0 +1,6 @@
1
+ //Modules
2
+ export * from "./anna-dropdown-lib.module";
3
+ //Components
4
+ export * from "./components/anna-calendar-filter/anna-calendar-filter.component";
5
+ export * from "./components/anna-week-calendar-filter/anna-week-calendar-filter.component";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZHJvcGRvd24tbGliL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUztBQUNULGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsWUFBWTtBQUNaLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyw0RUFBNEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vTW9kdWxlc1xyXG5leHBvcnQgKiBmcm9tIFwiLi9hbm5hLWRyb3Bkb3duLWxpYi5tb2R1bGVcIjtcclxuXHJcbi8vQ29tcG9uZW50c1xyXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2FubmEtY2FsZW5kYXItZmlsdGVyL2FubmEtY2FsZW5kYXItZmlsdGVyLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnRcIjsiXX0=
@@ -0,0 +1,86 @@
1
+ // Angular import statements
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule } from '@angular/core';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatRadioModule } from "@angular/material/radio";
6
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
7
+ import { MatTableModule } from '@angular/material/table';
8
+ // Third party import statements
9
+ import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
10
+ import { NgxSliderModule } from '@angular-slider/ngx-slider';
11
+ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
12
+ // User defined import statements
13
+ import { AnnaNonEditableGenericTableComponent } from './components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';
14
+ import { AnnaSortComponent } from './components/anna-sort/anna-sort.component';
15
+ import { AnnaTableVirtualScrollViewportComponent } from './components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';
16
+ import { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './directives/anna-fixed-row-size-table-virtual-scroll-strategy';
17
+ import { AnnaVirtualTableDirective } from './directives/anna-virtual-table';
18
+ //sub-entries of anna lib import statement
19
+ import { AnnaDropdownLibModule } from '@annalib/anna-core/src/lib/anna-dropdown-lib';
20
+ import { AnnaCoreSharedLibModule } from '@annalib/anna-core/src/lib/anna-core-shared-lib';
21
+ import * as i0 from "@angular/core";
22
+ export class AnnaGenericTableLibModule {
23
+ }
24
+ AnnaGenericTableLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ AnnaGenericTableLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, declarations: [AnnaNonEditableGenericTableComponent,
26
+ AnnaSortComponent,
27
+ AnnaTableVirtualScrollViewportComponent,
28
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
29
+ AnnaVirtualTableDirective], imports: [CommonModule,
30
+ NgbModule,
31
+ AnnaDropdownLibModule,
32
+ MatButtonToggleModule,
33
+ FormsModule,
34
+ NgxSliderModule,
35
+ NgxSkeletonLoaderModule,
36
+ MatTableModule,
37
+ MatRadioModule,
38
+ AnnaCoreSharedLibModule], exports: [AnnaNonEditableGenericTableComponent,
39
+ AnnaSortComponent,
40
+ AnnaTableVirtualScrollViewportComponent,
41
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
42
+ AnnaVirtualTableDirective] });
43
+ AnnaGenericTableLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, imports: [[
44
+ CommonModule,
45
+ NgbModule,
46
+ AnnaDropdownLibModule,
47
+ MatButtonToggleModule,
48
+ FormsModule,
49
+ NgxSliderModule,
50
+ NgxSkeletonLoaderModule,
51
+ MatTableModule,
52
+ MatRadioModule,
53
+ AnnaCoreSharedLibModule
54
+ ]] });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, decorators: [{
56
+ type: NgModule,
57
+ args: [{
58
+ declarations: [
59
+ AnnaNonEditableGenericTableComponent,
60
+ AnnaSortComponent,
61
+ AnnaTableVirtualScrollViewportComponent,
62
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
63
+ AnnaVirtualTableDirective,
64
+ ],
65
+ imports: [
66
+ CommonModule,
67
+ NgbModule,
68
+ AnnaDropdownLibModule,
69
+ MatButtonToggleModule,
70
+ FormsModule,
71
+ NgxSliderModule,
72
+ NgxSkeletonLoaderModule,
73
+ MatTableModule,
74
+ MatRadioModule,
75
+ AnnaCoreSharedLibModule
76
+ ],
77
+ exports: [
78
+ AnnaNonEditableGenericTableComponent,
79
+ AnnaSortComponent,
80
+ AnnaTableVirtualScrollViewportComponent,
81
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
82
+ AnnaVirtualTableDirective
83
+ ]
84
+ }]
85
+ }] });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1nZW5lcmljLXRhYmxlLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc5RCxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0ZBQXdGLENBQUM7QUFDOUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDdkosT0FBTyxFQUFFLG1EQUFtRCxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDckksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQWdDMUYsTUFBTSxPQUFPLHlCQUF5Qjs7c0hBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLGlCQTNCbEMsb0NBQW9DO1FBQ3BDLGlCQUFpQjtRQUNqQix1Q0FBdUM7UUFDdkMsbURBQW1EO1FBQ25ELHlCQUF5QixhQUd6QixZQUFZO1FBQ1osU0FBUztRQUNULHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsV0FBVztRQUNYLGVBQWU7UUFDZix1QkFBdUI7UUFDdkIsY0FBYztRQUNkLGNBQWM7UUFDZCx1QkFBdUIsYUFHdkIsb0NBQW9DO1FBQ3BDLGlCQUFpQjtRQUNqQix1Q0FBdUM7UUFDdkMsbURBQW1EO1FBQ25ELHlCQUF5Qjt1SEFJaEIseUJBQXlCLFlBckIzQjtZQUNQLFlBQVk7WUFDWixTQUFTO1lBQ1QscUJBQXFCO1lBQ3JCLHFCQUFxQjtZQUNyQixXQUFXO1lBQ1gsZUFBZTtZQUNmLHVCQUF1QjtZQUN2QixjQUFjO1lBQ2QsY0FBYztZQUNkLHVCQUF1QjtTQUN4QjsyRkFVVSx5QkFBeUI7a0JBN0JyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQ0FBb0M7d0JBQ3BDLGlCQUFpQjt3QkFDakIsdUNBQXVDO3dCQUN2QyxtREFBbUQ7d0JBQ25ELHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLHVCQUF1QjtxQkFDeEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9DQUFvQzt3QkFDcEMsaUJBQWlCO3dCQUNqQix1Q0FBdUM7d0JBQ3ZDLG1EQUFtRDt3QkFDbkQseUJBQXlCO3FCQUMxQjtpQkFFRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3JhZGlvXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgTmd4U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXItc2xpZGVyL25neC1zbGlkZXInO1xyXG5pbXBvcnQgeyBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSB9IGZyb20gJ25neC1za2VsZXRvbi1sb2FkZXInO1xyXG5cclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFTb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FubmEtc29ydC9hbm5hLXNvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYVRhYmxlVmlydHVhbFNjcm9sbFZpZXdwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FubmEtdGFibGUtdmlydHVhbC1zY3JvbGwtdmlld3BvcnQvYW5uYS10YWJsZS12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbm5hRml4ZWRSb3dTaXplVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3lEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYW5uYS1maXhlZC1yb3ctc2l6ZS10YWJsZS12aXJ0dWFsLXNjcm9sbC1zdHJhdGVneSc7XHJcbmltcG9ydCB7IEFubmFWaXJ0dWFsVGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYW5uYS12aXJ0dWFsLXRhYmxlJztcclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBBbm5hRHJvcGRvd25MaWJNb2R1bGUgfSBmcm9tICdAYW5uYWxpYi9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYic7XHJcbmltcG9ydCB7IEFubmFDb3JlU2hhcmVkTGliTW9kdWxlIH0gZnJvbSAnQGFubmFsaWIvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1jb3JlLXNoYXJlZC1saWInO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQsXHJcbiAgICBBbm5hU29ydENvbXBvbmVudCxcclxuICAgIEFubmFUYWJsZVZpcnR1YWxTY3JvbGxWaWV3cG9ydENvbXBvbmVudCxcclxuICAgIEFubmFGaXhlZFJvd1NpemVUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneURpcmVjdGl2ZSxcclxuICAgIEFubmFWaXJ0dWFsVGFibGVEaXJlY3RpdmUsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBOZ2JNb2R1bGUsXHJcbiAgICBBbm5hRHJvcGRvd25MaWJNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE5neFNsaWRlck1vZHVsZSxcclxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxyXG4gICAgTWF0VGFibGVNb2R1bGUsXHJcbiAgICBNYXRSYWRpb01vZHVsZSxcclxuICAgIEFubmFDb3JlU2hhcmVkTGliTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQsXHJcbiAgICBBbm5hU29ydENvbXBvbmVudCxcclxuICAgIEFubmFUYWJsZVZpcnR1YWxTY3JvbGxWaWV3cG9ydENvbXBvbmVudCxcclxuICAgIEFubmFGaXhlZFJvd1NpemVUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneURpcmVjdGl2ZSxcclxuICAgIEFubmFWaXJ0dWFsVGFibGVEaXJlY3RpdmVcclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYUdlbmVyaWNUYWJsZUxpYk1vZHVsZSB7IH1cclxuIl19