@acorex/components 16.18.50 → 16.19.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 (192) hide show
  1. package/fesm2022/acorex-components.mjs +836 -731
  2. package/fesm2022/acorex-components.mjs.map +1 -1
  3. package/index.d.ts +1 -0
  4. package/lib/base/base-page.class.d.ts +2 -2
  5. package/lib/base/element.class.d.ts +5 -5
  6. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +1 -1
  7. package/lib/data-filter/filter.class.d.ts +1 -1
  8. package/lib/data-list/core/data-list.component.d.ts +1 -1
  9. package/lib/date-picker/date-picker.component.d.ts +21 -4
  10. package/lib/property-editor/property-editor.class.d.ts +1 -1
  11. package/lib/textbox/textbox.component.d.ts +2 -1
  12. package/package.json +4 -6
  13. package/esm2022/acorex-components.mjs +0 -5
  14. package/esm2022/index.mjs +0 -159
  15. package/esm2022/lib/accordion/accordion.component.mjs +0 -45
  16. package/esm2022/lib/accordion/accordion.module.mjs +0 -20
  17. package/esm2022/lib/base/base-page.class.mjs +0 -97
  18. package/esm2022/lib/base/components.class.mjs +0 -17
  19. package/esm2022/lib/base/element.class.mjs +0 -307
  20. package/esm2022/lib/base/events.class.mjs +0 -17
  21. package/esm2022/lib/button/button.component.mjs +0 -74
  22. package/esm2022/lib/button/button.module.mjs +0 -21
  23. package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +0 -469
  24. package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  25. package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +0 -59
  26. package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +0 -16
  27. package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +0 -226
  28. package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  29. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -136
  30. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  31. package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -49
  32. package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -102
  33. package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -214
  34. package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  35. package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -85
  36. package/esm2022/lib/checkbox/checkbox.component.mjs +0 -112
  37. package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
  38. package/esm2022/lib/color-picker/color-box/color-box.component.mjs +0 -423
  39. package/esm2022/lib/color-picker/color-picker.component.mjs +0 -89
  40. package/esm2022/lib/color-picker/color-picker.module.mjs +0 -24
  41. package/esm2022/lib/context-menu/context-menu.component.mjs +0 -68
  42. package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -146
  43. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -20
  44. package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +0 -140
  45. package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +0 -119
  46. package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +0 -75
  47. package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +0 -119
  48. package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -267
  49. package/esm2022/lib/data-filter/filter.class.mjs +0 -46
  50. package/esm2022/lib/data-filter/filter.module.mjs +0 -88
  51. package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -168
  52. package/esm2022/lib/data-list/core/data-list.component.mjs +0 -37
  53. package/esm2022/lib/data-list/list/list.component.mjs +0 -134
  54. package/esm2022/lib/data-list/list/list.module.mjs +0 -22
  55. package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +0 -84
  56. package/esm2022/lib/data-source/datasource.component.mjs +0 -47
  57. package/esm2022/lib/data-source/datasource.module.mjs +0 -18
  58. package/esm2022/lib/data-source/read-param.mjs +0 -7
  59. package/esm2022/lib/date-picker/date-picker.component.mjs +0 -1102
  60. package/esm2022/lib/date-picker/date-picker.module.mjs +0 -50
  61. package/esm2022/lib/dialog/dialog.component.mjs +0 -26
  62. package/esm2022/lib/dialog/dialog.module.mjs +0 -21
  63. package/esm2022/lib/dialog/dialog.service.mjs +0 -160
  64. package/esm2022/lib/drawer/content.component.mjs +0 -18
  65. package/esm2022/lib/drawer/drawer-container.component.mjs +0 -38
  66. package/esm2022/lib/drawer/drawer.component.mjs +0 -146
  67. package/esm2022/lib/drawer/drawer.module.mjs +0 -23
  68. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -186
  69. package/esm2022/lib/dropdown/dropdown.module.mjs +0 -26
  70. package/esm2022/lib/fieldset/fieldset.component.mjs +0 -57
  71. package/esm2022/lib/fieldset/fieldset.module.mjs +0 -19
  72. package/esm2022/lib/form-group/form-group.component.mjs +0 -108
  73. package/esm2022/lib/form-group/form-group.module.mjs +0 -22
  74. package/esm2022/lib/form-group/form-lable.directive.mjs +0 -23
  75. package/esm2022/lib/label/label.component.mjs +0 -22
  76. package/esm2022/lib/label/label.module.mjs +0 -21
  77. package/esm2022/lib/loading/loading-indicator.component.mjs +0 -18
  78. package/esm2022/lib/loading/loading-panel.component.mjs +0 -45
  79. package/esm2022/lib/loading/loading.module.mjs +0 -21
  80. package/esm2022/lib/loading/loading.service.mjs +0 -47
  81. package/esm2022/lib/menu/menu-item.component.mjs +0 -50
  82. package/esm2022/lib/menu/menu.component.mjs +0 -114
  83. package/esm2022/lib/menu/menu.module.mjs +0 -22
  84. package/esm2022/lib/menu/menu2.component.mjs +0 -100
  85. package/esm2022/lib/number-box/number-box.component.mjs +0 -715
  86. package/esm2022/lib/number-box/number-box.module.mjs +0 -21
  87. package/esm2022/lib/page/content.component.mjs +0 -27
  88. package/esm2022/lib/page/footer.component.mjs +0 -19
  89. package/esm2022/lib/page/page.component.mjs +0 -57
  90. package/esm2022/lib/page/page.module.mjs +0 -22
  91. package/esm2022/lib/panel-box/panel-box.component.mjs +0 -87
  92. package/esm2022/lib/panel-box/panel-box.module.mjs +0 -19
  93. package/esm2022/lib/password-box/password-box.component.mjs +0 -36
  94. package/esm2022/lib/password-box/password-box.module.mjs +0 -23
  95. package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +0 -50
  96. package/esm2022/lib/popover/overlay.service.mjs +0 -94
  97. package/esm2022/lib/popover/popover.component.mjs +0 -145
  98. package/esm2022/lib/popover/popover.module.mjs +0 -19
  99. package/esm2022/lib/popup/popup.component.mjs +0 -160
  100. package/esm2022/lib/popup/popup.module.mjs +0 -25
  101. package/esm2022/lib/popup/popup.service.mjs +0 -94
  102. package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -16
  103. package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
  104. package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +0 -65
  105. package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
  106. package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +0 -41
  107. package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  108. package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +0 -118
  109. package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  110. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -216
  111. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -76
  112. package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +0 -87
  113. package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  114. package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +0 -72
  115. package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  116. package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +0 -145
  117. package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +0 -59
  118. package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -76
  119. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -75
  120. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  121. package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -73
  122. package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
  123. package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -30
  124. package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  125. package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +0 -36
  126. package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  127. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -35
  128. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  129. package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +0 -55
  130. package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  131. package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +0 -167
  132. package/esm2022/lib/property-editor/property-editor.class.mjs +0 -108
  133. package/esm2022/lib/property-editor/property-editor.module.mjs +0 -194
  134. package/esm2022/lib/query-builder/query-builder-group.component.mjs +0 -129
  135. package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -177
  136. package/esm2022/lib/query-builder/query-builder-rule.component.mjs +0 -428
  137. package/esm2022/lib/query-builder/query-builder.class.mjs +0 -42
  138. package/esm2022/lib/query-builder/query-builder.component.mjs +0 -92
  139. package/esm2022/lib/query-builder/query-builder.module.mjs +0 -62
  140. package/esm2022/lib/query-builder/query-builder.service.mjs +0 -199
  141. package/esm2022/lib/search-bar/search-bar.component.mjs +0 -293
  142. package/esm2022/lib/search-bar/search-bar.module.mjs +0 -61
  143. package/esm2022/lib/searchbox/searchbox.component.mjs +0 -138
  144. package/esm2022/lib/searchbox/searchbox.module.mjs +0 -24
  145. package/esm2022/lib/selectbox/selectbox.component.mjs +0 -1137
  146. package/esm2022/lib/selectbox/selectbox.module.mjs +0 -45
  147. package/esm2022/lib/selectbox/selectbox2.component.mjs +0 -617
  148. package/esm2022/lib/selection-list/selection-list.component.mjs +0 -120
  149. package/esm2022/lib/selection-list/selection-list.module.mjs +0 -21
  150. package/esm2022/lib/switch/switch.component.mjs +0 -55
  151. package/esm2022/lib/switch/switch.module.mjs +0 -20
  152. package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +0 -75
  153. package/esm2022/lib/tab-page/tab-page-host.component.mjs +0 -124
  154. package/esm2022/lib/tab-page/tab-page.module.mjs +0 -21
  155. package/esm2022/lib/tab-page/tab-page.service.mjs +0 -159
  156. package/esm2022/lib/tab-strip/tab-strip.component.mjs +0 -48
  157. package/esm2022/lib/tab-strip/tab-strip.module.mjs +0 -19
  158. package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +0 -25
  159. package/esm2022/lib/tab-view/tab-view.component.mjs +0 -110
  160. package/esm2022/lib/tab-view/tab-view.module.mjs +0 -21
  161. package/esm2022/lib/tab-view/tab.component.mjs +0 -33
  162. package/esm2022/lib/textarea/textarea.component.mjs +0 -44
  163. package/esm2022/lib/textarea/textarea.module.mjs +0 -21
  164. package/esm2022/lib/textbox/textbox.component.mjs +0 -46
  165. package/esm2022/lib/textbox/textbox.module.mjs +0 -36
  166. package/esm2022/lib/time-picker/time-picker.component.mjs +0 -1107
  167. package/esm2022/lib/time-picker/time-picker.module.mjs +0 -34
  168. package/esm2022/lib/toast/toast-message/toast-message.component.mjs +0 -76
  169. package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  170. package/esm2022/lib/toast/toast.module.mjs +0 -21
  171. package/esm2022/lib/toast/toast.service.mjs +0 -45
  172. package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -77
  173. package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +0 -65
  174. package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +0 -56
  175. package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +0 -37
  176. package/esm2022/lib/toolbar/toolbar-item.mjs +0 -4
  177. package/esm2022/lib/toolbar/toolbar.component.mjs +0 -13
  178. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -40
  179. package/esm2022/lib/tooltip/tooltip.directive.mjs +0 -115
  180. package/esm2022/lib/tooltip/tooltip.module.mjs +0 -19
  181. package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +0 -697
  182. package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +0 -33
  183. package/esm2022/lib/tree-view/tree-view.component.mjs +0 -854
  184. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -22
  185. package/esm2022/lib/upload-file/upload-file.component.mjs +0 -299
  186. package/esm2022/lib/upload-file/upload-file.events.mjs +0 -2
  187. package/esm2022/lib/upload-file/upload-file.module.mjs +0 -24
  188. package/esm2022/lib/validation/validation-form.component.mjs +0 -68
  189. package/esm2022/lib/validation/validation-rule.widget.mjs +0 -133
  190. package/esm2022/lib/validation/validation.class.mjs +0 -2
  191. package/esm2022/lib/validation/validation.component.mjs +0 -89
  192. package/esm2022/lib/validation/validation.module.mjs +0 -34
