@annalib/anna-core 3.1.1 → 3.1.2

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 (144) hide show
  1. package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +1 -1
  2. package/esm2020/lib/anna-core.module.mjs +156 -0
  3. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +5 -4
  4. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +11 -9
  5. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +29 -19
  6. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +3 -6
  7. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +3 -3
  8. 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 +2 -2
  9. package/esm2020/public-api.mjs +41 -4
  10. package/fesm2015/annalib-anna-core.mjs +3694 -3757
  11. package/fesm2015/annalib-anna-core.mjs.map +1 -1
  12. package/fesm2020/annalib-anna-core.mjs +3686 -3749
  13. package/fesm2020/annalib-anna-core.mjs.map +1 -1
  14. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +1 -1
  15. package/lib/anna-core.module.d.ts +32 -0
  16. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +1 -1
  17. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +4 -1
  18. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +9 -1
  19. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +2 -1
  20. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +1 -1
  21. package/package.json +1 -25
  22. package/public-api.d.ts +28 -3
  23. package/src/lib/anna-assets/images/bg-heads.png +0 -0
  24. package/src/lib/anna-common-scss/_animate.scss +27 -0
  25. package/src/lib/anna-common-scss/_colors.scss +107 -0
  26. package/src/lib/anna-common-scss/_dashboard-partials.scss +104 -0
  27. package/src/lib/anna-common-scss/_filters.scss +603 -0
  28. package/src/lib/anna-common-scss/_font.scss +10 -0
  29. package/src/lib/anna-common-scss/_fonts.scss +86 -0
  30. package/src/lib/anna-common-scss/_legend.scss +11 -0
  31. package/src/lib/anna-common-scss/_modal.scss +37 -0
  32. package/src/lib/anna-common-scss/_ng-select.scss +176 -0
  33. package/src/lib/anna-common-scss/_sort.scss +30 -0
  34. package/src/lib/anna-common-scss/_toggle.scss +84 -0
  35. package/src/lib/anna-common-scss/style.scss +1 -0
  36. package/esm2020/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +0 -69
  37. package/esm2020/lib/anna-core-shared-lib/index.mjs +0 -2
  38. package/esm2020/lib/anna-core-shared-lib/public-api.mjs +0 -29
  39. package/esm2020/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +0 -43
  40. package/esm2020/lib/anna-dropdown-lib/index.mjs +0 -2
  41. package/esm2020/lib/anna-dropdown-lib/public-api.mjs +0 -6
  42. package/esm2020/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +0 -111
  43. package/esm2020/lib/anna-generic-table-lib/index.mjs +0 -2
  44. package/esm2020/lib/anna-generic-table-lib/public-api.mjs +0 -10
  45. package/esm2020/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +0 -69
  46. package/esm2020/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +0 -5
  47. package/esm2020/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -15
  48. package/esm2020/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +0 -35
  49. package/esm2020/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -15
  50. package/esm2020/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
  51. package/esm2020/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -15
  52. package/esm2020/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -21
  53. package/esm2020/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -15
  54. package/esm2020/src/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -34
  55. package/esm2020/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +0 -27
  56. package/esm2020/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
  57. package/esm2020/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
  58. package/esm2020/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -3
  59. package/esm2020/src/lib/anna-core-shared-lib/models/anna-sort.model.mjs +0 -2
  60. package/esm2020/src/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +0 -30
  61. package/esm2020/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +0 -31
  62. package/esm2020/src/lib/anna-core-shared-lib/public-api.mjs +0 -29
  63. package/esm2020/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +0 -184
  64. package/esm2020/src/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -419
  65. package/esm2020/src/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +0 -48
  66. package/esm2020/src/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -133
  67. package/esm2020/src/lib/anna-core-shared-lib/services/anna-sort.service.mjs +0 -147
  68. package/esm2020/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +0 -43
  69. package/esm2020/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +0 -5
  70. package/esm2020/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -99
  71. package/esm2020/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -360
  72. package/esm2020/src/lib/anna-dropdown-lib/public-api.mjs +0 -6
  73. package/esm2020/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +0 -111
  74. package/esm2020/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +0 -5
  75. package/esm2020/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -1674
  76. package/esm2020/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -70
  77. package/esm2020/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
  78. 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 +0 -189
  79. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +0 -2
  80. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
  81. package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +0 -2
  82. package/esm2020/src/lib/anna-generic-table-lib/public-api.mjs +0 -10
  83. package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +0 -1204
  84. package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +0 -1
  85. package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +0 -493
  86. package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +0 -1
  87. package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +0 -2546
  88. package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +0 -1
  89. package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +0 -1204
  90. package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +0 -1
  91. package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +0 -491
  92. package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +0 -1
  93. package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +0 -2545
  94. package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +0 -1
  95. package/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +0 -16
  96. package/lib/anna-core-shared-lib/index.d.ts +0 -1
  97. package/lib/anna-core-shared-lib/public-api.d.ts +0 -21
  98. package/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +0 -11
  99. package/lib/anna-dropdown-lib/index.d.ts +0 -1
  100. package/lib/anna-dropdown-lib/public-api.d.ts +0 -3
  101. package/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +0 -23
  102. package/lib/anna-generic-table-lib/index.d.ts +0 -1
  103. package/lib/anna-generic-table-lib/public-api.d.ts +0 -6
  104. package/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +0 -16
  105. package/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.d.ts +0 -5
  106. package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +0 -8
  107. package/src/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +0 -16
  108. package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +0 -8
  109. package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +0 -11
  110. package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +0 -8
  111. package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +0 -11
  112. package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +0 -8
  113. package/src/lib/anna-core-shared-lib/constants/shared.constant.d.ts +0 -32
  114. package/src/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +0 -9
  115. package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +0 -12
  116. package/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +0 -95
  117. package/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +0 -72
  118. package/src/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +0 -6
  119. package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +0 -25
  120. package/src/lib/anna-core-shared-lib/package.json +0 -10
  121. package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +0 -9
  122. package/src/lib/anna-core-shared-lib/public-api.d.ts +0 -21
  123. package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +0 -25
  124. package/src/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +0 -73
  125. package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +0 -14
  126. package/src/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +0 -21
  127. package/src/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +0 -16
  128. package/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +0 -11
  129. package/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.d.ts +0 -5
  130. package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +0 -34
  131. package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +0 -67
  132. package/src/lib/anna-dropdown-lib/package.json +0 -10
  133. package/src/lib/anna-dropdown-lib/public-api.d.ts +0 -3
  134. package/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +0 -23
  135. package/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.d.ts +0 -5
  136. package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +0 -259
  137. package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +0 -16
  138. package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +0 -141
  139. 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 +0 -89
  140. package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +0 -1
  141. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +0 -45
  142. package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +0 -1
  143. package/src/lib/anna-generic-table-lib/package.json +0 -10
  144. package/src/lib/anna-generic-table-lib/public-api.d.ts +0 -6
