ps-toolkit-ui 1.20.91 → 1.21.32

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 (169) hide show
  1. package/fesm2022/ps-toolkit-ui.mjs +9415 -0
  2. package/fesm2022/ps-toolkit-ui.mjs.map +1 -0
  3. package/package.json +16 -12
  4. package/types/ps-toolkit-ui.d.ts +1671 -0
  5. package/bundles/ps-toolkit-ui.umd.js +0 -10321
  6. package/bundles/ps-toolkit-ui.umd.js.map +0 -1
  7. package/bundles/ps-toolkit-ui.umd.min.js +0 -2
  8. package/bundles/ps-toolkit-ui.umd.min.js.map +0 -1
  9. package/esm2015/lib/classes/addModal.class.js +0 -36
  10. package/esm2015/lib/classes/chart.class.js +0 -165
  11. package/esm2015/lib/classes/currentDataClass.js +0 -17
  12. package/esm2015/lib/classes/enum.class.js +0 -253
  13. package/esm2015/lib/classes/excel.class.js +0 -56
  14. package/esm2015/lib/classes/form.class.js +0 -667
  15. package/esm2015/lib/classes/header.class.js +0 -16
  16. package/esm2015/lib/classes/helper.class.js +0 -650
  17. package/esm2015/lib/classes/lang.class.js +0 -35
  18. package/esm2015/lib/classes/login.class.js +0 -29
  19. package/esm2015/lib/classes/modal.class.js +0 -49
  20. package/esm2015/lib/classes/permission.class.js +0 -63
  21. package/esm2015/lib/classes/request.class.js +0 -155
  22. package/esm2015/lib/classes/safehtml.class.js +0 -17
  23. package/esm2015/lib/classes/safestyle.class.js +0 -17
  24. package/esm2015/lib/classes/sidebar.class.js +0 -16
  25. package/esm2015/lib/classes/steps.class.js +0 -45
  26. package/esm2015/lib/classes/string.class.js +0 -251
  27. package/esm2015/lib/classes/table.class.js +0 -593
  28. package/esm2015/lib/components/accordion/accordion.component.js +0 -45
  29. package/esm2015/lib/components/alert/alert.component.js +0 -39
  30. package/esm2015/lib/components/base.component.js +0 -54
  31. package/esm2015/lib/components/calendar/calendar.component.js +0 -98
  32. package/esm2015/lib/components/chart/chart.component.js +0 -17
  33. package/esm2015/lib/components/clock/clock.component.js +0 -33
  34. package/esm2015/lib/components/confirm/confirm.component.js +0 -50
  35. package/esm2015/lib/components/error/error.component.js +0 -26
  36. package/esm2015/lib/components/footer/footer.component.js +0 -23
  37. package/esm2015/lib/components/form/bank-card/form.bank-card.component.js +0 -200
  38. package/esm2015/lib/components/form/button/form.button.component.js +0 -68
  39. package/esm2015/lib/components/form/checkbox/form.checkbox.component.js +0 -67
  40. package/esm2015/lib/components/form/ckeditor/form.ckeditor.component.js +0 -90
  41. package/esm2015/lib/components/form/date/form.date.component.js +0 -314
  42. package/esm2015/lib/components/form/datetime/form.datetime.component.js +0 -106
  43. package/esm2015/lib/components/form/file/form.file.component.js +0 -124
  44. package/esm2015/lib/components/form/finger/form.finger.component.js +0 -140
  45. package/esm2015/lib/components/form/hidden/form.hidden.component.js +0 -31
  46. package/esm2015/lib/components/form/icon/form.icon.component.js +0 -84
  47. package/esm2015/lib/components/form/index/form.component.js +0 -51
  48. package/esm2015/lib/components/form/label/form.label.component.js +0 -32
  49. package/esm2015/lib/components/form/plaque/form.plaque.component.js +0 -258
  50. package/esm2015/lib/components/form/plaque/select/form.plaque.select.component.js +0 -468
  51. package/esm2015/lib/components/form/radio/form.radio.component.js +0 -82
  52. package/esm2015/lib/components/form/select/form.select.component.js +0 -452
  53. package/esm2015/lib/components/form/select/item/form.select.item.component.js +0 -27
  54. package/esm2015/lib/components/form/slide/form.slide.component.js +0 -84
  55. package/esm2015/lib/components/form/star/form.star.component.js +0 -66
  56. package/esm2015/lib/components/form/table/form.table.component.js +0 -96
  57. package/esm2015/lib/components/form/tag/form.tag.component.js +0 -100
  58. package/esm2015/lib/components/form/textarea/form.textarea.component.js +0 -83
  59. package/esm2015/lib/components/form/textbox/form.textbox.component.js +0 -227
  60. package/esm2015/lib/components/form/time/form.time.component.js +0 -149
  61. package/esm2015/lib/components/form/toggle/form.toggle.component.js +0 -72
  62. package/esm2015/lib/components/form/tree/form.tree.component.js +0 -157
  63. package/esm2015/lib/components/form/tree/item/form.tree.item.component.js +0 -50
  64. package/esm2015/lib/components/form/uploader/form.uploader.component.js +0 -159
  65. package/esm2015/lib/components/form/vehicle/form.vehicle.component.js +0 -104
  66. package/esm2015/lib/components/form/vehicle/search/form.vehicle.search.component.js +0 -237
  67. package/esm2015/lib/components/header/header.component.js +0 -28
  68. package/esm2015/lib/components/header/sub/sub.header.component.js +0 -14
  69. package/esm2015/lib/components/layout/layout.component.js +0 -18
  70. package/esm2015/lib/components/loading/loading.component.js +0 -22
  71. package/esm2015/lib/components/login/login.component.js +0 -159
  72. package/esm2015/lib/components/modal/modal.component.js +0 -25
  73. package/esm2015/lib/components/notfound/notfound.component.js +0 -29
  74. package/esm2015/lib/components/notification/notification.component.js +0 -14
  75. package/esm2015/lib/components/sidebar/item/sidebar.item.component.js +0 -55
  76. package/esm2015/lib/components/sidebar/sidebar.component.js +0 -98
  77. package/esm2015/lib/components/steps/steps.component.js +0 -88
  78. package/esm2015/lib/components/table/loading/table.loading.component.js +0 -17
  79. package/esm2015/lib/components/table/pagination/table.pagination.component.js +0 -84
  80. package/esm2015/lib/components/table/row/table.row.component.js +0 -450
  81. package/esm2015/lib/components/table/table.component.js +0 -240
  82. package/esm2015/lib/components/tooltip/tooltip.component.js +0 -19
  83. package/esm2015/lib/ps-toolkit-ui.module.js +0 -105
  84. package/esm2015/lib/services/config.service.js +0 -14
  85. package/esm2015/lib/services/sidebar.service.js +0 -21
  86. package/esm2015/ps-toolkit-ui.js +0 -21
  87. package/esm2015/public-api.js +0 -64
  88. package/fesm2015/ps-toolkit-ui.js +0 -8926
  89. package/fesm2015/ps-toolkit-ui.js.map +0 -1
  90. package/lib/classes/addModal.class.d.ts +0 -14
  91. package/lib/classes/chart.class.d.ts +0 -15
  92. package/lib/classes/currentDataClass.d.ts +0 -10
  93. package/lib/classes/enum.class.d.ts +0 -221
  94. package/lib/classes/excel.class.d.ts +0 -8
  95. package/lib/classes/form.class.d.ts +0 -193
  96. package/lib/classes/header.class.d.ts +0 -8
  97. package/lib/classes/helper.class.d.ts +0 -50
  98. package/lib/classes/lang.class.d.ts +0 -5
  99. package/lib/classes/login.class.d.ts +0 -21
  100. package/lib/classes/modal.class.d.ts +0 -19
  101. package/lib/classes/permission.class.d.ts +0 -35
  102. package/lib/classes/request.class.d.ts +0 -10
  103. package/lib/classes/safehtml.class.d.ts +0 -7
  104. package/lib/classes/safestyle.class.d.ts +0 -7
  105. package/lib/classes/sidebar.class.d.ts +0 -14
  106. package/lib/classes/steps.class.d.ts +0 -31
  107. package/lib/classes/string.class.d.ts +0 -249
  108. package/lib/classes/table.class.d.ts +0 -88
  109. package/lib/components/accordion/accordion.component.d.ts +0 -7
  110. package/lib/components/alert/alert.component.d.ts +0 -10
  111. package/lib/components/base.component.d.ts +0 -17
  112. package/lib/components/calendar/calendar.component.d.ts +0 -26
  113. package/lib/components/chart/chart.component.d.ts +0 -5
  114. package/lib/components/clock/clock.component.d.ts +0 -11
  115. package/lib/components/confirm/confirm.component.d.ts +0 -14
  116. package/lib/components/error/error.component.d.ts +0 -7
  117. package/lib/components/footer/footer.component.d.ts +0 -6
  118. package/lib/components/form/bank-card/form.bank-card.component.d.ts +0 -28
  119. package/lib/components/form/button/form.button.component.d.ts +0 -15
  120. package/lib/components/form/checkbox/form.checkbox.component.d.ts +0 -14
  121. package/lib/components/form/ckeditor/form.ckeditor.component.d.ts +0 -14
  122. package/lib/components/form/date/form.date.component.d.ts +0 -45
  123. package/lib/components/form/datetime/form.datetime.component.d.ts +0 -13
  124. package/lib/components/form/file/form.file.component.d.ts +0 -18
  125. package/lib/components/form/finger/form.finger.component.d.ts +0 -15
  126. package/lib/components/form/hidden/form.hidden.component.d.ts +0 -7
  127. package/lib/components/form/icon/form.icon.component.d.ts +0 -16
  128. package/lib/components/form/index/form.component.d.ts +0 -10
  129. package/lib/components/form/label/form.label.component.d.ts +0 -8
  130. package/lib/components/form/plaque/form.plaque.component.d.ts +0 -21
  131. package/lib/components/form/plaque/select/form.plaque.select.component.d.ts +0 -38
  132. package/lib/components/form/radio/form.radio.component.d.ts +0 -13
  133. package/lib/components/form/select/form.select.component.d.ts +0 -45
  134. package/lib/components/form/select/item/form.select.item.component.d.ts +0 -12
  135. package/lib/components/form/slide/form.slide.component.d.ts +0 -13
  136. package/lib/components/form/star/form.star.component.d.ts +0 -13
  137. package/lib/components/form/table/form.table.component.d.ts +0 -9
  138. package/lib/components/form/tag/form.tag.component.d.ts +0 -16
  139. package/lib/components/form/textarea/form.textarea.component.d.ts +0 -13
  140. package/lib/components/form/textbox/form.textbox.component.d.ts +0 -20
  141. package/lib/components/form/time/form.time.component.d.ts +0 -25
  142. package/lib/components/form/toggle/form.toggle.component.d.ts +0 -13
  143. package/lib/components/form/tree/form.tree.component.d.ts +0 -21
  144. package/lib/components/form/tree/item/form.tree.item.component.d.ts +0 -19
  145. package/lib/components/form/uploader/form.uploader.component.d.ts +0 -21
  146. package/lib/components/form/vehicle/form.vehicle.component.d.ts +0 -18
  147. package/lib/components/form/vehicle/search/form.vehicle.search.component.d.ts +0 -22
  148. package/lib/components/header/header.component.d.ts +0 -10
  149. package/lib/components/header/sub/sub.header.component.d.ts +0 -3
  150. package/lib/components/layout/layout.component.d.ts +0 -7
  151. package/lib/components/loading/loading.component.d.ts +0 -5
  152. package/lib/components/login/login.component.d.ts +0 -15
  153. package/lib/components/modal/modal.component.d.ts +0 -9
  154. package/lib/components/notfound/notfound.component.d.ts +0 -8
  155. package/lib/components/notification/notification.component.d.ts +0 -3
  156. package/lib/components/sidebar/item/sidebar.item.component.d.ts +0 -14
  157. package/lib/components/sidebar/sidebar.component.d.ts +0 -22
  158. package/lib/components/steps/steps.component.d.ts +0 -16
  159. package/lib/components/table/loading/table.loading.component.d.ts +0 -5
  160. package/lib/components/table/pagination/table.pagination.component.d.ts +0 -15
  161. package/lib/components/table/row/table.row.component.d.ts +0 -44
  162. package/lib/components/table/table.component.d.ts +0 -43
  163. package/lib/components/tooltip/tooltip.component.d.ts +0 -5
  164. package/lib/ps-toolkit-ui.module.d.ts +0 -4
  165. package/lib/services/config.service.d.ts +0 -6
  166. package/lib/services/sidebar.service.d.ts +0 -9
  167. package/ps-toolkit-ui.d.ts +0 -20
  168. package/ps-toolkit-ui.metadata.json +0 -1
  169. package/public-api.d.ts +0 -60