@@ -1,469 +0,0 @@
1
- import { AXConfig, AXDateTime, AXDateTimeRange, AXTranslator, } from '@acorex/core';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "../../button/button.component";
6
- import * as i3 from "@acorex/core";
7
- export class AXCalendarBoxComponent {
8
- cdr;
9
- ref;
10
- weekdays = [];
11
- d = {
12
- jalali: {
13
- locale: AXConfig.get('dateTime.jalali.locale') || 'fa',
14
- dir: 'rtl',
15
- number: 1,
16
- },
17
- gregorian: {
18
- locale: AXConfig.get('dateTime.gregorian.locale') || 'en',
19
- dir: 'ltr',
20
- number: 0,
21
- },
22
- };
23
- numRotate;
24
- size = 'md';
25
- type;
26
- locale;
27
- dir;
28
- _min;
29
- set min(v) {
30
- if (v) {
31
- this._min = v;
32
- this.focusedValue = this.today;
33
- this.viewRange = this.today.month.range;
34
- this.navigate(0);
35
- }
36
- }
37
- get min() {
38
- return this._min;
39
- }
40
- _max;
41
- set max(v) {
42
- if (v) {
43
- this._max = v;
44
- this.focusedValue = this.today;
45
- this.viewRange = this.today.month.range;
46
- this.navigate(0);
47
- }
48
- }
49
- get max() {
50
- return this._max;
51
- }
52
- selectableHoliday = true;
53
- dayStyle = [];
54
- dayMinMaxResoan = '';
55
- getHoliday;
56
- getWeekend;
57
- showTodayButton = false;
58
- matrix = [];
59
- rotated = false;
60
- _view = 'day';
61
- get view() {
62
- return this._view;
63
- }
64
- set view(v) {
65
- this._view = v;
66
- this.navigate(0);
67
- }
68
- _depth = 'day';
69
- get depth() {
70
- return this._depth;
71
- }
72
- set depth(v) {
73
- this._depth = v;
74
- this.view = v;
75
- }
76
- viewRange;
77
- holidays = [];
78
- weekends = [];
79
- onValueChanged = new EventEmitter();
80
- onClick = new EventEmitter();
81
- valueChange = new EventEmitter();
82
- _value;
83
- get value() {
84
- return this._value?.date;
85
- }
86
- set value(v) {
87
- let vv;
88
- if (v) {
89
- vv = AXDateTime.convert(v);
90
- }
91
- let unValidDate = false;
92
- if (this._max || this._min) {
93
- unValidDate = this.isInMInMaxRange(vv);
94
- }
95
- if (!unValidDate) {
96
- if (vv && !vv.equal(this._value)) {
97
- this._value = vv;
98
- this._value.type = this.type;
99
- this.setFocus(this._value.clone());
100
- this.valueChange.emit(vv.date);
101
- this.onValueChanged.emit({
102
- component: this,
103
- value: this._value?.date,
104
- htmlElement: this.ref.nativeElement,
105
- });
106
- }
107
- if (v == undefined) {
108
- this._value = null;
109
- this.focusedValue = this.today;
110
- this.viewRange = this.today.month.range;
111
- this.navigate(0);
112
- }
113
- this.onClick.emit({
114
- component: this,
115
- value: this._value?.date,
116
- htmlElement: this.ref.nativeElement,
117
- });
118
- }
119
- }
120
- focusedValue;
121
- get today() {
122
- return new AXDateTime(new Date(), this.type);
123
- }
124
- constructor(cdr, ref) {
125
- this.cdr = cdr;
126
- this.ref = ref;
127
- // set defaults
128
- this.getHoliday = AXConfig.get('dateTime.holidays');
129
- this.getWeekend = AXConfig.get('dateTime.weekends');
130
- }
131
- findDay(date) {
132
- if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {
133
- return true;
134
- }
135
- else {
136
- return false;
137
- }
138
- }
139
- getStyle(date) {
140
- if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {
141
- return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).style;
142
- }
143
- else {
144
- return '';
145
- }
146
- }
147
- getTitle(date) {
148
- if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {
149
- return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).text;
150
- }
151
- else {
152
- if ((this._min &&
153
- this._max &&
154
- date.compaireNew(new AXDateTime(this._min, this.type), 'YMD', this.type) === -1) ||
155
- date.compaireNew(new AXDateTime(this._max, this.type), 'YMD', this.type) === 1) {
156
- return this.dayMinMaxResoan;
157
- }
158
- else {
159
- return '';
160
- }
161
- }
162
- }
163
- ngOnInit() {
164
- this.focusedValue = new AXDateTime(new Date(), this.type);
165
- //
166
- this.initLayout();
167
- //
168
- this.viewRange = this.today.month.range;
169
- if (this.value) {
170
- this.setFocus(new AXDateTime(this.value, this.type));
171
- }
172
- else {
173
- this.setFocus(this.today);
174
- }
175
- this.view = 'day';
176
- }
177
- getViewCompaire(view) {
178
- switch (view) {
179
- case 'day':
180
- return 'YMD';
181
- case 'month':
182
- return 'YM';
183
- case 'year':
184
- return 'Y';
185
- }
186
- }
187
- ngAfterViewInit() {
188
- this.navigate(0);
189
- }
190
- initLayout() {
191
- if (!this.type) {
192
- this.type = AXConfig.get('dateTime.type') || 'gregorian';
193
- }
194
- if (!this.locale) {
195
- this.locale = this.d[this.type]?.locale || this.locale;
196
- }
197
- if (!this.dir) {
198
- this.dir = this.d[this.type]?.dir || 'ltr';
199
- }
200
- this.numRotate = this.d[this.type]?.number || 0;
201
- const path = 'dateTime.weekdaysShort';
202
- this.weekdays = [
203
- AXTranslator.get(`${path}.sun`, this.locale),
204
- AXTranslator.get(`${path}.mon`, this.locale),
205
- AXTranslator.get(`${path}.tue`, this.locale),
206
- AXTranslator.get(`${path}.wed`, this.locale),
207
- AXTranslator.get(`${path}.thu`, this.locale),
208
- AXTranslator.get(`${path}.fri`, this.locale),
209
- AXTranslator.get(`${path}.sat`, this.locale),
210
- ];
211
- }
212
- getTodayName() {
213
- return AXTranslator.get('dateTime.today', this.locale);
214
- }
215
- prev() {
216
- this.navigate(-1);
217
- }
218
- next() {
219
- this.navigate(1);
220
- }
221
- rotate(array, n) {
222
- const len = array.length;
223
- return !(n % len)
224
- ? array
225
- : n > 0
226
- ? array.map((e, i, a) => a[(i + n) % len])
227
- : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);
228
- }
229
- navigate(value) {
230
- let start;
231
- let end;
232
- if (this.view === 'day') {
233
- let fd;
234
- if (value instanceof AXDateTime) {
235
- fd = value.startOf('month');
236
- }
237
- else {
238
- fd = this.viewRange.startTime
239
- .add('day', 15)
240
- .add('month', value)
241
- .startOf('month');
242
- }
243
- start = fd.firstDayOfWeek;
244
- end = fd.endOf('month').endDayOfWeek;
245
- start = start.add('day', -this.numRotate);
246
- end = end.add('day', 7).add('day', -this.numRotate);
247
- // TODO: apply start of week
248
- if (!this.rotated && this.weekdays.length > 0) {
249
- if (this.type === 'jalali') {
250
- this.weekdays = this.rotate(this.weekdays, -this.numRotate);
251
- }
252
- else {
253
- this.weekdays = this.rotate(this.weekdays, this.numRotate);
254
- }
255
- this.rotated = true;
256
- }
257
- }
258
- else if (this.view === 'month') {
259
- let fd;
260
- if (value instanceof AXDateTime) {
261
- fd = value.startOf('year');
262
- }
263
- else {
264
- fd = this.viewRange.startTime
265
- .add('day', 15)
266
- .add('year', value)
267
- .startOf('year');
268
- }
269
- start = fd;
270
- end = fd.add('month', 11).endOf('month');
271
- }
272
- else if (this.view === 'year') {
273
- let fd;
274
- if (value instanceof AXDateTime) {
275
- fd = value.startOf('year');
276
- }
277
- else {
278
- fd = this.viewRange.startTime
279
- .add('day', 15)
280
- .add('year', value * 9)
281
- .startOf('year');
282
- }
283
- start = fd;
284
- end = start.add('year', 8).endOf('year');
285
- }
286
- this.viewRange = new AXDateTimeRange(start, end);
287
- //
288
- if (this.getHoliday && typeof this.getHoliday === 'function') {
289
- this.holidays = this.getHoliday(start.date, end.date, this.type);
290
- }
291
- if (this.getWeekend && typeof this.getWeekend === 'function') {
292
- this.weekends = this.getWeekend(start.date, end.date, this.type);
293
- }
294
- //
295
- if (this.view === 'day') {
296
- this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);
297
- if (this.matrix.length > 0 &&
298
- this.matrix[0].find((c) => c.nextMonth === false) === undefined) {
299
- this.matrix.splice(0, 1);
300
- }
301
- if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {
302
- this.matrix.splice(this.matrix.length - 1, 1);
303
- }
304
- }
305
- else if (this.view === 'month') {
306
- this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('month', this.type)), 3);
307
- }
308
- else if (this.view === 'year') {
309
- this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('year', this.type)), 3);
310
- }
311
- this.cdr.detectChanges();
312
- }
313
- applyStyle(dates) {
314
- const items = [];
315
- dates.forEach((d, i, j) => {
316
- const item = {};
317
- item.date = d;
318
- item.selected =
319
- d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;
320
- item.focused =
321
- d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;
322
- item.today =
323
- this.today &&
324
- d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;
325
- if (this.view === 'day') {
326
- // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;
327
- item.nextMonth =
328
- d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;
329
- item.unselect = this.isInMInMaxRange(d);
330
- this.holidays.forEach((h) => {
331
- const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);
332
- if (comp === 0) {
333
- item.holiday = true;
334
- if (this.selectableHoliday === false) {
335
- item.unselect = true;
336
- }
337
- }
338
- });
339
- const indexDay = i - Math.floor(i / 7) * 7;
340
- this.weekends.forEach((cc) => {
341
- if (Number(cc) === indexDay) {
342
- item.holiday = true;
343
- if (this.selectableHoliday === false) {
344
- item.unselect = true;
345
- }
346
- }
347
- });
348
- }
349
- items.push(item);
350
- });
351
- return items;
352
- }
353
- changeView() {
354
- if (this.view === 'day') {
355
- this.view = 'month';
356
- }
357
- else if (this.view === 'month') {
358
- this.view = 'year';
359
- }
360
- }
361
- matrixify(arr, cols) {
362
- const rows = Math.ceil(arr.length / cols);
363
- const matrix = [];
364
- if (rows * cols === arr.length) {
365
- for (let i = 0; i < arr.length; i += cols) {
366
- matrix.push(arr.slice(i, cols + i));
367
- }
368
- }
369
- return matrix;
370
- }
371
- setDayClick(event, item) {
372
- if (item.unselect !== true) {
373
- this.value = item.date.date;
374
- }
375
- event.stopPropagation();
376
- }
377
- isInMInMaxRange(d) {
378
- let r = false;
379
- if (d !== undefined) {
380
- if (this._min && !this._max) {
381
- r =
382
- d.compaireNew(new AXDateTime(this._min, this.type), this.getViewCompaire(this.view), this.type) === -1;
383
- }
384
- if (this._max && !this._min) {
385
- r =
386
- d.compaireNew(new AXDateTime(this._max, this.type), this.getViewCompaire(this.view), this.type) === 1;
387
- }
388
- if (this._min && this._max) {
389
- r =
390
- d.compaireNew(new AXDateTime(this._min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||
391
- d.compaireNew(new AXDateTime(this._max, this.type), this.getViewCompaire(this.view), this.type) === 1;
392
- }
393
- }
394
- return r;
395
- }
396
- setMonthClick(event, date) {
397
- if (this.depth === 'month') {
398
- this.value = date.date;
399
- }
400
- else {
401
- this.view = 'day';
402
- this.setFocus(new AXDateTime(this.value, this.type)
403
- .set('year', date.year)
404
- .set('month', date.monthOfYear));
405
- }
406
- event.stopPropagation();
407
- }
408
- setYearClick(event, date) {
409
- if (this.depth === 'year') {
410
- this.value = date.date;
411
- }
412
- else {
413
- this.view = 'month';
414
- this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year));
415
- }
416
- event.stopPropagation();
417
- }
418
- setFocus(date) {
419
- this.focusedValue = date;
420
- this.navigate(this.focusedValue);
421
- }
422
- setToday() {
423
- this.value = this.today.date;
424
- this.view = 'day';
425
- }
426
- trackByFn(index, item) {
427
- return item.date.date.getTime();
428
- }
429
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXCalendarBoxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
430
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: AXCalendarBoxComponent, selector: "ax-calendar-box", inputs: { size: "size", type: "type", locale: "locale", dir: "dir", min: "min", max: "max", selectableHoliday: "selectableHoliday", dayStyle: "dayStyle", dayMinMaxResoan: "dayMinMaxResoan", showTodayButton: "showTodayButton", view: "view", depth: "depth", value: "value" }, outputs: { onValueChanged: "onValueChanged", onClick: "onClick", valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"ax-calendar-container {{size}}\" [ngClass]=\"type\">\n <div class=\"ax-calendar-header\">\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"next()\">\n {{'common.next' | trans}}\n </ax-button>\n </div>\n <div class=\"ax-nav-button\" [ngSwitch]=\"view\">\n <ax-button type=\"light blank\" (click)=\"changeView()\">\n <ng-container *ngSwitchCase=\"'day'\">\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n {{viewRange.startTime | dt:\"YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\n </ng-container>\n </ax-button>\n </div>\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"prev()\">\n {{'common.prev' | trans}}\n </ax-button>\n </div>\n </div>\n <div class=\"ax-calendar-body\">\n <ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'day'\">\n <div class=\"ax-month-items\">\n <ng-container *ngFor='let w of weekdays'>\n <div class=\"ax-month-item\">{{w}}</div>\n </ng-container>\n </div>\n <div class=\"ax-day-items\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-day-item ax-state-event\" *ngFor=\"let d of r;trackBy:trackByFn\" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\n (click)=\"setDayClick($event,d)\">\n {{d.date.dayInMonth}}</div>\n </ng-container>\n\n </div>\n </ng-container>\n <div class=\"ax-month-container\" *ngSwitchCase=\"'month'\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\n <strong>\n {{d.date| dt:\"MMM\"}}\n </strong>\n </div>\n </ng-container>\n </div>\n <div class=\"ax-year-container\" *ngSwitchCase=\"'year'\">\n <ng-container class=\"calendar-row\" *ngFor=\"let r of matrix\">\n <div class=\"ax-year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\n <strong>{{d.date | dt:\"YYYY\"}}</strong>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n </div>\n <div class=\"ax-calendar-footer\">\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" type=\"dark\">\n {{getTodayName()}}\n </ax-button>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }, { kind: "pipe", type: i3.AXDateTimePipe, name: "dt" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
431
- }
432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXCalendarBoxComponent, decorators: [{
433
- type: Component,
434
- args: [{ selector: 'ax-calendar-box', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-calendar-container {{size}}\" [ngClass]=\"type\">\n <div class=\"ax-calendar-header\">\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"next()\">\n {{'common.next' | trans}}\n </ax-button>\n </div>\n <div class=\"ax-nav-button\" [ngSwitch]=\"view\">\n <ax-button type=\"light blank\" (click)=\"changeView()\">\n <ng-container *ngSwitchCase=\"'day'\">\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n {{viewRange.startTime | dt:\"YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\n </ng-container>\n </ax-button>\n </div>\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"prev()\">\n {{'common.prev' | trans}}\n </ax-button>\n </div>\n </div>\n <div class=\"ax-calendar-body\">\n <ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'day'\">\n <div class=\"ax-month-items\">\n <ng-container *ngFor='let w of weekdays'>\n <div class=\"ax-month-item\">{{w}}</div>\n </ng-container>\n </div>\n <div class=\"ax-day-items\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-day-item ax-state-event\" *ngFor=\"let d of r;trackBy:trackByFn\" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\n (click)=\"setDayClick($event,d)\">\n {{d.date.dayInMonth}}</div>\n </ng-container>\n\n </div>\n </ng-container>\n <div class=\"ax-month-container\" *ngSwitchCase=\"'month'\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\n <strong>\n {{d.date| dt:\"MMM\"}}\n </strong>\n </div>\n </ng-container>\n </div>\n <div class=\"ax-year-container\" *ngSwitchCase=\"'year'\">\n <ng-container class=\"calendar-row\" *ngFor=\"let r of matrix\">\n <div class=\"ax-year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\n <strong>{{d.date | dt:\"YYYY\"}}</strong>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n </div>\n <div class=\"ax-calendar-footer\">\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" type=\"dark\">\n {{getTodayName()}}\n </ax-button>\n </div>\n</div>" }]
435
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { size: [{
436
- type: Input
437
- }], type: [{
438
- type: Input
439
- }], locale: [{
440
- type: Input
441
- }], dir: [{
442
- type: Input
443
- }], min: [{
444
- type: Input
445
- }], max: [{
446
- type: Input
447
- }], selectableHoliday: [{
448
- type: Input
449
- }], dayStyle: [{
450
- type: Input
451
- }], dayMinMaxResoan: [{
452
- type: Input
453
- }], showTodayButton: [{
454
- type: Input,
455
- args: ['showTodayButton']
456
- }], view: [{
457
- type: Input
458
- }], depth: [{
459
- type: Input
460
- }], onValueChanged: [{
461
- type: Output
462
- }], onClick: [{
463
- type: Output
464
- }], valueChange: [{
465
- type: Output
466
- }], value: [{
467
- type: Input
468
- }] } });
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItYm94L2NhbGVuZGFyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUNSLFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7OztBQXNDdkIsTUFBTSxPQUFPLHNCQUFzQjtJQW1LYjtJQUFnQztJQWxLcEQsUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUVoQixDQUFDLEdBQUc7UUFDVixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLElBQUk7WUFDdEQsR0FBRyxFQUFFLEtBQUs7WUFDVixNQUFNLEVBQUUsQ0FBQztTQUNWO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsSUFBSSxJQUFJO1lBQ3pELEdBQUcsRUFBRSxLQUFLO1lBQ1YsTUFBTSxFQUFFLENBQUM7U0FDVjtLQUNGLENBQUM7SUFFRixTQUFTLENBQVM7SUFHbEIsSUFBSSxHQUFrQixJQUFJLENBQUM7SUFHM0IsSUFBSSxDQUFpQjtJQUdyQixNQUFNLENBQVM7SUFHZixHQUFHLENBQVM7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QUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztxQkFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ1gsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsRUFBRTtRQUNGLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELEVBQUU7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDM0QsQ0FBQyxDQUNGLENBQUM7WUFDRixJQUNFLElBQUksQ0FBQyxNQUFNLENBQUMs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eXBlLFxuICBBWENvbmZpZyxcbiAgQVhEYXRlVGltZSxcbiAgQVhEYXRlVGltZVJhbmdlLFxuICBBWFRyYW5zbGF0b3IsXG59IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWEJhc2VTaXphYmxlQ29tcG9uZW50LFxuICBBWEVsZW1lbnRTaXplLFxufSBmcm9tICcuLi8uLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyVmlld1R5cGUgPSAneWVhcicgfCAnbW9udGgnIHwgJ2RheSc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5cyA9IEFYQ2FsZW5kYXJIb2xpZGF5W107XG5leHBvcnQgdHlwZSBBWENhbGVuZGFySG9saWRheXNGdW5jID0gKFxuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICB0eXBlOiBBWENhbGVuZGFyVHlwZVxuKSA9PiBBWENhbGVuZGFySG9saWRheVtdO1xuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFySG9saWRheSB7XG4gIGRhdGU6IERhdGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyV2Vla2VuZHMgPSBBWENhbGVuZGFyV2Vla2VuZFtdO1xuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzRnVuYyA9IChcbiAgc3RhcnQ6IERhdGUsXG4gIGVuZDogRGF0ZSxcbiAgdHlwZTogQVhDYWxlbmRhclR5cGVcbikgPT4gQVhDYWxlbmRhcldlZWtlbmRbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyV2Vla2VuZCB7XG4gIGluZGV4RGF5OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xuICB3ZWVrZGF5czogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIGQgPSB7XG4gICAgamFsYWxpOiB7XG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuamFsYWxpLmxvY2FsZScpIHx8ICdmYScsXG4gICAgICBkaXI6ICdydGwnLFxuICAgICAgbnVtYmVyOiAxLFxuICAgIH0sXG4gICAgZ3JlZ29yaWFuOiB7XG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuZ3JlZ29yaWFuLmxvY2FsZScpIHx8ICdlbicsXG4gICAgICBkaXI6ICdsdHInLFxuICAgICAgbnVtYmVyOiAwLFxuICAgIH0sXG4gIH07XG5cbiAgbnVtUm90YXRlOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XG5cbiAgQElucHV0KClcbiAgdHlwZTogQVhDYWxlbmRhclR5cGU7XG5cbiAgQElucHV0KClcbiAgbG9jYWxlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlyOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbWluOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluKHYpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fbWluID0gdjtcbiAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuXG4gIHByaXZhdGUgX21heDogRGF0ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heCh2KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuX21heCA9IHY7XG4gICAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IHRoaXMudG9kYXk7XG4gICAgICB0aGlzLnZpZXdSYW5nZSA9IHRoaXMudG9kYXkubW9udGgucmFuZ2U7XG4gICAgICB0aGlzLm5hdmlnYXRlKDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4KCkge1xuICAgIHJldHVybiB0aGlzLl9tYXg7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZWxlY3RhYmxlSG9saWRheTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZGF5U3R5bGUgPSBbXTtcblxuICBASW5wdXQoKVxuICBkYXlNaW5NYXhSZXNvYW4gPSAnJztcblxuICBwcml2YXRlIGdldEhvbGlkYXk6IEFYQ2FsZW5kYXJIb2xpZGF5cyB8IEFYQ2FsZW5kYXJIb2xpZGF5c0Z1bmM7XG5cbiAgcHJpdmF0ZSBnZXRXZWVrZW5kOiBBWENhbGVuZGFyV2Vla2VuZHMgfCBBWENhbGVuZGFyV2Vla2VuZHNGdW5jO1xuXG4gIEBJbnB1dCgnc2hvd1RvZGF5QnV0dG9uJylcbiAgcHVibGljIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG1hdHJpeDogYW55W10gPSBbXTtcbiAgcm90YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92aWV3OiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2aWV3KCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XG4gIH1cbiAgcHVibGljIHNldCB2aWV3KHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX3ZpZXcgPSB2O1xuICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXB0aDogQVhDYWxlbmRhclZpZXdUeXBlID0gJ2RheSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkZXB0aCgpOiBBWENhbGVuZGFyVmlld1R5cGUge1xuICAgIHJldHVybiB0aGlzLl9kZXB0aDtcbiAgfVxuICBwdWJsaWMgc2V0IGRlcHRoKHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX2RlcHRoID0gdjtcbiAgICB0aGlzLnZpZXcgPSB2O1xuICB9XG5cbiAgdmlld1JhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XG4gIHByaXZhdGUgaG9saWRheXM6IEFYQ2FsZW5kYXJIb2xpZGF5W10gPSBbXTtcbiAgcHJpdmF0ZSB3ZWVrZW5kczogQVhDYWxlbmRhcldlZWtlbmRbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFYVmFsdWVFdmVudDxEYXRlPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8RGF0ZT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBBWFZhbHVlRXZlbnQ8RGF0ZT5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IERhdGUpIHtcbiAgICBsZXQgdnY6IEFYRGF0ZVRpbWU7XG4gICAgaWYgKHYpIHtcbiAgICAgIHZ2ID0gQVhEYXRlVGltZS5jb252ZXJ0KHYpO1xuICAgIH1cbiAgICBsZXQgdW5WYWxpZERhdGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5fbWF4IHx8IHRoaXMuX21pbikge1xuICAgICAgdW5WYWxpZERhdGUgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZSh2dik7XG4gICAgfVxuICAgIGlmICghdW5WYWxpZERhdGUpIHtcbiAgICAgIGlmICh2diAmJiAhdnYuZXF1YWwodGhpcy5fdmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdnY7XG4gICAgICAgIHRoaXMuX3ZhbHVlLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXModGhpcy5fdmFsdWUuY2xvbmUoKSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2di5kYXRlKTtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlPy5kYXRlLFxuICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xuICAgICAgICB0aGlzLm5hdmlnYXRlKDApO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb2N1c2VkVmFsdWU6IEFYRGF0ZVRpbWU7XG4gIGdldCB0b2RheSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAvLyBzZXQgZGVmYXVsdHNcbiAgICB0aGlzLmdldEhvbGlkYXkgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmhvbGlkYXlzJyk7XG4gICAgdGhpcy5nZXRXZWVrZW5kID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS53ZWVrZW5kcycpO1xuICB9XG4gIGZpbmREYXkoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGF5U3R5bGUuZmluZChcbiAgICAgICAgKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXRTdHlsZShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kYXlTdHlsZS5maW5kKFxuICAgICAgICAoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmRheVN0eWxlLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXVxuICAgICAgKS5zdHlsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIGdldFRpdGxlKGRhdGU6IEFYRGF0ZVRpbWUpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRheVN0eWxlLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXVxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF5U3R5bGUuZmluZChcbiAgICAgICAgKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgICApLnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuX21pbiAmJlxuICAgICAgICAgIHRoaXMuX21heCAmJlxuICAgICAgICAgIGRhdGUuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9taW4sIHRoaXMudHlwZSksXG4gICAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IC0xKSB8fFxuICAgICAgICBkYXRlLmNvbXBhaXJlTmV3KFxuICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMuX21heCwgdGhpcy50eXBlKSxcbiAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgKSA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheU1pbk1heFJlc29hbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgICAvL1xuICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zZXRGb2N1cyhuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGb2N1cyh0aGlzLnRvZGF5KTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIGdldFZpZXdDb21wYWlyZSh2aWV3OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcbiAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHJldHVybiAnWU1EJztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuICdZTSc7XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuICdZJztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdExheW91dCgpIHtcbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbic7XG4gICAgfVxuICAgIGlmICghdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5kW3RoaXMudHlwZV0/LmxvY2FsZSB8fCB0aGlzLmxvY2FsZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpcikge1xuICAgICAgdGhpcy5kaXIgPSB0aGlzLmRbdGhpcy50eXBlXT8uZGlyIHx8ICdsdHInO1xuICAgIH1cbiAgICB0aGlzLm51bVJvdGF0ZSA9IHRoaXMuZFt0aGlzLnR5cGVdPy5udW1iZXIgfHwgMDtcbiAgICBjb25zdCBwYXRoID0gJ2RhdGVUaW1lLndlZWtkYXlzU2hvcnQnO1xuICAgIHRoaXMud2Vla2RheXMgPSBbXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnN1bmAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ubW9uYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS50dWVgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LndlZGAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0udGh1YCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5mcmlgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnNhdGAsIHRoaXMubG9jYWxlKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0VG9kYXlOYW1lKCkge1xuICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZ2V0KCdkYXRlVGltZS50b2RheScsIHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgtMSk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMubmF2aWdhdGUoMSk7XG4gIH1cblxuICByb3RhdGUoYXJyYXksIG4pIHtcbiAgICBjb25zdCBsZW4gPSBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEobiAlIGxlbilcbiAgICAgID8gYXJyYXlcbiAgICAgIDogbiA+IDBcbiAgICAgID8gYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhpICsgbikgJSBsZW5dKVxuICAgICAgOiBhcnJheS5tYXAoKGUsIGksIGEpID0+IGFbKGxlbiAtICgobGVuIC0gaSAtIG4pICUgbGVuKSkgJSBsZW5dKTtcbiAgfVxuXG4gIG5hdmlnYXRlKHZhbHVlOiBudW1iZXIgfCBBWERhdGVUaW1lKSB7XG4gICAgbGV0IHN0YXJ0OiBBWERhdGVUaW1lO1xuICAgIGxldCBlbmQ6IEFYRGF0ZVRpbWU7XG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCdtb250aCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWVcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcbiAgICAgICAgICAuYWRkKCdtb250aCcsIHZhbHVlKVxuICAgICAgICAgIC5zdGFydE9mKCdtb250aCcpO1xuICAgICAgfVxuXG4gICAgICBzdGFydCA9IGZkLmZpcnN0RGF5T2ZXZWVrO1xuICAgICAgZW5kID0gZmQuZW5kT2YoJ21vbnRoJykuZW5kRGF5T2ZXZWVrO1xuXG4gICAgICBzdGFydCA9IHN0YXJ0LmFkZCgnZGF5JywgLXRoaXMubnVtUm90YXRlKTtcbiAgICAgIGVuZCA9IGVuZC5hZGQoJ2RheScsIDcpLmFkZCgnZGF5JywgLXRoaXMubnVtUm90YXRlKTtcblxuICAgICAgLy8gVE9ETzogYXBwbHkgc3RhcnQgb2Ygd2Vla1xuICAgICAgaWYgKCF0aGlzLnJvdGF0ZWQgJiYgdGhpcy53ZWVrZGF5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdqYWxhbGknKSB7XG4gICAgICAgICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMucm90YXRlKHRoaXMud2Vla2RheXMsIC10aGlzLm51bVJvdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMucm90YXRlKHRoaXMud2Vla2RheXMsIHRoaXMubnVtUm90YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm90YXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZVxuICAgICAgICAgIC5hZGQoJ2RheScsIDE1KVxuICAgICAgICAgIC5hZGQoJ3llYXInLCB2YWx1ZSlcbiAgICAgICAgICAuc3RhcnRPZigneWVhcicpO1xuICAgICAgfVxuXG4gICAgICBzdGFydCA9IGZkO1xuICAgICAgZW5kID0gZmQuYWRkKCdtb250aCcsIDExKS5lbmRPZignbW9udGgnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ3llYXInKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZigneWVhcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWVcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcbiAgICAgICAgICAuYWRkKCd5ZWFyJywgdmFsdWUgKiA5KVxuICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IGZkO1xuICAgICAgZW5kID0gc3RhcnQuYWRkKCd5ZWFyJywgOCkuZW5kT2YoJ3llYXInKTtcbiAgICB9XG4gICAgdGhpcy52aWV3UmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIC8vXG4gICAgaWYgKHRoaXMuZ2V0SG9saWRheSAmJiB0eXBlb2YgdGhpcy5nZXRIb2xpZGF5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmhvbGlkYXlzID0gdGhpcy5nZXRIb2xpZGF5KHN0YXJ0LmRhdGUsIGVuZC5kYXRlLCB0aGlzLnR5cGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldFdlZWtlbmQgJiYgdHlwZW9mIHRoaXMuZ2V0V2Vla2VuZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy53ZWVrZW5kcyA9IHRoaXMuZ2V0V2Vla2VuZChzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcbiAgICB9XG5cbiAgICAvL1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KFxuICAgICAgICB0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCdkYXknLCB0aGlzLnR5cGUpKSxcbiAgICAgICAgN1xuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tYXRyaXgubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLm1hdHJpeFswXS5maW5kKChjKSA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UoMCwgMSk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubWF0cml4W3RoaXMubWF0cml4Lmxlbmd0aCAtIDFdLmZpbmQoXG4gICAgICAgICAgKGMpID0+IGMubmV4dE1vbnRoID09PSBmYWxzZVxuICAgICAgICApID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UodGhpcy5tYXRyaXgubGVuZ3RoIC0gMSwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkoXG4gICAgICAgIHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ21vbnRoJywgdGhpcy50eXBlKSksXG4gICAgICAgIDNcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeShcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgneWVhcicsIHRoaXMudHlwZSkpLFxuICAgICAgICAzXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGUoZGF0ZXM6IEFYRGF0ZVRpbWVbXSk6IGFueVtdIHtcbiAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICBkYXRlcy5mb3JFYWNoKChkLCBpLCBqKSA9PiB7XG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcbiAgICAgIGl0ZW0uZGF0ZSA9IGQ7XG5cbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPVxuICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSksXG4gICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgKSA9PT0gMDtcbiAgICAgIGl0ZW0uZm9jdXNlZCA9XG4gICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgdGhpcy5mb2N1c2VkVmFsdWUsXG4gICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgKSA9PT0gMDtcbiAgICAgIGl0ZW0udG9kYXkgPVxuICAgICAgICB0aGlzLnRvZGF5ICYmXG4gICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgdGhpcy50b2RheSxcbiAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICApID09PSAwO1xuICAgICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgICAgLy8gIGl0ZW0ubmV4dE1vbnRoID0gZC5jb21wYWlyZU5ldyh0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxMCksICdZTScpICE9PSAwO1xuICAgICAgICBpdGVtLm5leHRNb250aCA9XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSxcbiAgICAgICAgICAgICdZTScsXG4gICAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgICApICE9PSAwO1xuXG4gICAgICAgIGl0ZW0udW5zZWxlY3QgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZShkKTtcbiAgICAgICAgdGhpcy5ob2xpZGF5cy5mb3JFYWNoKChoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcCA9IGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZShoLmRhdGUsIHRoaXMudHlwZSksXG4gICAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGNvbXAgPT09IDApIHtcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbmRleERheSA9IGkgLSBNYXRoLmZsb29yKGkgLyA3KSAqIDc7XG4gICAgICAgIHRoaXMud2Vla2VuZHMuZm9yRWFjaCgoY2MpID0+IHtcbiAgICAgICAgICBpZiAoTnVtYmVyKGNjKSA9PT0gaW5kZXhEYXkpIHtcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgY2hhbmdlVmlldygpIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy52aWV3ID0gJ3llYXInO1xuICAgIH1cbiAgfVxuXG4gIG1hdHJpeGlmeShhcnI6IGFueVtdLCBjb2xzKSB7XG4gICAgY29uc3Qgcm93cyA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gY29scyk7XG5cbiAgICBjb25zdCBtYXRyaXggPSBbXTtcbiAgICBpZiAocm93cyAqIGNvbHMgPT09IGFyci5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjb2xzKSB7XG4gICAgICAgIG1hdHJpeC5wdXNoKGFyci5zbGljZShpLCBjb2xzICsgaSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc2V0RGF5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAoaXRlbS51bnNlbGVjdCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0uZGF0ZS5kYXRlO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcbiAgICBsZXQgciA9IGZhbHNlO1xuICAgIGlmIChkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLl9taW4gJiYgIXRoaXMuX21heCkge1xuICAgICAgICByID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWluLCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IC0xO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX21heCAmJiAhdGhpcy5fbWluKSB7XG4gICAgICAgIHIgPVxuICAgICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9tYXgsIHRoaXMudHlwZSksXG4gICAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKSA9PT0gMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9taW4gJiYgdGhpcy5fbWF4KSB7XG4gICAgICAgIHIgPVxuICAgICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9taW4sIHRoaXMudHlwZSksXG4gICAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKSA9PT0gLTEgfHxcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWF4LCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgc2V0TW9udGhDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZGF0ZS5kYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuc2V0Rm9jdXMoXG4gICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSlcbiAgICAgICAgICAuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKVxuICAgICAgICAgIC5zZXQoJ21vbnRoJywgZGF0ZS5tb250aE9mWWVhcilcbiAgICAgICk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2V0WWVhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGVwdGggPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICAgIHRoaXMuc2V0Rm9jdXMoXG4gICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKVxuICAgICAgKTtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzZXRGb2N1cyhkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBkYXRlO1xuICAgIHRoaXMubmF2aWdhdGUodGhpcy5mb2N1c2VkVmFsdWUpO1xuICB9XG5cbiAgc2V0VG9kYXkoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudG9kYXkuZGF0ZTtcbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0uZGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWNvbnRhaW5lciB7e3NpemV9fVwiIFtuZ0NsYXNzXT1cInR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5uZXh0JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW5hdi1idXR0b25cIiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwibGlnaHQgYmxhbmtcIiAoY2xpY2spPVwiY2hhbmdlVmlldygpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RheSdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywxMCkgfCBkdDpcIk1NTSBZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fSAtIHt7dmlld1JhbmdlLmVuZFRpbWUgfCBkdDpcIllZWVlcIn19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cInByZXYoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5wcmV2JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF5J1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tb250aC1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHcgb2Ygd2Vla2RheXMnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWl0ZW1cIj57e3d9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW0gYXgtc3RhdGUtZXZlbnRcIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW3RpdGxlXT1cImdldFRpdGxlKGQuZGF0ZSlcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheSwnbmV4dC1tb250aCc6ZC5uZXh0TW9udGggLCAnaG9saWRheSc6ZC5ob2xpZGF5ICwgJ3Vuc2VsZWN0JzpkLnVuc2VsZWN0fVwiIFtuZ1N0eWxlXT1cIihmaW5kRGF5KGQuZGF0ZSkpID8gZ2V0U3R5bGUoZC5kYXRlKTonJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERheUNsaWNrKCRldmVudCxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZC5kYXRlLmRheUluTW9udGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtY29udGFpbmVyXCIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtaXRlbVwiICpuZ0Zvcj1cImxldCBkIG9mIHI7dHJhY2tCeTp0cmFja0J5Rm5cIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheX1cIiAoY2xpY2spPVwic2V0TW9udGhDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2QuZGF0ZXwgZHQ6XCJNTU1cIn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCIneWVhcidcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiY2FsZW5kYXItcm93XCIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXl9XCIgKGNsaWNrKT1cInNldFllYXJDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57e2QuZGF0ZSB8IGR0OlwiWVlZWVwifX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInNldFRvZGF5KClcIiAqbmdJZj1cInNob3dUb2RheUJ1dHRvblwiIHR5cGU9XCJkYXJrXCI+XG4gICAgICAgICAgICB7e2dldFRvZGF5TmFtZSgpfX1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -1,22 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { AXCalendarBoxComponent } from './calendar-box.component';
4
- import { AXCoreModule, AXTranslatorModule } from '@acorex/core';
5
- import { AXPopoverModule } from '../../popover/popover.module';
6
- import { AXButtonModule } from '../../button/button.module';
7
- import * as i0 from "@angular/core";
8
- export class AXCalendarBoxModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXCalendarBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.7", ngImport: i0, type: AXCalendarBoxModule, declarations: [AXCalendarBoxComponent], imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule, AXTranslatorModule], exports: [AXCalendarBoxComponent] });
11
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXCalendarBoxModule, imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule, AXTranslatorModule] });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXCalendarBoxModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [AXCalendarBoxComponent],
17
- imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule, AXTranslatorModule],
18
- exports: [AXCalendarBoxComponent],
19
- providers: []
20
- }]
21
- }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFTNUQsTUFBTSxPQUFPLG1CQUFtQjt1R0FBbkIsbUJBQW1CO3dHQUFuQixtQkFBbUIsaUJBTGYsc0JBQXNCLGFBQzNCLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBQyxrQkFBa0IsYUFDOUUsc0JBQXNCO3dHQUdyQixtQkFBbUIsWUFKcEIsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFDLGtCQUFrQjs7MkZBSTdFLG1CQUFtQjtrQkFOL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFDLGtCQUFrQixDQUFDO29CQUN6RixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJCb3hDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb3JlTW9kdWxlLCBBWFRyYW5zbGF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9wb3BvdmVyLm1vZHVsZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBWENhbGVuZGFyQm94Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhCdXR0b25Nb2R1bGUsIEFYUG9wb3Zlck1vZHVsZSwgQVhDb3JlTW9kdWxlLEFYVHJhbnNsYXRvck1vZHVsZV0sXG4gIGV4cG9ydHM6IFtBWENhbGVuZGFyQm94Q29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQm94TW9kdWxlIHtcbn1cbiJdfQ==