@@ -1,360 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFeEgsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixpQ0FBaUM7QUFFakMsMENBQTBDO0FBQzFDLE9BQU8sRUFBNkIseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7QUFRaEosTUFBTSxPQUFPLHlCQUF5QjtJQWdFcEMsWUFDVSxRQUFxQixFQUNyQixnQkFBcUMsRUFDckMseUJBQW9ELEVBQ3BELG1CQUE0QztRQUg1QyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsOEJBQXlCLEdBQXpCLHlCQUF5QixD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eUJBQXlCOzBHQUF6Qix5QkFBeUIsNmFDbkJ0Qyx3aUtBaUlBOzJGRDlHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0NBQW9DO2tOQXdCMUIsZ0JBQWdCO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ0EsZUFBZTtzQkFBaEMsS0FBSzt1QkFBQyxTQUFTO2dCQUNTLGFBQWE7c0JBQXJDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUXlCLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUNaLHdCQUF3QjtzQkFBeEMsTUFBTTt1QkFBQyxPQUFPO2dCQUNZLGVBQWU7c0JBQXpDLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlLCBOZ2JEYXRlcGlja2VyQ29uZmlnLCBOZ2JEYXRlU3RydWN0LCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBXZWVrT2JqZWN0LCBJV2Vla0NhbGVuZGFyLCBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLCBBbm5hR2xvYmFsQ29uZmlnU2VydmljZSB9IGZyb20gXCJAYW5uYWxpYi9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYlwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFXZWVrQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG4gIGhvdmVyZWREYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9EYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9kYXk6IE5nYkRhdGU7XHJcblxyXG4gIG1vZGVsOiBOZ2JEYXRlU3RydWN0O1xyXG5cclxuICB3ZWVrTnVtYmVyczogc3RyaW5nW10gPSBbXTtcclxuICBwaXBlOiBEYXRlUGlwZTtcclxuICBkYXRlVG9EaXNwbGF5OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHdlZWtPYmplY3RzOiBXZWVrT2JqZWN0W107XHJcbiAgbXVsdGlTZWxlY3REcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkYXRlcGlja2VyOiBOZ2JJbnB1dERhdGVwaWNrZXI7XHJcbiAgcHJpdmF0ZSBmb3JtYXR0ZXI6IGFueTtcclxuICBwdWJsaWMgZm9ybWF0dGVkU3RhcnREYXRlOiBzdHJpbmc7XHJcbiAgcHVibGljIGZvcm1hdHRlZEVuZERhdGU6IHN0cmluZztcclxuICBwcml2YXRlIGNhbGVuZGFyTWFwID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgZmxhZzE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBmbGFnMjogYm9vbGVhbjtcclxuICBASW5wdXQoXCJmcm9tLWRhdGVcIikgc2VsZWN0ZWRGcm9tRGF0ZTogTmdiRGF0ZVN0cnVjdDtcclxuICBASW5wdXQoXCJ0by1kYXRlXCIpIHNlbGVjdGVkRW5kRGF0ZTogTmdiRGF0ZVN0cnVjdDtcclxuICBASW5wdXQoXCJkaXNhYmxlZC1kYXRlc1wiKSBkaXNhYmxlZERhdGVzOiBOZ2JEYXRlW10gPSBbXTtcclxuICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogYW55O1xyXG5cclxuICBkaXNhYmxlZEZ1bmM6IGFueTtcclxuICBzdGF0ZTogYW55O1xyXG5cclxuICAvL1NldHRpbmcgdGhlIGRlZmF1bHQgdmFsdWVzO1xyXG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZXM6IElXZWVrQ2FsZW5kYXI7XHJcblxyXG4gIEBJbnB1dChcIndlZWstY2FsZW5kYXItY29uZmlnXCIpIGNvbmZpZzogSVdlZWtDYWxlbmRhcjtcclxuICBAT3V0cHV0KFwiYXBwbHlcIikgYXBwbHlXZWVrQ2FsZW5kYXJDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoXCJ0b2dnbGUtY2FsZW5kYXJcIikgY2FsZW5kYXJUb2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvL2lmIHNvbWUgdmFsdWVzIGFyZSBub3Qgc2VudCwgc2V0dGluZyB0aGUgZGVmYXVsdCB2YWx1ZXNcclxuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMgPSB0aGlzLmdsb2JhbENvbmZpZ1NlcnZpY2UuZGVmYXVsdFdlZWtDYWxlbmRhckNvbmZpZztcclxuICAgIHRoaXMuY29uZmlnID0geyAuLi50aGlzLl9kZWZhdWx0VmFsdWVzLCAuLi50aGlzLmNvbmZpZyB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5zZWxlY3RDdXJyZW50V2Vlaykge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVXZWVrRGF0YSgpO1xyXG4gICAgICB0aGlzLmZyb21EYXRlICYmIHRoaXMuc2VsZWN0V2Vlayh0aGlzLmZyb21EYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVkRGF0ZXMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZyb21EYXRlICYmIHRoaXMuc2VsZWN0ZWRFbmREYXRlICYmIHRoaXMuY29uZmlnKSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0V2Vlayh0aGlzLmZyb21EYXRlKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLnNlbGVjdGVkRnJvbURhdGUpO1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLnNlbGVjdGVkRW5kRGF0ZSk7XHJcbiAgICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgICB0aGlzLmRpc3BsYXlUb1VJKCk7XHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJNYXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCA+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
@@ -1,6 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZHJvcGRvd24tbGliL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUztBQUNULGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsWUFBWTtBQUNaLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyw0RUFBNEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vTW9kdWxlc1xyXG5leHBvcnQgKiBmcm9tIFwiLi9hbm5hLWRyb3Bkb3duLWxpYi5tb2R1bGVcIjtcclxuXHJcbi8vQ29tcG9uZW50c1xyXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2FubmEtY2FsZW5kYXItZmlsdGVyL2FubmEtY2FsZW5kYXItZmlsdGVyLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnRcIjsiXX0=
@@ -1,111 +0,0 @@
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
- import { NgCircleProgressModule } from 'ng-circle-progress';
13
- // User defined import statements
14
- import { AnnaNonEditableGenericTableComponent } from './components/anna-non-editable-generic-table/anna-non-editable-generic-table.component';
15
- import { AnnaSortComponent } from './components/anna-sort/anna-sort.component';
16
- import { AnnaTableVirtualScrollViewportComponent } from './components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component';
17
- import { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './directives/anna-fixed-row-size-table-virtual-scroll-strategy';
18
- import { AnnaVirtualTableDirective } from './directives/anna-virtual-table';
19
- //sub-entries of anna lib import statement
20
- import { AnnaDropdownLibModule } from '@annalib/anna-core/src/lib/anna-dropdown-lib';
21
- import { AnnaCoreSharedLibModule } from '@annalib/anna-core/src/lib/anna-core-shared-lib';
22
- import { ScrollingModule } from '@angular/cdk/scrolling';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "ng-circle-progress";
25
- export class AnnaGenericTableLibModule {
26
- }
27
- AnnaGenericTableLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
- AnnaGenericTableLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, declarations: [AnnaNonEditableGenericTableComponent,
29
- AnnaSortComponent,
30
- AnnaTableVirtualScrollViewportComponent,
31
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
32
- AnnaVirtualTableDirective], imports: [CommonModule,
33
- NgbModule,
34
- AnnaDropdownLibModule,
35
- MatButtonToggleModule,
36
- FormsModule,
37
- NgxSliderModule,
38
- NgxSkeletonLoaderModule,
39
- MatTableModule,
40
- MatRadioModule,
41
- ScrollingModule,
42
- AnnaCoreSharedLibModule,
43
- AnnaCoreSharedLibModule, i1.NgCircleProgressModule], exports: [AnnaNonEditableGenericTableComponent,
44
- AnnaSortComponent,
45
- AnnaTableVirtualScrollViewportComponent,
46
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
47
- AnnaVirtualTableDirective] });
48
- AnnaGenericTableLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, imports: [[
49
- CommonModule,
50
- NgbModule,
51
- AnnaDropdownLibModule,
52
- MatButtonToggleModule,
53
- FormsModule,
54
- NgxSliderModule,
55
- NgxSkeletonLoaderModule,
56
- MatTableModule,
57
- MatRadioModule,
58
- ScrollingModule,
59
- AnnaCoreSharedLibModule,
60
- AnnaCoreSharedLibModule,
61
- NgCircleProgressModule.forRoot({
62
- radius: 100,
63
- outerStrokeWidth: 16,
64
- innerStrokeWidth: 8,
65
- outerStrokeColor: '#78C000',
66
- innerStrokeColor: '#C7E596',
67
- animationDuration: 300,
68
- }),
69
- ]] });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaGenericTableLibModule, decorators: [{
71
- type: NgModule,
72
- args: [{
73
- declarations: [
74
- AnnaNonEditableGenericTableComponent,
75
- AnnaSortComponent,
76
- AnnaTableVirtualScrollViewportComponent,
77
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
78
- AnnaVirtualTableDirective,
79
- ],
80
- imports: [
81
- CommonModule,
82
- NgbModule,
83
- AnnaDropdownLibModule,
84
- MatButtonToggleModule,
85
- FormsModule,
86
- NgxSliderModule,
87
- NgxSkeletonLoaderModule,
88
- MatTableModule,
89
- MatRadioModule,
90
- ScrollingModule,
91
- AnnaCoreSharedLibModule,
92
- AnnaCoreSharedLibModule,
93
- NgCircleProgressModule.forRoot({
94
- radius: 100,
95
- outerStrokeWidth: 16,
96
- innerStrokeWidth: 8,
97
- outerStrokeColor: '#78C000',
98
- innerStrokeColor: '#C7E596',
99
- animationDuration: 300,
100
- }),
101
- ],
102
- exports: [
103
- AnnaNonEditableGenericTableComponent,
104
- AnnaSortComponent,
105
- AnnaTableVirtualScrollViewportComponent,
106
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
107
- AnnaVirtualTableDirective
108
- ]
109
- }]
110
- }] });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1nZW5lcmljLXRhYmxlLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RCxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0ZBQXdGLENBQUM7QUFDOUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDdkosT0FBTyxFQUFFLG1EQUFtRCxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDckksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBMEN6RCxNQUFNLE9BQU8seUJBQXlCOztzSEFBekIseUJBQXlCO3VIQUF6Qix5QkFBeUIsaUJBckNsQyxvQ0FBb0M7UUFDcEMsaUJBQWlCO1FBQ2pCLHVDQUF1QztRQUN2QyxtREFBbUQ7UUFDbkQseUJBQXlCLGFBR3pCLFlBQVk7UUFDWixTQUFTO1FBQ1QscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQixXQUFXO1FBQ1gsZUFBZTtRQUNmLHVCQUF1QjtRQUN2QixjQUFjO1FBQ2QsY0FBYztRQUNkLGVBQWU7UUFDZix1QkFBdUI7UUFDdkIsdUJBQXVCLHdDQVd2QixvQ0FBb0M7UUFDcEMsaUJBQWlCO1FBQ2pCLHVDQUF1QztRQUN2QyxtREFBbUQ7UUFDbkQseUJBQXlCO3VIQUloQix5QkFBeUIsWUEvQjNCO1lBQ1AsWUFBWTtZQUNaLFNBQVM7WUFDVCxxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLFdBQVc7WUFDWCxlQUFlO1lBQ2YsdUJBQXVCO1lBQ3ZCLGNBQWM7WUFDZCxjQUFjO1lBQ2QsZUFBZTtZQUNmLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsc0JBQXNCLENBQUMsT0FBTyxDQUFDO2dCQUM3QixNQUFNLEVBQUUsR0FBRztnQkFDWCxnQkFBZ0IsRUFBRSxFQUFFO2dCQUNwQixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixnQkFBZ0IsRUFBRSxTQUFTO2dCQUMzQixnQkFBZ0IsRUFBRSxTQUFTO2dCQUMzQixpQkFBaUIsRUFBRSxHQUFHO2FBQ3ZCLENBQUM7U0FDSDsyRkFVVSx5QkFBeUI7a0JBdkNyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQ0FBb0M7d0JBQ3BDLGlCQUFpQjt3QkFDakIsdUNBQXVDO3dCQUN2QyxtREFBbUQ7d0JBQ25ELHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHNCQUFzQixDQUFDLE9BQU8sQ0FBQzs0QkFDN0IsTUFBTSxFQUFFLEdBQUc7NEJBQ1gsZ0JBQWdCLEVBQUUsRUFBRTs0QkFDcEIsZ0JBQWdCLEVBQUUsQ0FBQzs0QkFDbkIsZ0JBQWdCLEVBQUUsU0FBUzs0QkFDM0IsZ0JBQWdCLEVBQUUsU0FBUzs0QkFDM0IsaUJBQWlCLEVBQUUsR0FBRzt5QkFDdkIsQ0FBQztxQkFDSDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0NBQW9DO3dCQUNwQyxpQkFBaUI7d0JBQ2pCLHVDQUF1Qzt3QkFDdkMsbURBQW1EO3dCQUNuRCx5QkFBeUI7cUJBQzFCO2lCQUVGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW9cIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBOZ3hTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci1zbGlkZXIvbmd4LXNsaWRlcic7XHJcbmltcG9ydCB7IE5neFNrZWxldG9uTG9hZGVyTW9kdWxlIH0gZnJvbSAnbmd4LXNrZWxldG9uLWxvYWRlcic7XHJcbmltcG9ydCB7IE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICduZy1jaXJjbGUtcHJvZ3Jlc3MnO1xyXG5cclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFTb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FubmEtc29ydC9hbm5hLXNvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYVRhYmxlVmlydHVhbFNjcm9sbFZpZXdwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FubmEtdGFibGUtdmlydHVhbC1zY3JvbGwtdmlld3BvcnQvYW5uYS10YWJsZS12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbm5hRml4ZWRSb3dTaXplVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3lEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYW5uYS1maXhlZC1yb3ctc2l6ZS10YWJsZS12aXJ0dWFsLXNjcm9sbC1zdHJhdGVneSc7XHJcbmltcG9ydCB7IEFubmFWaXJ0dWFsVGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYW5uYS12aXJ0dWFsLXRhYmxlJztcclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBBbm5hRHJvcGRvd25MaWJNb2R1bGUgfSBmcm9tICdAYW5uYWxpYi9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYic7XHJcbmltcG9ydCB7IEFubmFDb3JlU2hhcmVkTGliTW9kdWxlIH0gZnJvbSAnQGFubmFsaWIvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1jb3JlLXNoYXJlZC1saWInO1xyXG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQW5uYU5vbkVkaXRhYmxlR2VuZXJpY1RhYmxlQ29tcG9uZW50LFxyXG4gICAgQW5uYVNvcnRDb21wb25lbnQsXHJcbiAgICBBbm5hVGFibGVWaXJ0dWFsU2Nyb2xsVmlld3BvcnRDb21wb25lbnQsXHJcbiAgICBBbm5hRml4ZWRSb3dTaXplVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3lEaXJlY3RpdmUsXHJcbiAgICBBbm5hVmlydHVhbFRhYmxlRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTmdiTW9kdWxlLFxyXG4gICAgQW5uYURyb3Bkb3duTGliTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBOZ3hTbGlkZXJNb2R1bGUsXHJcbiAgICBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0UmFkaW9Nb2R1bGUsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBBbm5hQ29yZVNoYXJlZExpYk1vZHVsZSxcclxuICAgIEFubmFDb3JlU2hhcmVkTGliTW9kdWxlLFxyXG4gICAgTmdDaXJjbGVQcm9ncmVzc01vZHVsZS5mb3JSb290KHtcclxuICAgICAgcmFkaXVzOiAxMDAsXHJcbiAgICAgIG91dGVyU3Ryb2tlV2lkdGg6IDE2LFxyXG4gICAgICBpbm5lclN0cm9rZVdpZHRoOiA4LFxyXG4gICAgICBvdXRlclN0cm9rZUNvbG9yOiAnIzc4QzAwMCcsXHJcbiAgICAgIGlubmVyU3Ryb2tlQ29sb3I6ICcjQzdFNTk2JyxcclxuICAgICAgYW5pbWF0aW9uRHVyYXRpb246IDMwMCxcclxuICAgIH0pLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQW5uYU5vbkVkaXRhYmxlR2VuZXJpY1RhYmxlQ29tcG9uZW50LFxyXG4gICAgQW5uYVNvcnRDb21wb25lbnQsXHJcbiAgICBBbm5hVGFibGVWaXJ0dWFsU2Nyb2xsVmlld3BvcnRDb21wb25lbnQsXHJcbiAgICBBbm5hRml4ZWRSb3dTaXplVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3lEaXJlY3RpdmUsXHJcbiAgICBBbm5hVmlydHVhbFRhYmxlRGlyZWN0aXZlXHJcbiAgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFHZW5lcmljVGFibGVMaWJNb2R1bGUgeyB9XHJcbiJdfQ==