@@ -1,314 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import * as moment from 'jalali-moment';
3
- import * as $ from 'jquery';
4
- import { DayClass } from '../../../classes/form.class';
5
- import { InputError, InputType } from '../../../classes/enum.class';
6
- export class FormDateComponent {
7
- constructor() {
8
- this.changeIndex = new EventEmitter();
9
- this.previousDays = [];
10
- this.nextDays = [];
11
- this.days = [];
12
- this.cSearch = '';
13
- this.state = 'day';
14
- this.months = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];
15
- this.active = moment();
16
- }
17
- get type() { return InputType; }
18
- ngOnInit() {
19
- const today = moment().locale('fa');
20
- this.todayDay = parseInt(today.format('jDD'), 10);
21
- this.todayMonth = parseInt(today.format('jMM'), 10);
22
- this.todayYear = parseInt(today.format('jYYYY'), 10);
23
- this.state = this.inp.type === InputType.Year ? 'year' : this.inp.type === InputType.Month ? 'month' : 'day';
24
- this.setInpValue(this.inp.value);
25
- this.inp.setValue = (v) => {
26
- this.setInpValue(v);
27
- };
28
- this.inp.isValid = () => {
29
- this.inp.error = null;
30
- if (this.inp.required && !this.inp.value) {
31
- this.inp.error = InputError.Required;
32
- return false;
33
- }
34
- if (!this.inp.required && !this.inp.value) {
35
- return true;
36
- }
37
- if (!moment(this.inp.value, 'jYYYY/jMM/jDD').isValid()) {
38
- this.inp.error = InputError.Invalid;
39
- return false;
40
- }
41
- return true;
42
- };
43
- this.inp.clear = () => {
44
- this.inp.error = null;
45
- if (this.inp.default) {
46
- this.inp.setValue(this.inp.default, false);
47
- }
48
- else {
49
- this.inp.value = null;
50
- this.inp.search = null;
51
- }
52
- if (this.inp.onChange) {
53
- this.inp.onChange(this.inp);
54
- }
55
- };
56
- this.inp.data = () => {
57
- return this.inp.value ? moment(this.inp.value, 'jYYYY/jMM/jDD').locale('en').format('YYYY/MM/DD') : null;
58
- };
59
- this.inp.focus = () => {
60
- this.openCalendar();
61
- };
62
- this.inp.focusOut = () => {
63
- $(this.inputBase.nativeElement).blur();
64
- };
65
- }
66
- setInpValue(v) {
67
- if (v === null) {
68
- this.inp.clear();
69
- this.active = moment().locale('fa');
70
- this.setDate();
71
- return;
72
- }
73
- else if (typeof v === 'string' && v.length === 10) {
74
- this.active = moment(v, 'YYYY/MM/DD').locale('fa');
75
- }
76
- else if (typeof v === 'string') {
77
- const d = parseInt(v.substring(6, v.length - 2), 10);
78
- this.active = moment(d).locale('fa');
79
- }
80
- else if (typeof v === 'number') {
81
- this.active = this.inp.type === InputType.Month ? moment(moment(v).locale('fa').format('jYYYY/jMM/jDD'), 'jYYYY/jMM/01').locale('fa') : moment(v).locale('fa');
82
- }
83
- else {
84
- this.active = v;
85
- }
86
- this.inp.value = this.active.format('jYYYY/jMM/jDD');
87
- this.inp.search = this.cSearch = this.active.format(this.inp.type === InputType.Year ? 'jYYYY' : this.inp.type === InputType.Month ? 'jMMMM jYYYY' : 'jYYYY/jMM/jDD');
88
- this.state = this.inp.type === InputType.Year ? 'year' : this.inp.type === InputType.Month ? 'month' : 'day';
89
- this.setDate();
90
- }
91
- setDate() {
92
- const n = this.active.clone();
93
- const countDayInMonth = n.locale('fa').daysInMonth();
94
- const startWeek = parseInt(n.startOf('month').format('d'), 10);
95
- const previousMonth = n.subtract(1, 'month');
96
- const countDayInPreviousMonth = previousMonth.daysInMonth();
97
- const nextMonth = n.add(2, 'month');
98
- const previousDays = [];
99
- const nextDays = [];
100
- const days = [];
101
- if (startWeek !== 6) {
102
- for (let i = countDayInPreviousMonth - startWeek; i <= countDayInPreviousMonth; i++) {
103
- previousDays.push(new DayClass(i, this.isToday(previousMonth, i), false, false));
104
- }
105
- }
106
- for (let i = 1; i <= countDayInMonth; i++) {
107
- let isActive = true;
108
- if (this.inp.allowed != null && this.inp.allowed.length > 0) {
109
- isActive = this.isActive(this.active, i);
110
- }
111
- days.push(new DayClass(i, this.isToday(this.active, i), this.isSelected(this.active, i), isActive));
112
- }
113
- const end = (days.length + previousDays.length) % 7;
114
- if (end !== 0) {
115
- for (let i = 1; i <= 7 - end; i++) {
116
- nextDays.push(new DayClass(i, this.isToday(nextMonth, i), false, false));
117
- }
118
- }
119
- this.previousDays = previousDays;
120
- this.nextDays = nextDays;
121
- this.days = days;
122
- }
123
- isToday(m, d) {
124
- const month = parseInt(m.format('jMM'), 10);
125
- const year = parseInt(m.format('jYYYY'), 10);
126
- return year === this.todayYear && month === this.todayMonth && d === this.todayDay;
127
- }
128
- isActive(m, d) {
129
- var _a, _b;
130
- const month = m.format('jMM');
131
- const year = m.format('jYYYY');
132
- const date = moment(year.slice(-4) + '/' + month.slice(-2) + '/' + d.toString().slice(-2), 'jYYYY/jMM/jDD');
133
- for (const al of this.inp.allowed) {
134
- const start = (_a = al.start) !== null && _a !== void 0 ? _a : null;
135
- const end = (_b = al.end) !== null && _b !== void 0 ? _b : null;
136
- if (start !== null && date < start) {
137
- continue;
138
- }
139
- if (end !== null && date > end) {
140
- continue;
141
- }
142
- return true;
143
- }
144
- return false;
145
- }
146
- isSelected(m, d) {
147
- if (this.inp.value == null) {
148
- return false;
149
- }
150
- const month = parseInt(m.format('jMM'), 10);
151
- const year = parseInt(m.format('jYYYY'), 10);
152
- const vDay = parseInt(this.inp.value.split('/')[2], 10);
153
- const vMonth = parseInt(this.inp.value.split('/')[1], 10);
154
- const vYear = parseInt(this.inp.value.split('/')[0], 10);
155
- return year === vYear && month === vMonth && d === vDay;
156
- }
157
- add(c) {
158
- this.active.add(c, this.state === 'day' ? 'month' : 'year');
159
- this.setDate();
160
- }
161
- changeMonth(c) {
162
- const v = moment(this.active.format('jYYYY') + '/' + ('0' + c).slice(-2) + '/' + this.active.format('jDD'), 'jYYYY/jMM/jDD');
163
- this.active = v.isValid() ? v : moment(this.active.format('jYYYY') + '/' + ('0' + c).slice(-2) + '/29', 'jYYYY/jMM/jDD');
164
- this.setDate();
165
- if (this.inp.type === InputType.Month) {
166
- this.selectDate(this.days[0]);
167
- }
168
- else {
169
- this.changeState('day');
170
- }
171
- }
172
- changeYear(c) {
173
- const v = moment(('000' + c).slice(-4) + '/' + this.active.format('jMM') + '/' + this.active.format('jDD'), 'jYYYY/jMM/jDD');
174
- this.active = v.isValid() ? v : moment(('000' + c).slice(-4) + '/' + this.active.format('jMM') + '/29', 'jYYYY/jMM/jDD');
175
- this.setDate();
176
- if (this.inp.type === InputType.Year) {
177
- this.selectDate(this.days[0]);
178
- }
179
- else {
180
- this.changeState('month');
181
- }
182
- }
183
- toggleCalendar() {
184
- this.openCalendar();
185
- }
186
- openCalendar() {
187
- this.setPosition();
188
- $(this.inputBase.nativeElement).focus();
189
- }
190
- onKeyDown(e) {
191
- const code = e.keyCode || e.which;
192
- if (code === 9 || code === 13) {
193
- e.preventDefault();
194
- $(this.inputDiv.nativeElement).removeClass('top');
195
- this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');
196
- if (!this.inForm) {
197
- $(this.inputBase.nativeElement).blur();
198
- }
199
- }
200
- }
201
- onKeyUp(e) {
202
- if (this.cSearch !== e.target.value) {
203
- this.inp.error = null;
204
- this.inp.value = null;
205
- this.cSearch = e.target.value;
206
- if (this.inp.type === InputType.Year || this.inp.type === InputType.Month) {
207
- if (this.inp.onChange) {
208
- this.inp.onChange(this.inp);
209
- }
210
- return;
211
- }
212
- if (this.inp.search !== '' && this.inp.search !== null) {
213
- const v = moment(this.inp.search, 'jYYYY/jMM/jDD');
214
- if (v.isValid() && this.inp.search.length <= 10) {
215
- this.active = v;
216
- this.inp.value = this.active.format('jYYYY/jMM/jDD');
217
- this.setDate();
218
- if (this.inp.onChange) {
219
- this.inp.onChange(this.inp);
220
- }
221
- }
222
- else {
223
- this.setDate();
224
- }
225
- }
226
- else {
227
- this.setDate();
228
- if (this.inp.onChange) {
229
- this.inp.onChange(this.inp);
230
- }
231
- }
232
- }
233
- }
234
- onFocusOut() {
235
- $(this.inputDiv.nativeElement).removeClass('top');
236
- this.inp.search = this.inp.value != null ?
237
- (this.inp.type === InputType.Year ?
238
- moment(this.inp.value, 'jYYYY/jMM/jDD').locale('fa').format('jYYYY') :
239
- this.inp.type === InputType.Month ?
240
- moment(this.inp.value, 'jYYYY/jMM/jDD').locale('fa').format('jMMMM jYYYY') :
241
- this.inp.value)
242
- : null;
243
- this.state = this.inp.type === InputType.Year ? 'year' : this.inp.type === InputType.Month ? 'month' : 'day';
244
- }
245
- setPosition() {
246
- const rect = this.inputDiv.nativeElement.getBoundingClientRect();
247
- const offsetOfBottom = window.innerHeight - rect.bottom;
248
- const height = this.inputCalendarDiv.nativeElement.offsetHeight;
249
- if (offsetOfBottom < height) {
250
- $(this.inputDiv.nativeElement).addClass('top');
251
- }
252
- else {
253
- $(this.inputDiv.nativeElement).removeClass('top');
254
- }
255
- }
256
- selectDate(d) {
257
- this.inp.error = null;
258
- const s = this.days.find(x => x.selected);
259
- if (s) {
260
- s.selected = false;
261
- }
262
- const m = parseInt(this.active.format('jMM'), 10);
263
- const y = parseInt(this.active.format('jYYYY'), 10);
264
- this.setValue(y, m, d.day);
265
- d.selected = true;
266
- this.cSearch = this.inp.search;
267
- setTimeout(() => {
268
- $(this.inputDiv.nativeElement).removeClass('top');
269
- this.changeIndex.emit('Tab');
270
- if (!this.inForm) {
271
- $(this.inputBase.nativeElement).blur();
272
- }
273
- }, 10);
274
- if (this.inp.onChange) {
275
- this.inp.onChange(this.inp);
276
- }
277
- }
278
- setValue(y, m, d) {
279
- this.inp.value = y + '/' + (m > 9 ? m : '0' + m) + '/' + (d > 9 ? d : '0' + d);
280
- this.inp.search = this.inp.type === InputType.Year ? y :
281
- this.inp.type === InputType.Month ?
282
- this.months[m - 1] + ' ' + y :
283
- y + '/' + (m > 9 ? m : '0' + m) + '/' + (d > 9 ? d : '0' + d);
284
- }
285
- changeState(s) {
286
- this.state = s;
287
- }
288
- getYears() {
289
- const y = parseInt(this.active.format('jYYYY'), 10);
290
- const sy = y - (y % 20);
291
- return Array.from({ length: 20 }, (x, i) => sy + i);
292
- }
293
- getActiveMonth() {
294
- return this.months[parseInt(this.active.format('jM'), 10) - 1];
295
- }
296
- }
297
- FormDateComponent.decorators = [
298
- { type: Component, args: [{
299
- selector: 'lib-form-date',
300
- template: "<div #inputDiv [id]=\"inp.id + 'DateInput'\" [style]=\"inp.style\" [className]=\"'form-input-con date w-100' + (inp.error == null ? '' : ' error') + (inp.disabled ? ' disabled' : '') + ' ' + inp.class\">\r\n <div class=\"form-input\" (click)=\"toggleCalendar()\">\r\n <div *ngIf=\"inp.displayLabel\" class=\"label\"><i *ngIf=\"inp.required\" class=\"fas fa-star-of-life required-icon\"></i>{{inp.getLabel()}}</div>\r\n <div class=\"w-100 p-r\">\r\n <i *ngIf=\"inp.icon != null || inp.loading\" #inputIcon [className]=\"(inp.loading ? 'fad fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n <i *ngIf=\"inp.withClear && inp.value\" (click)=\"inp.clear()\" class=\"fad fa-times clear-icon\"></i>\r\n <input (keydown)=\"onKeyDown($event)\" (keyup)=\"onKeyUp($event)\" (focusout)=\"onFocusOut()\" [disabled]=\"inp.disabled\" [(ngModel)]=\"inp.search\" #inputBase [name]=\"inp.name\" [placeholder]=\"inp.l(inp.name)\" class=\"control\" autocomplete=\"off\" maxlength=\"\">\r\n <div #inputCalendarDiv class=\"calendar\">\r\n <div class=\"header\">\r\n <i (click)=\"add(state === 'day' || state === 'month' ? -1 : -20)\" class=\"fas fa-angle-right previous-month\"></i>\r\n <div class=\"title d-f-c\">\r\n <div (click)=\"(state === 'day' || state === 'month') && changeState('year')\" class=\"year header-item\">\r\n {{active.format('jYYYY')}}\r\n </div>\r\n <div *ngIf=\"inp.type != type.Year\" (click)=\"state === 'day' && changeState('month')\" class=\"month m-r-5-p header-item\">\r\n {{getActiveMonth()}}\r\n </div>\r\n </div>\r\n <i (click)=\"add(state === 'day' || state === 'month' ? 1 : 20)\" class=\"fas fa-angle-left next-month\"></i>\r\n </div>\r\n <div [style]=\"state === 'day' ? {} : {display: 'none'}\" class=\"days-con\">\r\n <div class=\"day-names underline\">\r\n <div class=\"item\">\u0634</div>\r\n <div class=\"item\">\u06CC</div>\r\n <div class=\"item\">\u062F</div>\r\n <div class=\"item\">\u0633</div>\r\n <div class=\"item\">\u0686</div>\r\n <div class=\"item\">\u067E</div>\r\n <div class=\"item\">\u062C</div>\r\n </div>\r\n <div class=\"days\">\r\n <div [className]=\"'item not-in-month' + (d.today ? ' today' : '')\" *ngFor=\"let d of previousDays\">{{d.day}}</div>\r\n <div (click)=\"d.active && selectDate(d)\" [className]=\"'item' + (d.today ? ' today' : '') + (d.selected ? ' selected' : '') + (!d.active ? ' not-in-month' : '')\" *ngFor=\"let d of days\">{{d.day}}</div>\r\n <div [className]=\"'item not-in-month' + (d.today ? ' today' : '')\" *ngFor=\"let d of nextDays\">{{d.day}}</div>\r\n </div>\r\n </div>\r\n <div [style]=\"state === 'month' ? {} : {display: 'none'}\" class=\"months-con\">\r\n <div [className]=\"(i + 1 == active.format('jM') ? 'selected ' : '') + 'month'\" (click)=\"changeMonth(i + 1)\" *ngFor=\"let m of months; let i = index\">{{m}}</div>\r\n </div>\r\n <div [style]=\"state === 'year' ? {} : {display: 'none'}\" class=\"years-con\">\r\n <div [className]=\"(y == active.format('jYYYY') ? 'selected ' : '') + 'year'\" (click)=\"changeYear(y)\" *ngFor=\"let y of getYears()\">{{y}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
301
- styles: [".form-input-con.date{padding:0 15px;position:relative}.form-input-con.date .form-input{float:right;position:relative;width:100%}.form-input-con.date .form-input .label{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:default;direction:rtl;float:right;font-size:12px;height:20px;line-height:20px;margin-bottom:3px;padding:0 10px;text-align:right;width:100%}.form-input-con.date.error .form-input .label{color:var(--red);font-size:10px}.form-input-con.date .form-input .label .required-icon{color:var(--red);font-size:9px;height:20px;line-height:20px;text-align:center;width:20px}.form-input-con.date .form-input .control{background-color:#fff;background-image:none;border:none;border:var(--border-input);border-radius:var(--border-radius-base);color:var(--black);display:block;font-size:11px;height:35px;padding:5px 35px;position:relative;text-align:center;width:100%;z-index:2}.form-input-con.date .form-input .control:focus{border-radius:var(--border-radius-base) var(--border-radius-base) var(--border-radius-base) 0}.form-input-con.date.top .form-input .control:focus{border-radius:0 var(--border-radius-base) var(--border-radius-base) var(--border-radius-base)}.form-input-con.date .form-input .control:focus,.form-input-con.date .form-input:hover .control{border:var(--border-input-dark);outline:none}.form-input-con.date .form-input i.icon{color:var(--primary);cursor:text;font-size:13px;left:0}.form-input-con.date .form-input i.clear-icon,.form-input-con.date .form-input i.icon{bottom:0;height:35px;line-height:35px;position:absolute;text-align:center;transition:all .35s ease-in-out;width:35px;z-index:3}.form-input-con.date .form-input i.clear-icon{color:var(--red);cursor:pointer;font-size:14px;right:0}.form-input-con.date.error .form-input .control,.form-input-con.date.error .form-input i.icon{color:var(--red-light)}.form-input-con.date.error .form-input .control{border:var(--border-input-red)}.form-input-con.date.error .form-input .control:focus,.form-input-con.date.error .form-input:hover .control{border:var(--border-input-red-dark)}.form-input-con.date .form-input .calendar{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-color:#fff;border:var(--border-input);border-radius:0 0 var(--border-radius-base) var(--border-radius-base);color:var(--black);height:235px;left:0;overflow:hidden;position:absolute;top:-200000px;width:200px;z-index:102}.form-input-con.date .form-input .control:focus+.calendar{top:35px!important}.form-input-con.date.top .form-input .control:focus+.calendar{border-radius:var(--border-radius-base) var(--border-radius-base) 0 0;bottom:35px;top:unset!important}.form-input-con.date.disabled{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;box-shadow:unset;cursor:default;filter:blur(.5px);opacity:.7;pointer-events:none}.form-input-con.date .form-input .days-con{float:right;width:100%}.form-input-con.date .form-input .calendar .header{background:var(--black-white);float:right;width:100%}.form-input-con.date .form-input .calendar .header .next-month,.form-input-con.date .form-input .calendar .header .previous-month{cursor:pointer;float:right;font-size:15px;height:30px;line-height:30px;text-align:center;width:30px}.form-input-con.date .form-input .calendar .header .next-month:hover,.form-input-con.date .form-input .calendar .header .previous-month:hover{background:var(--black-white)}.form-input-con.date .form-input .calendar .header .title{float:right;font-size:12px;font-weight:var(--font-bold);height:30px;line-height:30px;text-align:center;width:calc(100% - 60px)}.form-input-con.date .form-input .calendar .header .header-item{background-color:#fff;border:var(--border-input);border-radius:var(--border-radius-base);cursor:pointer;float:right;height:20px;line-height:20px;text-align:center}.form-input-con.date .form-input .calendar .header .header-item:hover{background-color:var(--base-white)}.form-input-con.date .form-input .calendar .header .header-item.year{width:calc(40% - 10px)}.form-input-con.date .form-input .calendar .header .header-item.month{width:calc(60% - 10px)}.form-input-con.date .form-input .calendar .days-con .day-names{float:right;font-size:12px;font-weight:var(--font-light);position:relative;text-align:center;width:100%}.form-input-con.date .form-input .calendar .days-con .day-names .item{float:right;font-size:12px;height:25px;line-height:25px;text-align:center;width:14.28571%}.form-input-con.date .form-input .calendar .days-con .days{float:right;font-size:12px;text-align:center;width:100%}.form-input-con.date .form-input .calendar .days-con .days .item{cursor:pointer;float:right;font-size:11px;height:30px;line-height:30px;text-align:center;width:14.28571%}.form-input-con.date .form-input .calendar .days-con .days .item.not-in-month{background-color:unset!important;cursor:default;opacity:.5}.form-input-con.date .form-input .calendar .days-con .days .item:hover{background-color:var(--black-white)}.form-input-con.date .form-input .calendar .days-con .days .item.not-in-month:hover{background-color:unset}.form-input-con.date .form-input .calendar .days-con .days .item.today{background-color:var(--black-white)}.form-input-con.date .form-input .calendar .days-con .days .item.selected{background-color:var(--primary);color:#fff}.form-input-con.date .form-input .calendar .months-con{float:right;width:100%}.form-input-con.date .form-input .calendar .months-con .month{cursor:pointer;float:right;font-size:11px;height:51.25px;line-height:51.25px;text-align:center;width:33.33333%}.form-input-con.date .form-input .calendar .months-con .month.selected,.form-input-con.date .form-input .calendar .months-con .month:hover{background-color:var(--black-white)}.form-input-con.date .form-input .calendar .years-con{float:right;width:100%}.form-input-con.date .form-input .calendar .years-con .year{cursor:pointer;float:right;font-size:11px;height:41px;line-height:41px;text-align:center;width:25%}.form-input-con.date .form-input .calendar .years-con .year.selected,.form-input-con.date .form-input .calendar .years-con .year:hover{background-color:var(--black-white)}.form-input-con.date.table-search{float:right;width:100%}.form-input-con.date.h-30 .form-input .control{height:30px;padding:5px 30px}.form-input-con.date.h-30 .form-input i.icon{height:30px;line-height:30px;width:30px}.form-input-con.date.h-30 .form-input .control:focus+.calendar{top:30px!important}.form-input-con.date.top.h-30 .form-input .control:focus+.calendar{bottom:30px}.form-input-con.date.h-25 .form-input .control{height:25px;padding:5px}.form-input-con.date.h-25 .form-input i.icon{display:none}.form-input-con.date.h-25 .form-input .control:focus+.calendar{top:25px!important}.form-input-con.date.top.h-25 .form-input .control:focus+.calendar{bottom:25px}.form-input-con.date.h-25 .form-input .control::-moz-placeholder,.form-input-con.date.h-25 .form-input .control::-webkit-input-placeholder{font-size:10px;font-weight:var(--font-light)}"]
302
- },] }
303
- ];
304
- FormDateComponent.ctorParameters = () => [];
305
- FormDateComponent.propDecorators = {
306
- inp: [{ type: Input }],
307
- inForm: [{ type: Input }],
308
- changeIndex: [{ type: Output }],
309
- inputBase: [{ type: ViewChild, args: ['inputBase',] }],
310
- inputDiv: [{ type: ViewChild, args: ['inputDiv',] }],
311
- inputLabel: [{ type: ViewChild, args: ['inputLabel',] }],
312
- inputCalendarDiv: [{ type: ViewChild, args: ['inputCalendarDiv',] }]
313
- };
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9mb3JtL2RhdGUvZm9ybS5kYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsUUFBUSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU9sRSxNQUFNLE9BQU8saUJBQWlCO0lBc0I1QjtRQWhCQSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFDOUIsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixTQUFJLEdBQWUsRUFBRSxDQUFDO1FBSXRCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsV0FBTSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqSCxXQUFNLEdBQWtCLE1BQU0sRUFBRSxDQUFDO0lBT2pDLENBQUM7SUFORCxJQUFJLElBQUksS0FBdUIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBT2xELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxN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QUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsVUFBVSxDQUFDLENBQWdCLEVBQUUsQ0FBUztRQUNwQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksRUFBQztZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBQ0QsR0FBRyxDQUFDLENBQVM7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxD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Q0FBQyxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQztZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBQ0QsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsV0FBVyxDQUFDLENBQVM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELFFBQVE7UUFDTixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7O1lBdlNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsazVHQUF5Qzs7YUFFMUM7Ozs7a0JBRUUsS0FBSztxQkFFTCxLQUFLOzBCQUVMLE1BQU07d0JBYU4sU0FBUyxTQUFDLFdBQVc7dUJBQ3JCLFNBQVMsU0FBQyxVQUFVO3lCQUNwQixTQUFTLFNBQUMsWUFBWTsrQkFDdEIsU0FBUyxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ2phbGFsaS1tb21lbnQnO1xyXG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCB7RGF5Q2xhc3MsIElucHV0Q2xhc3N9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRFcnJvciwgSW5wdXRUeXBlfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudW0uY2xhc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZm9ybS1kYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS5kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmRhdGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKVxyXG4gIGlucDogSW5wdXRDbGFzcztcclxuICBASW5wdXQoKVxyXG4gIGluRm9ybTogYm9vbGVhbjtcclxuICBAT3V0cHV0KClcclxuICBjaGFuZ2VJbmRleCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIHByZXZpb3VzRGF5czogRGF5Q2xhc3NbXSA9IFtdO1xyXG4gIG5leHREYXlzOiBEYXlDbGFzc1tdID0gW107XHJcbiAgZGF5czogRGF5Q2xhc3NbXSA9IFtdO1xyXG4gIHRvZGF5RGF5OiBudW1iZXI7XHJcbiAgdG9kYXlNb250aDogbnVtYmVyO1xyXG4gIHRvZGF5WWVhcjogbnVtYmVyO1xyXG4gIGNTZWFyY2ggPSAnJztcclxuICBzdGF0ZSA9ICdkYXknO1xyXG4gIG1vbnRocyA9IFsn2YHYsdmI2LHYr9uM2YYnLCAn2KfYsdiv24zYqNmH2LTYqicsICfYrtix2K/Yp9ivJywgJ9iq24zYsScsICfZhdix2K/Yp9ivJywgJ9i02YfYsduM2YjYsScsICfZhdmH2LEnLCAn2KLYqNin2YYnLCAn2KLYsNixJywgJ9iv24wnLCAn2KjZh9mF2YYnLCAn2KfYs9mB2YbYryddO1xyXG4gIGFjdGl2ZTogbW9tZW50Lk1vbWVudCA9IG1vbWVudCgpO1xyXG4gIGdldCB0eXBlKCk6IHR5cGVvZiBJbnB1dFR5cGUgeyByZXR1cm4gSW5wdXRUeXBlOyB9XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRCYXNlJykgaW5wdXRCYXNlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RGl2JykgaW5wdXREaXY6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRMYWJlbCcpIGlucHV0TGFiZWw6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRDYWxlbmRhckRpdicpIGlucHV0Q2FsZW5kYXJEaXY6IEVsZW1lbnRSZWY7XHJcbiAgY29uc3RydWN0b3IoKXtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KCkubG9jYWxlKCdmYScpO1xyXG4gICAgdGhpcy50b2RheURheSA9IHBhcnNlSW50KHRvZGF5LmZvcm1hdCgnakREJyksIDEwKTtcclxuICAgIHRoaXMudG9kYXlNb250aCA9IHBhcnNlSW50KHRvZGF5LmZvcm1hdCgnak1NJyksIDEwKTtcclxuICAgIHRoaXMudG9kYXlZZWFyID0gcGFyc2VJbnQodG9kYXkuZm9ybWF0KCdqWVlZWScpLCAxMCk7XHJcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLlllYXIgPyAneWVhcicgOiB0aGlzLmlucC50eXBlID09PSBJbnB1dFR5cGUuTW9udGggPyAnbW9udGgnIDogJ2RheSc7XHJcbiAgICB0aGlzLnNldElucFZhbHVlKHRoaXMuaW5wLnZhbHVlKTtcclxuICAgIHRoaXMuaW5wLnNldFZhbHVlID0gKHYpID0+IHtcclxuICAgICAgdGhpcy5zZXRJbnBWYWx1ZSh2KTtcclxuICAgIH07XHJcbiAgICB0aGlzLmlucC5pc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLmlucC5lcnJvciA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmlucC5yZXF1aXJlZCAmJiAhdGhpcy5pbnAudmFsdWUpIHtcclxuICAgICAgICB0aGlzLmlucC5lcnJvciA9IElucHV0RXJyb3IuUmVxdWlyZWQ7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5pbnAucmVxdWlyZWQgJiYgIXRoaXMuaW5wLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFtb21lbnQodGhpcy5pbnAudmFsdWUsICdqWVlZWS9qTU0vakREJykuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgdGhpcy5pbnAuZXJyb3IgPSBJbnB1dEVycm9yLkludmFsaWQ7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmNsZWFyID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLmlucC5lcnJvciA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmlucC5kZWZhdWx0KXtcclxuICAgICAgICB0aGlzLmlucC5zZXRWYWx1ZSh0aGlzLmlucC5kZWZhdWx0LCBmYWxzZSk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuaW5wLnZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlucC5zZWFyY2ggPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmlucC5vbkNoYW5nZSl7XHJcbiAgICAgICAgdGhpcy5pbnAub25DaGFuZ2UodGhpcy5pbnApO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZGF0YSA9ICgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5wLnZhbHVlID8gbW9tZW50KHRoaXMuaW5wLnZhbHVlLCAnallZWVkvak1NL2pERCcpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ1lZWVkvTU0vREQnKSA6IG51bGw7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZm9jdXMgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZm9jdXNPdXQgPSAoKSA9PiB7XHJcbiAgICAgICQodGhpcy5pbnB1dEJhc2UubmF0aXZlRWxlbWVudCkuYmx1cigpO1xyXG4gICAgfTtcclxuICB9XHJcbiAgc2V0SW5wVmFsdWUodik6IHZvaWR7XHJcbiAgICBpZiAodiA9PT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuaW5wLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gbW9tZW50KCkubG9jYWxlKCdmYScpO1xyXG4gICAgICB0aGlzLnNldERhdGUoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi5sZW5ndGggPT09IDEwKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gbW9tZW50KHYsICdZWVlZL01NL0REJykubG9jYWxlKCdmYScpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3QgZCA9IHBhcnNlSW50KHYuc3Vic3RyaW5nKDYsIHYubGVuZ3RoIC0gMiksIDEwKTtcclxuICAgICAgdGhpcy5hY3RpdmUgPSBtb21lbnQoZCkubG9jYWxlKCdmYScpO1xyXG4gICAgfWVsc2UgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJyl7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLk1vbnRoID8gbW9tZW50KG1vbWVudCh2KS5sb2NhbGUoJ2ZhJykuZm9ybWF0KCdqWVlZWS9qTU0vakREJyksICdqWVlZWS9qTU0vMDEnKS5sb2NhbGUoJ2ZhJykgOiBtb21lbnQodikubG9jYWxlKCdmYScpO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IHY7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucC52YWx1ZSA9IHRoaXMuYWN0aXZlLmZvcm1hdCgnallZWVkvak1NL2pERCcpO1xyXG4gICAgdGhpcy5pbnAuc2VhcmNoID0gdGhpcy5jU2VhcmNoID0gdGhpcy5hY3RpdmUuZm9ybWF0KHRoaXMuaW5wLnR5cGUgPT09IElucHV0VHlwZS5ZZWFyID8gJ2pZWVlZJyA6IHRoaXMuaW5wLnR5cGUgPT09IElucHV0VHlwZS5Nb250aCA/ICdqTU1NTSBqWVlZWScgOiAnallZWVkvak1NL2pERCcpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuaW5wLnR5cGUgPT09IElucHV0VHlwZS5ZZWFyID8gJ3llYXInIDogdGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLk1vbnRoID8gJ21vbnRoJyA6ICdkYXknO1xyXG4gICAgdGhpcy5zZXREYXRlKCk7XHJcbiAgfVxyXG4gIHNldERhdGUoKTogdm9pZHtcclxuICAgIGNvbnN0IG4gPSB0aGlzLmFjdGl2ZS5jbG9uZSgpO1xyXG4gICAgY29uc3QgY291bnREYXlJbk1vbnRoID0gbi5sb2NhbGUoJ2ZhJykuZGF5c0luTW9udGgoKTtcclxuICAgIGNvbnN0IHN0YXJ0V2VlayA9IHBhcnNlSW50KG4uc3RhcnRPZignbW9udGgnKS5mb3JtYXQoJ2QnKSwgMTApO1xyXG4gICAgY29uc3QgcHJldmlvdXNNb250aCA9IG4uc3VidHJhY3QoMSwgJ21vbnRoJyk7XHJcbiAgICBjb25zdCBjb3VudERheUluUHJldmlvdXNNb250aCA9IHByZXZpb3VzTW9udGguZGF5c0luTW9udGgoKTtcclxuICAgIGNvbnN0IG5leHRNb250aCA9IG4uYWRkKDIsICdtb250aCcpO1xyXG4gICAgY29uc3QgcHJldmlvdXNEYXlzOiBEYXlDbGFzc1tdID0gW107XHJcbiAgICBjb25zdCBuZXh0RGF5cyA9IFtdO1xyXG4gICAgY29uc3QgZGF5cyA9IFtdO1xyXG4gICAgaWYgKHN0YXJ0V2VlayAhPT0gNil7XHJcbiAgICAgIGZvciAobGV0IGkgPSBjb3VudERheUluUHJldmlvdXNNb250aCAtIHN0YXJ0V2VlazsgaSA8PSBjb3VudERheUluUHJldmlvdXNNb250aDsgaSsrKXtcclxuICAgICAgICBwcmV2aW91c0RheXMucHVzaChuZXcgRGF5Q2xhc3MoaSwgdGhpcy5pc1RvZGF5KHByZXZpb3VzTW9udGgsIGkpLCBmYWxzZSwgZmFsc2UpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gY291bnREYXlJbk1vbnRoOyBpKyspe1xyXG4gICAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5pbnAuYWxsb3dlZCAhPSBudWxsICYmIHRoaXMuaW5wLmFsbG93ZWQubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgaXNBY3RpdmUgPSB0aGlzLmlzQWN0aXZlKHRoaXMuYWN0aXZlLCBpKTtcclxuICAgICAgfVxyXG4gICAgICBkYXlzLnB1c2gobmV3IERheUNsYXNzKGksIHRoaXMuaXNUb2RheSh0aGlzLmFjdGl2ZSwgaSksIHRoaXMuaXNTZWxlY3RlZCh0aGlzLmFjdGl2ZSwgaSksIGlzQWN0aXZlKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbmQgPSAoZGF5cy5sZW5ndGggKyBwcmV2aW91c0RheXMubGVuZ3RoKSAlIDc7XHJcbiAgICBpZiAoZW5kICE9PSAwKXtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNyAtIGVuZDsgaSsrKXtcclxuICAgICAgICBuZXh0RGF5cy5wdXNoKG5ldyBEYXlDbGFzcyhpLCB0aGlzLmlzVG9kYXkobmV4dE1vbnRoLCBpKSwgZmFsc2UsIGZhbHNlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNEYXlzID0gcHJldmlvdXNEYXlzO1xyXG4gICAgdGhpcy5uZXh0RGF5cyA9IG5leHREYXlzO1xyXG4gICAgdGhpcy5kYXlzID0gZGF5cztcclxuICB9XHJcbiAgaXNUb2RheShtOiBtb21lbnQuTW9tZW50LCBkOiBudW1iZXIpOiBib29sZWFue1xyXG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludChtLmZvcm1hdCgnak1NJyksIDEwKTtcclxuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChtLmZvcm1hdCgnallZWVknKSwgMTApO1xyXG4gICAgcmV0dXJuIHllYXIgPT09IHRoaXMudG9kYXlZZWFyICYmIG1vbnRoID09PSB0aGlzLnRvZGF5TW9udGggJiYgZCA9PT0gdGhpcy50b2RheURheTtcclxuICB9XHJcbiAgaXNBY3RpdmUobTogbW9tZW50Lk1vbWVudCwgZDogbnVtYmVyKTogYm9vbGVhbntcclxuICAgIGNvbnN0IG1vbnRoID0gbS5mb3JtYXQoJ2pNTScpO1xyXG4gICAgY29uc3QgeWVhciA9IG0uZm9ybWF0KCdqWVlZWScpO1xyXG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCh5ZWFyLnNsaWNlKC00KSArICcvJyArIG1vbnRoLnNsaWNlKC0yKSArICcvJyArIGQudG9TdHJpbmcoKS5zbGljZSgtMiksICdqWVlZWS9qTU0vakREJyk7XHJcbiAgICBmb3IgKGNvbnN0IGFsIG9mIHRoaXMuaW5wLmFsbG93ZWQpe1xyXG4gICAgICBjb25zdCBzdGFydCA9IGFsLnN0YXJ0ID8/IG51bGw7XHJcbiAgICAgIGNvbnN0IGVuZCA9IGFsLmVuZCA/PyBudWxsO1xyXG4gICAgICBpZiAoc3RhcnQgIT09IG51bGwgJiYgZGF0ZSA8IHN0YXJ0KXtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZW5kICE9PSBudWxsICYmIGRhdGUgPiBlbmQpe1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpc1NlbGVjdGVkKG06IG1vbWVudC5Nb21lbnQsIGQ6IG51bWJlcik6IGJvb2xlYW57XHJcbiAgICBpZiAodGhpcy5pbnAudmFsdWUgPT0gbnVsbCl7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQobS5mb3JtYXQoJ2pNTScpLCAxMCk7XHJcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQobS5mb3JtYXQoJ2pZWVlZJyksIDEwKTtcclxuICAgIGNvbnN0IHZEYXkgPSBwYXJzZUludCh0aGlzLmlucC52YWx1ZS5zcGxpdCgnLycpWzJdLCAxMCk7XHJcbiAgICBjb25zdCB2TW9udGggPSBwYXJzZUludCh0aGlzLmlucC52YWx1ZS5zcGxpdCgnLycpWzFdLCAxMCk7XHJcbiAgICBjb25zdCB2WWVhciA9IHBhcnNlSW50KHRoaXMuaW5wLnZhbHVlLnNwbGl0KCcvJylbMF0sIDEwKTtcclxuICAgIHJldHVybiB5ZWFyID09PSB2WWVhciAmJiBtb250aCA9PT0gdk1vbnRoICYmIGQgPT09IHZEYXk7XHJcbiAgfVxyXG4gIGFkZChjOiBudW1iZXIpOiB2b2lke1xyXG4gICAgdGhpcy5hY3RpdmUuYWRkKGMsIHRoaXMuc3RhdGUgPT09ICdkYXknID8gJ21vbnRoJyA6ICd5ZWFyJyk7XHJcbiAgICB0aGlzLnNldERhdGUoKTtcclxuICB9XHJcbiAgY2hhbmdlTW9udGgoYzogbnVtYmVyKTogdm9pZHtcclxuICAgIGNvbnN0IHYgPSBtb21lbnQodGhpcy5hY3RpdmUuZm9ybWF0KCdqWVlZWScpICsgJy8nICsgKCcwJyArIGMpLnNsaWNlKC0yKSArICcvJyArIHRoaXMuYWN0aXZlLmZvcm1hdCgnakREJyksICdqWVlZWS9qTU0vakREJyk7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IHYuaXNWYWxpZCgpID8gdiA6IG1vbWVudCh0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pZWVlZJykgKyAnLycgKyAoJzAnICsgYykuc2xpY2UoLTIpICsgJy8yOScsICdqWVlZWS9qTU0vakREJyk7XHJcbiAgICB0aGlzLnNldERhdGUoKTtcclxuICAgIGlmICh0aGlzLmlucC50eXBlID09PSBJbnB1dFR5cGUuTW9udGgpe1xyXG4gICAgICB0aGlzLnNlbGVjdERhdGUodGhpcy5kYXlzWzBdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ2RheScpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VZZWFyKGM6IG51bWJlcik6IHZvaWR7XHJcbiAgICBjb25zdCB2ID0gbW9tZW50KCgnMDAwJyArIGMpLnNsaWNlKC00KSArICcvJyArIHRoaXMuYWN0aXZlLmZvcm1hdCgnak1NJykgKyAnLycgKyB0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pERCcpLCAnallZWVkvak1NL2pERCcpO1xyXG4gICAgdGhpcy5hY3RpdmUgPSB2LmlzVmFsaWQoKSA/IHYgOiBtb21lbnQoKCcwMDAnICsgYykuc2xpY2UoLTQpICsgJy8nICsgdGhpcy5hY3RpdmUuZm9ybWF0KCdqTU0nKSArICcvMjknLCAnallZWVkvak1NL2pERCcpO1xyXG4gICAgdGhpcy5zZXREYXRlKCk7XHJcbiAgICBpZiAodGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLlllYXIpe1xyXG4gICAgICB0aGlzLnNlbGVjdERhdGUodGhpcy5kYXlzWzBdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ21vbnRoJyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRvZ2dsZUNhbGVuZGFyKCk6IHZvaWR7XHJcbiAgICB0aGlzLm9wZW5DYWxlbmRhcigpO1xyXG4gIH1cclxuICBvcGVuQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFBvc2l0aW9uKCk7XHJcbiAgICAkKHRoaXMuaW5wdXRCYXNlLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgfVxyXG4gIG9uS2V5RG93bihlKTogdm9pZHtcclxuICAgIGNvbnN0IGNvZGUgPSBlLmtleUNvZGUgfHwgZS53aGljaDtcclxuICAgIGlmIChjb2RlID09PSA5IHx8IGNvZGUgPT09IDEzKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgJCh0aGlzLmlucHV0RGl2Lm5hdGl2ZUVsZW1lbnQpLnJlbW92ZUNsYXNzKCd0b3AnKTtcclxuICAgICAgdGhpcy5jaGFuZ2VJbmRleC5lbWl0KGNvZGUgPT09IDkgPyBlLnNoaWZ0S2V5ID8gJ1NoaWZ0VGFiJyA6ICdUYWInIDogZS5zaGlmdEtleSA/ICdTaGlmdEVudGVyJyA6ICdFbnRlcicpO1xyXG4gICAgICBpZiAoIXRoaXMuaW5Gb3JtKXtcclxuICAgICAgICAkKHRoaXMuaW5wdXRCYXNlLm5hdGl2ZUVsZW1lbnQpLmJsdXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBvbktleVVwKGUpOiB2b2lke1xyXG4gICAgaWYgKHRoaXMuY1NlYXJjaCAhPT0gZS50YXJnZXQudmFsdWUpIHtcclxuICAgICAgdGhpcy5pbnAuZXJyb3IgPSBudWxsO1xyXG4gICAgICB0aGlzLmlucC52YWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuY1NlYXJjaCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLlllYXIgfHwgdGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLk1vbnRoKXtcclxuICAgICAgICBpZiAodGhpcy5pbnAub25DaGFuZ2Upe1xyXG4gICAgICAgICAgdGhpcy5pbnAub25DaGFuZ2UodGhpcy5pbnApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW5wLnNlYXJjaCAhPT0gJycgJiYgdGhpcy5pbnAuc2VhcmNoICE9PSBudWxsKXtcclxuICAgICAgICBjb25zdCB2ID0gbW9tZW50KHRoaXMuaW5wLnNlYXJjaCwgJ2pZWVlZL2pNTS9qREQnKTtcclxuICAgICAgICBpZiAodi5pc1ZhbGlkKCkgJiYgdGhpcy5pbnAuc2VhcmNoLmxlbmd0aCA8PSAxMCl7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHY7XHJcbiAgICAgICAgICB0aGlzLmlucC52YWx1ZSA9IHRoaXMuYWN0aXZlLmZvcm1hdCgnallZWVkvak1NL2pERCcpO1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRlKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5pbnAub25DaGFuZ2Upe1xyXG4gICAgICAgICAgICB0aGlzLmlucC5vbkNoYW5nZSh0aGlzLmlucCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wLm9uQ2hhbmdlKXtcclxuICAgICAgICAgIHRoaXMuaW5wLm9uQ2hhbmdlKHRoaXMuaW5wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb25Gb2N1c091dCgpOiB2b2lke1xyXG4gICAgJCh0aGlzLmlucHV0RGl2Lm5hdGl2ZUVsZW1lbnQpLnJlbW92ZUNsYXNzKCd0b3AnKTtcclxuICAgIHRoaXMuaW5wLnNlYXJjaCA9IHRoaXMuaW5wLnZhbHVlICE9IG51bGwgP1xyXG4gICAgICAodGhpcy5pbnAudHlwZSA9PT0gSW5wdXRUeXBlLlllYXIgP1xyXG4gICAgICAgIG1vbWVudCh0aGlzLmlucC52YWx1ZSwgJ2pZWVlZL2pNTS9qREQnKS5sb2NhbGUoJ2ZhJykuZm9ybWF0KCdqWVlZWScpIDpcclxuICAgICAgICB0aGlzLmlucC50eXBlID09PSBJbnB1dFR5cGUuTW9udGggP1xyXG4gICAgICAgICAgbW9tZW50KHRoaXMuaW5wLnZhbHVlLCAnallZWVkvak1NL2pERCcpLmxvY2FsZSgnZmEnKS5mb3JtYXQoJ2pNTU1NIGpZWVlZJykgOlxyXG4gICAgICAgICAgdGhpcy5pbnAudmFsdWUpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHRoaXMuc3RhdGUgPSB0aGlzLmlucC50eXBlID09PSBJbnB1dFR5cGUuWWVhciA/ICd5ZWFyJyA6IHRoaXMuaW5wLnR5cGUgPT09IElucHV0VHlwZS5Nb250aCA/ICdtb250aCcgOiAnZGF5JztcclxuICB9XHJcbiAgc2V0UG9zaXRpb24oKTogdm9pZHtcclxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmlucHV0RGl2Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBvZmZzZXRPZkJvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tO1xyXG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5pbnB1dENhbGVuZGFyRGl2Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgaWYgKG9mZnNldE9mQm90dG9tIDwgaGVpZ2h0KXtcclxuICAgICAgJCh0aGlzLmlucHV0RGl2Lm5hdGl2ZUVsZW1lbnQpLmFkZENsYXNzKCd0b3AnKTtcclxuICAgIH1lbHNle1xyXG4gICAgICAkKHRoaXMuaW5wdXREaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3RvcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3REYXRlKGQ6IERheUNsYXNzKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucC5lcnJvciA9IG51bGw7XHJcbiAgICBjb25zdCBzID0gdGhpcy5kYXlzLmZpbmQoeCA9PiB4LnNlbGVjdGVkKTtcclxuICAgIGlmIChzKXtcclxuICAgICAgcy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbSA9IHBhcnNlSW50KHRoaXMuYWN0aXZlLmZvcm1hdCgnak1NJyksIDEwKTtcclxuICAgIGNvbnN0IHkgPSBwYXJzZUludCh0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pZWVlZJyksIDEwKTtcclxuICAgIHRoaXMuc2V0VmFsdWUoeSwgbSwgZC5kYXkpO1xyXG4gICAgZC5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNTZWFyY2ggPSB0aGlzLmlucC5zZWFyY2g7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgJCh0aGlzLmlucHV0RGl2Lm5hdGl2ZUVsZW1lbnQpLnJlbW92ZUNsYXNzKCd0b3AnKTtcclxuICAgICAgdGhpcy5jaGFuZ2VJbmRleC5lbWl0KCdUYWInKTtcclxuICAgICAgaWYgKCF0aGlzLmluRm9ybSl7XHJcbiAgICAgICAgJCh0aGlzLmlucHV0QmFzZS5uYXRpdmVFbGVtZW50KS5ibHVyKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwKTtcclxuICAgIGlmICh0aGlzLmlucC5vbkNoYW5nZSl7XHJcbiAgICAgIHRoaXMuaW5wLm9uQ2hhbmdlKHRoaXMuaW5wKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0VmFsdWUoeTogbnVtYmVyLCBtOiBudW1iZXIsIGQ6IG51bWJlcik6IHZvaWR7XHJcbiAgICB0aGlzLmlucC52YWx1ZSA9IHkgKyAnLycgKyAobSA+IDkgPyBtIDogJzAnICsgbSkgKyAnLycgKyAoZCA+IDkgPyBkIDogJzAnICsgZCk7XHJcbiAgICB0aGlzLmlucC5zZWFyY2ggPSB0aGlzLmlucC50eXBlID09PSBJbnB1dFR5cGUuWWVhciA/IHkgOlxyXG4gICAgICB0aGlzLmlucC50eXBlID09PSBJbnB1dFR5cGUuTW9udGggP1xyXG4gICAgICAgIHRoaXMubW9udGhzW20gLSAxXSArICcgJyArIHkgOlxyXG4gICAgICAgIHkgKyAnLycgKyAobSA+IDkgPyBtIDogJzAnICsgbSkgKyAnLycgKyAoZCA+IDkgPyBkIDogJzAnICsgZCk7XHJcbiAgfVxyXG4gIGNoYW5nZVN0YXRlKHM6IHN0cmluZyk6IHZvaWR7XHJcbiAgICB0aGlzLnN0YXRlID0gcztcclxuICB9XHJcbiAgZ2V0WWVhcnMoKTogbnVtYmVyW117XHJcbiAgICBjb25zdCB5ID0gcGFyc2VJbnQodGhpcy5hY3RpdmUuZm9ybWF0KCdqWVlZWScpLCAxMCk7XHJcbiAgICBjb25zdCBzeSA9IHkgLSAoeSAlIDIwKTtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IDIwfSwgKHgsIGkpID0+IHN5ICsgaSk7XHJcbiAgfVxyXG4gIGdldEFjdGl2ZU1vbnRoKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLm1vbnRoc1twYXJzZUludCh0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pNJyksIDEwKSAtIDFdO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,106 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as moment from 'jalali-moment';
3
- import { InputClass } from '../../../classes/form.class';
4
- import { InputError, InputType } from '../../../classes/enum.class';
5
- export class FormDatetimeComponent {
6
- constructor() {
7
- this.changeIndex = new EventEmitter();
8
- }
9
- ngOnInit() {
10
- this.date = new InputClass(this.inp.environment, this.inp.l, 'Date', null, InputType.Date);
11
- this.time = new InputClass(this.inp.environment, this.inp.l, 'Time', null, InputType.Time);
12
- this.date.displayLabel = this.time.displayLabel = false;
13
- this.time.level = this.inp.level;
14
- if (this.inp.value) {
15
- this.inp.setValue(this.inp.value, false);
16
- }
17
- this.inp.setValue = (v) => {
18
- if (v === null) {
19
- this.inp.clear();
20
- return;
21
- }
22
- else if (typeof v === 'string') {
23
- v = parseInt(v.substring(6, v.length - 2), 10);
24
- }
25
- const m = moment(v).locale('fa');
26
- this.date.setValue(m, false);
27
- this.time.setValue({ Hours: m.hours(), Minutes: m.minutes() }, false);
28
- };
29
- this.inp.isValid = () => {
30
- this.inp.value = this.getValue();
31
- this.inp.error = null;
32
- this.date.error = null;
33
- this.time.error = null;
34
- if (this.inp.required && !this.inp.value) {
35
- this.inp.error = InputError.Required;
36
- this.date.error = InputError.Required;
37
- this.time.error = InputError.Required;
38
- return false;
39
- }
40
- if (!this.inp.required && !this.inp.value) {
41
- return true;
42
- }
43
- if (!moment(this.inp.value, 'jYYYY/jMM/jDD HH:mm').isValid()) {
44
- this.inp.error = InputError.Invalid;
45
- this.date.error = InputError.Invalid;
46
- this.time.error = InputError.Invalid;
47
- return false;
48
- }
49
- return true;
50
- };
51
- this.inp.clear = () => {
52
- if (this.inp.default) {
53
- this.inp.setValue(this.inp.default, false);
54
- }
55
- else {
56
- this.date.clear();
57
- this.time.clear();
58
- }
59
- };
60
- this.inp.data = () => {
61
- const v = this.getValue();
62
- return v != null ? moment(v, 'jYYYY/jMM/jDD HH:mm').locale('en').format('YYYY/MM/DD HH:mm') : null;
63
- };
64
- this.inp.focus = () => {
65
- this.date.focus();
66
- };
67
- this.inp.focusOut = () => {
68
- this.date.focusOut();
69
- };
70
- }
71
- changeFocus(p, a) {
72
- if (p === 'Date') {
73
- if (a === 'Tab' || a === 'Enter') {
74
- this.time.focus();
75
- }
76
- else if (a === 'ShiftTab' || a === 'ShiftEnter') {
77
- this.changeIndex.emit('ShiftTab');
78
- }
79
- }
80
- else {
81
- if (a === 'Tab' || a === 'Enter') {
82
- this.changeIndex.emit('Tab');
83
- }
84
- else if (a === 'ShiftTab' || a === 'ShiftEnter') {
85
- this.date.focus();
86
- }
87
- }
88
- }
89
- getValue() {
90
- return !this.date.value || !this.time.value ? null : `${this.date.value} ${this.time.value}`;
91
- }
92
- }
93
- FormDatetimeComponent.decorators = [
94
- { type: Component, args: [{
95
- selector: 'lib-form-datetime',
96
- template: "<div [id]=\"inp.id + 'DatetimeInput'\" [style]=\"inp.style\" [className]=\"'form-input-con datetime w-100' + (inp.error == null ? '' : ' error') + (inp.disabled ? ' disabled' : '') + ' ' + inp.class\">\r\n <div class=\"form-input\">\r\n <div *ngIf=\"inp.displayLabel\" (click)=\"this.date.focus()\" class=\"label\"><i *ngIf=\"inp.required\" class=\"fas fa-star-of-life required-icon\"></i>{{inp.getLabel()}}</div>\r\n <div class=\"w-100 p-r\">\r\n <i (click)=\"this.date.focus()\" *ngIf=\"inp.icon != null || inp.loading\" #inputIcon [className]=\"(inp.loading ? 'fad fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n <i *ngIf=\"inp.withClear && (date.value || time.value)\" (click)=\"inp.clear()\" class=\"fad fa-times clear-icon\"></i>\r\n <lib-form-date (changeIndex)=\"changeFocus('Date', $event)\" [inp]=\"date\"></lib-form-date>\r\n <lib-form-time (changeIndex)=\"changeFocus('Time', $event)\" [inp]=\"time\"></lib-form-time>\r\n </div>\r\n </div>\r\n</div>\r\n",
97
- styles: [".form-input-con.datetime{padding:0 15px;position:relative}.form-input-con.datetime .form-input{float:right;position:relative;width:100%}.form-input-con.datetime .form-input .label{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:default;direction:rtl;float:right;font-size:12px;height:20px;line-height:20px;margin-bottom:3px;padding:0 10px;text-align:right;width:100%}.form-input-con.datetime.error .form-input .label{color:var(--red);font-size:10px}.form-input-con.datetime .form-input .label .required-icon{color:var(--red);font-size:9px;height:20px;line-height:20px;text-align:center;width:20px}.form-input-con.datetime .form-input .control{background-color:#fff;background-image:none;border:none;border:var(--border-input);border-radius:var(--border-radius-base);color:var(--black);display:block;font-size:11px;height:35px;padding:5px 35px;position:relative;text-align:center;width:100%;z-index:2}.form-input-con.datetime .form-input .control:focus{border-radius:var(--border-radius-base) var(--border-radius-base) var(--border-radius-base) 0}.form-input-con.datetime.top .form-input .control:focus{border-radius:0 var(--border-radius-base) var(--border-radius-base) var(--border-radius-base)}.form-input-con.datetime .form-input .control:focus,.form-input-con.datetime .form-input:hover .control{border:var(--border-input-dark);outline:none}.form-input-con.datetime .form-input i.icon{color:var(--primary);cursor:text;font-size:13px;left:0}.form-input-con.datetime .form-input i.clear-icon,.form-input-con.datetime .form-input i.icon{bottom:0;height:35px;line-height:35px;position:absolute;text-align:center;transition:all .35s ease-in-out;width:35px;z-index:3}.form-input-con.datetime .form-input i.clear-icon{color:var(--red);cursor:pointer;font-size:14px;right:0}.form-input-con.datetime.disabled .form-input,.form-input-con.datetime.disabled .form-input .label,.form-input-con.datetime.disabled .form-input i.icon{cursor:default;filter:blur(.5px);opacity:.7;pointer-events:none}::ng-deep .form-input-con.datetime .form-input .form-input-con.date .form-input .control{padding:5px 15px 5px 35px!important;padding:5px 15px!important}::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.date .form-input .control,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.date .form-input .label,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.date .form-input i.icon,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.time .form-input .control,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.time .form-input .label,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.time .form-input i.icon{cursor:default;filter:blur(.5px);opacity:.7;pointer-events:none}.form-input-con.datetime.error .form-input .control,.form-input-con.datetime.error .form-input i.icon{color:var(--red-light)}.form-input-con.datetime.error .form-input .control{border:var(--border-input-red)}.form-input-con.datetime.error .form-input .control:focus,.form-input-con.datetime.error .form-input:hover .control{border:var(--border-input-red-dark)}::ng-deep .form-input-con.datetime .form-input .form-input-con.date{float:left!important;padding:0;width:60%}::ng-deep .form-input-con.datetime .form-input .form-input-con.time{float:right;padding:0;width:40%}::ng-deep .form-input-con.datetime .form-input .form-input-con.date .form-input .control{border-radius:var(--border-radius-base) 0 0 var(--border-radius-base)!important}::ng-deep .form-input-con.datetime .form-input .form-input-con.time .form-input .control{border-left:unset!important;border-radius:0 var(--border-radius-base) var(--border-radius-base) 0!important}"]
98
- },] }
99
- ];
100
- FormDatetimeComponent.ctorParameters = () => [];
101
- FormDatetimeComponent.propDecorators = {
102
- inp: [{ type: Input }],
103
- inForm: [{ type: Input }],
104
- changeIndex: [{ type: Output }]
105
- };
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kYXRldGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHNUb29sa2l0L1VJL3Byb2plY3RzL3BzLXRvb2xraXQtdWkvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZm9ybS9kYXRldGltZS9mb3JtLmRhdGV0aW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT2xFLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEM7UUFIQSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFJekMsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FB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Q0wsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlCO2lCQUFNLElBQUksQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLEtBQUssWUFBWSxFQUFDO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvRixDQUFDOzs7WUE3RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLHEvQkFBNkM7O2FBRTlDOzs7O2tCQUVFLEtBQUs7cUJBRUwsS0FBSzswQkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnamFsYWxpLW1vbWVudCc7XHJcbmltcG9ydCB7SW5wdXRDbGFzc30gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLmNsYXNzJztcclxuaW1wb3J0IHtJbnB1dEVycm9yLCBJbnB1dFR5cGV9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW51bS5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWRhdGV0aW1lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS5kYXRldGltZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS5kYXRldGltZS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1EYXRldGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKVxyXG4gIGlucDogSW5wdXRDbGFzcztcclxuICBASW5wdXQoKVxyXG4gIGluRm9ybTogYm9vbGVhbjtcclxuICBAT3V0cHV0KClcclxuICBjaGFuZ2VJbmRleCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGRhdGU6IElucHV0Q2xhc3M7XHJcbiAgdGltZTogSW5wdXRDbGFzcztcclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lke1xyXG4gICAgdGhpcy5kYXRlID0gbmV3IElucHV0Q2xhc3ModGhpcy5pbnAuZW52aXJvbm1lbnQsIHRoaXMuaW5wLmwsICdEYXRlJywgbnVsbCwgSW5wdXRUeXBlLkRhdGUpO1xyXG4gICAgdGhpcy50aW1lID0gbmV3IElucHV0Q2xhc3ModGhpcy5pbnAuZW52aXJvbm1lbnQsIHRoaXMuaW5wLmwsICdUaW1lJywgbnVsbCwgSW5wdXRUeXBlLlRpbWUpO1xyXG4gICAgdGhpcy5kYXRlLmRpc3BsYXlMYWJlbCA9IHRoaXMudGltZS5kaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICAgIHRoaXMudGltZS5sZXZlbCA9IHRoaXMuaW5wLmxldmVsO1xyXG4gICAgaWYgKHRoaXMuaW5wLnZhbHVlKXtcclxuICAgICAgdGhpcy5pbnAuc2V0VmFsdWUodGhpcy5pbnAudmFsdWUsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wLnNldFZhbHVlID0gKHYpID0+IHtcclxuICAgICAgaWYgKHYgPT09IG51bGwpe1xyXG4gICAgICAgIHRoaXMuaW5wLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHYgPSBwYXJzZUludCh2LnN1YnN0cmluZyg2LCB2Lmxlbmd0aCAtIDIpLCAxMCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbSA9IG1vbWVudCh2KS5sb2NhbGUoJ2ZhJyk7XHJcbiAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZShtLCBmYWxzZSk7XHJcbiAgICAgIHRoaXMudGltZS5zZXRWYWx1ZSh7SG91cnM6IG0uaG91cnMoKSwgTWludXRlczogbS5taW51dGVzKCl9LCBmYWxzZSk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuaXNWYWxpZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pbnAudmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XHJcbiAgICAgIHRoaXMuaW5wLmVycm9yID0gbnVsbDtcclxuICAgICAgdGhpcy5kYXRlLmVycm9yID0gbnVsbDtcclxuICAgICAgdGhpcy50aW1lLmVycm9yID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuaW5wLnJlcXVpcmVkICYmICF0aGlzLmlucC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuaW5wLmVycm9yID0gSW5wdXRFcnJvci5SZXF1aXJlZDtcclxuICAgICAgICB0aGlzLmRhdGUuZXJyb3IgPSBJbnB1dEVycm9yLlJlcXVpcmVkO1xyXG4gICAgICAgIHRoaXMudGltZS5lcnJvciA9IElucHV0RXJyb3IuUmVxdWlyZWQ7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5pbnAucmVxdWlyZWQgJiYgIXRoaXMuaW5wLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFtb21lbnQodGhpcy5pbnAudmFsdWUsICdqWVlZWS9qTU0vakREIEhIOm1tJykuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgdGhpcy5pbnAuZXJyb3IgPSBJbnB1dEVycm9yLkludmFsaWQ7XHJcbiAgICAgICAgdGhpcy5kYXRlLmVycm9yID0gSW5wdXRFcnJvci5JbnZhbGlkO1xyXG4gICAgICAgIHRoaXMudGltZS5lcnJvciA9IElucHV0RXJyb3IuSW52YWxpZDtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuY2xlYXIgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlucC5kZWZhdWx0KXtcclxuICAgICAgICB0aGlzLmlucC5zZXRWYWx1ZSh0aGlzLmlucC5kZWZhdWx0LCBmYWxzZSk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuZGF0ZS5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMudGltZS5jbGVhcigpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZGF0YSA9ICgpID0+IHtcclxuICAgICAgY29uc3QgdiA9IHRoaXMuZ2V0VmFsdWUoKTtcclxuICAgICAgcmV0dXJuIHYgIT0gbnVsbCA/IG1vbWVudCh2LCAnallZWVkvak1NL2pERCBISDptbScpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ1lZWVkvTU0vREQgSEg6bW0nKSA6IG51bGw7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZm9jdXMgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0ZS5mb2N1cygpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmZvY3VzT3V0ID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGUuZm9jdXNPdXQoKTtcclxuICAgIH07XHJcbiAgfVxyXG4gIGNoYW5nZUZvY3VzKHAsIGEpOiB2b2lke1xyXG4gICAgaWYgKHAgPT09ICdEYXRlJyl7XHJcbiAgICAgIGlmIChhID09PSAnVGFiJyB8fCBhID09PSAnRW50ZXInKXtcclxuICAgICAgICB0aGlzLnRpbWUuZm9jdXMoKTtcclxuICAgICAgfSBlbHNlIGlmIChhID09PSAnU2hpZnRUYWInIHx8IGEgPT09ICdTaGlmdEVudGVyJyl7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VJbmRleC5lbWl0KCdTaGlmdFRhYicpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYSA9PT0gJ1RhYicgfHwgYSA9PT0gJ0VudGVyJyl7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VJbmRleC5lbWl0KCdUYWInKTtcclxuICAgICAgfSBlbHNlIGlmIChhID09PSAnU2hpZnRUYWInIHx8IGEgPT09ICdTaGlmdEVudGVyJyl7XHJcbiAgICAgICAgdGhpcy5kYXRlLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VmFsdWUoKTogc3RyaW5ne1xyXG4gICAgcmV0dXJuICF0aGlzLmRhdGUudmFsdWUgfHwgIXRoaXMudGltZS52YWx1ZSA/IG51bGwgOiBgJHt0aGlzLmRhdGUudmFsdWV9ICR7dGhpcy50aW1lLnZhbHVlfWA7XHJcbiAgfVxyXG59XHJcbiJdfQ==