@ardium-ui/ui 3.4.4 → 3.5.0

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 (55) hide show
  1. package/esm2022/lib/_internal/disablable-component.mjs +1 -1
  2. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +2 -2
  3. package/esm2022/lib/calendar/calendar.component.mjs +437 -0
  4. package/esm2022/lib/calendar/calendar.defaults.mjs +26 -0
  5. package/esm2022/lib/calendar/calendar.internal-types.mjs +2 -0
  6. package/esm2022/lib/calendar/calendar.module.mjs +24 -0
  7. package/esm2022/lib/calendar/calendar.types.mjs +6 -0
  8. package/esm2022/lib/calendar/index.mjs +5 -0
  9. package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +282 -0
  10. package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +65 -0
  11. package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +245 -0
  12. package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +22 -0
  13. package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +244 -0
  14. package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +14 -0
  15. package/esm2022/lib/inputs/date-input/date-input.component.mjs +357 -0
  16. package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +38 -0
  17. package/esm2022/lib/inputs/date-input/date-input.directive.mjs +59 -0
  18. package/esm2022/lib/inputs/date-input/date-input.module.mjs +50 -0
  19. package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +49 -0
  20. package/esm2022/lib/inputs/date-input/date-input.types.mjs +5 -0
  21. package/esm2022/lib/inputs/date-input/index.mjs +6 -0
  22. package/esm2022/public-api.mjs +3 -2
  23. package/fesm2022/ardium-ui-ui.mjs +1878 -52
  24. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  25. package/lib/_internal/disablable-component.d.ts +1 -1
  26. package/lib/calendar/calendar.component.d.ts +94 -0
  27. package/lib/calendar/calendar.defaults.d.ts +18 -0
  28. package/lib/calendar/calendar.internal-types.d.ts +4 -0
  29. package/lib/calendar/calendar.module.d.ts +14 -0
  30. package/lib/calendar/calendar.types.d.ts +83 -0
  31. package/lib/calendar/index.d.ts +4 -0
  32. package/lib/calendar/views/days-view/days-view.component.d.ts +68 -0
  33. package/lib/calendar/views/days-view/days-view.helpers.d.ts +20 -0
  34. package/lib/calendar/views/months-view/months-view.component.d.ts +61 -0
  35. package/lib/calendar/views/months-view/months-view.helpers.d.ts +3 -0
  36. package/lib/calendar/views/years-view/years-view.component.d.ts +59 -0
  37. package/lib/calendar/views/years-view/years-view.helpers.d.ts +3 -0
  38. package/lib/inputs/date-input/date-input.component.d.ts +95 -0
  39. package/lib/inputs/date-input/date-input.defaults.d.ts +30 -0
  40. package/lib/inputs/date-input/date-input.directive.d.ts +33 -0
  41. package/lib/inputs/date-input/date-input.module.d.ts +14 -0
  42. package/lib/inputs/date-input/date-input.serializers.d.ts +3 -0
  43. package/lib/inputs/date-input/date-input.types.d.ts +16 -0
  44. package/lib/inputs/date-input/index.d.ts +5 -0
  45. package/package.json +1 -1
  46. package/prebuilt-themes/default/calendar-OLD.css +294 -0
  47. package/prebuilt-themes/default/calendar-OLD.css.map +1 -0
  48. package/prebuilt-themes/default/calendar.css +100 -80
  49. package/prebuilt-themes/default/calendar.css.map +1 -1
  50. package/prebuilt-themes/default/inputs/date-input.css +68 -0
  51. package/prebuilt-themes/default/inputs/date-input.css.map +1 -0
  52. package/public-api.d.ts +2 -0
  53. package/themes/default/calendar-OLD.scss +183 -0
  54. package/themes/default/calendar.scss +120 -98
  55. package/themes/default/inputs/date-input.scss +32 -0
@@ -0,0 +1,357 @@
1
+ import { Overlay, OverlayConfig, ScrollStrategyOptions } from '@angular/cdk/overlay';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
3
+ import { ChangeDetectionStrategy, Component, ElementRef, Inject, ViewContainerRef, ViewEncapsulation, computed, contentChild, forwardRef, inject, input, model, output, signal, viewChild, } from '@angular/core';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { coerceBooleanProperty, coerceDateProperty, coerceNumberProperty } from '@ardium-ui/devkit';
6
+ import { isDefined, isNull } from 'simple-bool';
7
+ import { _FormFieldComponentBase } from '../../_internal/form-field-component';
8
+ import { ArdiumDropdownPanelComponent, DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';
9
+ import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
10
+ import { ARD_DATE_INPUT_DEFAULTS } from './date-input.defaults';
11
+ import { ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, } from './date-input.directive';
12
+ import { ArdDateInputMinMaxStrategy, } from './date-input.types';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/common";
15
+ import * as i2 from "../../form-field-frame/form-field-frame.component";
16
+ import * as i3 from "../../dropdown-panel/dropdown-panel.component";
17
+ import * as i4 from "@ardium-ui/devkit";
18
+ import * as i5 from "../../calendar/calendar.component";
19
+ import * as i6 from "../../buttons/icon-button/icon-button.component";
20
+ import * as i7 from "../../icon/icon.component";
21
+ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
22
+ constructor(defaults) {
23
+ super(defaults);
24
+ this.elementRef = inject((ElementRef));
25
+ this.overlay = inject(Overlay);
26
+ this.viewContainerRef = inject(ViewContainerRef);
27
+ this.scrollStrategyOpts = inject(ScrollStrategyOptions);
28
+ this.inputAttrs = input(this._DEFAULTS.inputAttrs);
29
+ this.placeholder = input(this._DEFAULTS.placeholder);
30
+ this.inputReadOnly = input(false, { transform: v => coerceBooleanProperty(v) });
31
+ this.calendarDisabled = input(false, { transform: v => coerceBooleanProperty(v) });
32
+ this.calendarHidden = input(false, { transform: v => coerceBooleanProperty(v) });
33
+ //! serialization/deserialization
34
+ this.serializeFn = input(this._DEFAULTS.serializeFn);
35
+ this.deserializeFn = input(this._DEFAULTS.deserializeFn);
36
+ //! control value accessor
37
+ this.value = model(null);
38
+ this.dateInputValue = model('');
39
+ //! output events
40
+ this.isOpen = model(false);
41
+ this.openEvent = output({ alias: 'open' });
42
+ this.closeEvent = output({ alias: 'close' });
43
+ //! date input event handlers
44
+ this.dateInput = viewChild.required('dateInput');
45
+ this.minMaxStrategy = input(this._DEFAULTS.minMaxStrategy);
46
+ this._isDateInputFocused = signal(false);
47
+ //! computed properties
48
+ this.shouldDisplayPlaceholder = computed(() => {
49
+ if (this._isDateInputFocused() && this.dateInputValue())
50
+ return false;
51
+ return isNull(this.value());
52
+ });
53
+ this.shouldDisplayValue = computed(() => {
54
+ if (this._isDateInputFocused() && this.dateInputValue())
55
+ return false;
56
+ return this.value() instanceof Date;
57
+ });
58
+ this.shouldDisplayDateInput = computed(() => {
59
+ return !this.inputReadOnly() && !this.shouldDisplayValue() && this._isDateInputFocused();
60
+ });
61
+ //! appearance
62
+ this.appearance = input(this._DEFAULTS.appearance);
63
+ this.variant = input(this._DEFAULTS.variant);
64
+ this.color = input(this._DEFAULTS.color);
65
+ this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
66
+ this.ngClasses = computed(() => [
67
+ //appearance and variant handled in ard-form-field-frame component
68
+ //color handled in ard-calendar component
69
+ this.compact() ? 'ard-compact' : '',
70
+ this.isOpen() ? 'ard-dropdown-open' : '',
71
+ this._isDateInputFocused() ? 'ard-date-input__date-input-focused' : '',
72
+ ].join(' '));
73
+ this.dropdownAppearance = input(this._DEFAULTS.dropdownAppearance);
74
+ this.dropdownAppearanceOrDefault = computed(() => {
75
+ if (this.dropdownAppearance())
76
+ return this.dropdownAppearance();
77
+ if (this.appearance() === FormElementAppearance.Outlined)
78
+ return DropdownPanelAppearance.Outlined;
79
+ return DropdownPanelAppearance.Raised;
80
+ });
81
+ this.dropdownVariant = input(this._DEFAULTS.dropdownVariant);
82
+ this.dropdownVariantOrDefault = computed(() => {
83
+ if (this.dropdownVariant())
84
+ return this.dropdownVariant();
85
+ const variant = this.variant();
86
+ if (variant === FormElementVariant.Pill)
87
+ return DropdownPanelVariant.Rounded;
88
+ return variant;
89
+ });
90
+ //! calendar attributes
91
+ this.activeView = model(this._DEFAULTS.activeView);
92
+ this.activeYear = model(this._DEFAULTS.activeYear);
93
+ this.activeMonth = model(this._DEFAULTS.activeMonth);
94
+ this.firstWeekday = input(this._DEFAULTS.firstWeekday, {
95
+ transform: v => {
96
+ const value = coerceNumberProperty(v, this._DEFAULTS.firstWeekday);
97
+ if (!Number.isInteger(value)) {
98
+ console.error(new Error(`ARD-NF0081A: [firstWeekday] must be a positive integer, got "${value}". Using default value instead.`));
99
+ return 1;
100
+ }
101
+ if (value < 0 || value > 6) {
102
+ console.error(new Error(`ARD-NF0081B: [firstWeekday] must be between 0 and 6, got "${value}". Using modulo operator to adjust the value.`));
103
+ }
104
+ return value % 7;
105
+ },
106
+ });
107
+ this.multipleYearPageChangeModifier = input(this._DEFAULTS.multipleYearPageChangeModifier, {
108
+ transform: v => {
109
+ const value = coerceNumberProperty(v, this._DEFAULTS.multipleYearPageChangeModifier);
110
+ if (!Number.isInteger(value) || value < 1) {
111
+ console.error(new Error(`ARD-NF0082: [multipleYearPageChangeModifier] must be a positive integer, got "${value}". Using default value instead.`));
112
+ return 5;
113
+ }
114
+ return value;
115
+ },
116
+ });
117
+ this.min = input(this._DEFAULTS.min, { transform: v => coerceDateProperty(v, this._DEFAULTS.min) });
118
+ this.max = input(this._DEFAULTS.max, { transform: v => coerceDateProperty(v, this._DEFAULTS.max) });
119
+ this.filter = input(this._DEFAULTS.filter);
120
+ //! calendar outputs
121
+ this.yearSelect = output();
122
+ this.monthSelect = output();
123
+ //! calendar controls
124
+ this.useAcceptButtonToSelect = input(false, { transform: v => coerceBooleanProperty(v) });
125
+ this._valueToAccept = null;
126
+ //! dropdown overlay
127
+ this.dropdownHost = viewChild.required('dropdownHost');
128
+ this.dropdownTemplate = viewChild.required('dropdownTemplate');
129
+ this.dropdownPanel = viewChild.required(ArdiumDropdownPanelComponent);
130
+ //! templates
131
+ this.valueTemplate = contentChild(ArdDateInputValueTemplateDirective);
132
+ this.calendarIconTemplate = contentChild(ArdDateInputCalendarIconTemplateDirective);
133
+ this.acceptButtonsTemplate = contentChild(ArdDateInputAcceptButtonsTemplateDirective);
134
+ this.prefixTemplate = contentChild(ArdDateInputPrefixTemplateDirective);
135
+ this.suffixTemplate = contentChild(ArdDateInputSuffixTemplateDirective);
136
+ //! context providers
137
+ this.valueContext = computed(() => ({
138
+ $implicit: this.value(),
139
+ }));
140
+ this.acceptButtonsContext = computed(() => ({
141
+ $implicit: () => this.onAcceptButtonClick(),
142
+ accept: () => this.onAcceptButtonClick(),
143
+ cancel: () => this.onCancelButtonClick(),
144
+ disabled: this.disabled() || this.calendarDisabled(),
145
+ }));
146
+ }
147
+ writeValue(v) {
148
+ if (v instanceof Date) {
149
+ this.value.set(v);
150
+ }
151
+ else if (!isDefined(v)) {
152
+ this.value.set(null);
153
+ }
154
+ else {
155
+ console.error(new Error(`ARD-NF0083: <ard-date-input> writeValue expected a Date or null, got "${v}".`));
156
+ }
157
+ }
158
+ //! change & touch event emitters
159
+ _emitChange() {
160
+ this._onChangeRegistered?.(this.value());
161
+ }
162
+ _onTouched() {
163
+ this._onTouchedRegistered?.();
164
+ }
165
+ onDateInputInput(event) {
166
+ const v = event.target.value;
167
+ this.dateInputValue.set(v);
168
+ }
169
+ onDateInputFocus(event) {
170
+ this.onFocus(event);
171
+ this._isDateInputFocused.set(true);
172
+ }
173
+ onDateInputBlur(event) {
174
+ this.onBlur(event);
175
+ this._processDateInputText(this.dateInputValue());
176
+ if (!this._isDateInputFocused())
177
+ return;
178
+ this._onTouched();
179
+ this._isDateInputFocused.set(false);
180
+ }
181
+ onDateInputEnter(event) {
182
+ if (event.key !== 'Enter')
183
+ return;
184
+ event.preventDefault();
185
+ this.close();
186
+ this.blur();
187
+ this.focus();
188
+ }
189
+ _processDateInputText(value) {
190
+ let date = this.deserializeFn()(value, this.value());
191
+ if (this.minMaxStrategy() === ArdDateInputMinMaxStrategy.Adjust && date) {
192
+ const min = this.min();
193
+ const max = this.max();
194
+ if (min && date < min) {
195
+ date = new Date(min);
196
+ }
197
+ else if (max && date > max) {
198
+ date = new Date(max);
199
+ }
200
+ }
201
+ this.value.set(date);
202
+ this.dateInputValue.set(this.serializeFn()(date));
203
+ }
204
+ _setDateInputAttributes() {
205
+ const input = this.dateInput().nativeElement;
206
+ const attributes = {
207
+ type: 'text',
208
+ autocorrect: 'off',
209
+ autocapitalize: 'off',
210
+ autocomplete: 'off',
211
+ ...this.inputAttrs(),
212
+ };
213
+ for (const key of Object.keys(attributes)) {
214
+ input.setAttribute(key, attributes[key]);
215
+ }
216
+ }
217
+ onCalendarSelectedChange(event) {
218
+ if (this.useAcceptButtonToSelect()) {
219
+ this._valueToAccept = event;
220
+ return;
221
+ }
222
+ this._acceptSelectedDate(event);
223
+ }
224
+ _acceptSelectedDate(date) {
225
+ this.value.set(date);
226
+ this.dateInputValue.set(this.serializeFn()(date));
227
+ this.close();
228
+ }
229
+ _cancelCalendarSelection() {
230
+ this.close();
231
+ }
232
+ onAcceptButtonClick() {
233
+ this._acceptSelectedDate(this._valueToAccept);
234
+ this._valueToAccept = null;
235
+ }
236
+ onCancelButtonClick() {
237
+ this._cancelCalendarSelection();
238
+ }
239
+ _createOverlay() {
240
+ const strategy = this.overlay
241
+ .position()
242
+ .flexibleConnectedTo(this.dropdownHost())
243
+ .withPositions([
244
+ {
245
+ originX: 'end',
246
+ originY: 'top',
247
+ overlayX: 'end',
248
+ overlayY: 'bottom',
249
+ },
250
+ {
251
+ originX: 'end',
252
+ originY: 'bottom',
253
+ overlayX: 'end',
254
+ overlayY: 'top',
255
+ },
256
+ ]);
257
+ const config = new OverlayConfig({
258
+ positionStrategy: strategy,
259
+ scrollStrategy: this.scrollStrategyOpts.block(),
260
+ hasBackdrop: false,
261
+ });
262
+ this.dropdownOverlay = this.overlay.create(config);
263
+ const portal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);
264
+ this.dropdownOverlay.attach(portal);
265
+ }
266
+ _destroyOverlay() {
267
+ if (!this.dropdownOverlay)
268
+ return;
269
+ this.dropdownOverlay.dispose();
270
+ delete this.dropdownOverlay;
271
+ }
272
+ //! hooks
273
+ ngAfterViewInit() {
274
+ this._setDateInputAttributes();
275
+ }
276
+ //! dropdown state handlers
277
+ onGeneralClick(event) {
278
+ const target = event.target;
279
+ if (target.tagName !== 'INPUT') {
280
+ event.preventDefault();
281
+ }
282
+ if (this.isOpen()) {
283
+ this.close();
284
+ }
285
+ this.dateInput().nativeElement.focus();
286
+ }
287
+ onOutsideClick(event) {
288
+ if (!this.isOpen())
289
+ return;
290
+ const target = event.target;
291
+ if (this.elementRef.nativeElement.contains(target))
292
+ return;
293
+ this.close();
294
+ }
295
+ onCalendarButtonClick(event) {
296
+ if (this.calendarDisabled())
297
+ return;
298
+ if (this.calendarHidden())
299
+ return;
300
+ event.preventDefault();
301
+ event.stopPropagation();
302
+ this.toggle();
303
+ }
304
+ toggle() {
305
+ if (this.isOpen()) {
306
+ this.close();
307
+ return;
308
+ }
309
+ this.open();
310
+ }
311
+ open() {
312
+ if (this.disabled() || this.isOpen())
313
+ return;
314
+ this.isOpen.set(true);
315
+ this._createOverlay();
316
+ this.focus();
317
+ this.openEvent.emit();
318
+ }
319
+ close() {
320
+ if (!this.isOpen())
321
+ return;
322
+ this.isOpen.set(false);
323
+ this._destroyOverlay();
324
+ this._onTouched();
325
+ this.closeEvent.emit();
326
+ }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputComponent, deps: [{ token: ARD_DATE_INPUT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumDateInputComponent, selector: "ard-date-input", inputs: { inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputReadOnly: { classPropertyName: "inputReadOnly", publicName: "inputReadOnly", isSignal: true, isRequired: false, transformFunction: null }, calendarDisabled: { classPropertyName: "calendarDisabled", publicName: "calendarDisabled", isSignal: true, isRequired: false, transformFunction: null }, calendarHidden: { classPropertyName: "calendarHidden", publicName: "calendarHidden", isSignal: true, isRequired: false, transformFunction: null }, serializeFn: { classPropertyName: "serializeFn", publicName: "serializeFn", isSignal: true, isRequired: false, transformFunction: null }, deserializeFn: { classPropertyName: "deserializeFn", publicName: "deserializeFn", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, dateInputValue: { classPropertyName: "dateInputValue", publicName: "dateInputValue", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, minMaxStrategy: { classPropertyName: "minMaxStrategy", publicName: "minMaxStrategy", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, dropdownAppearance: { classPropertyName: "dropdownAppearance", publicName: "dropdownAppearance", isSignal: true, isRequired: false, transformFunction: null }, dropdownVariant: { classPropertyName: "dropdownVariant", publicName: "dropdownVariant", isSignal: true, isRequired: false, transformFunction: null }, activeView: { classPropertyName: "activeView", publicName: "activeView", isSignal: true, isRequired: false, transformFunction: null }, activeYear: { classPropertyName: "activeYear", publicName: "activeYear", isSignal: true, isRequired: false, transformFunction: null }, activeMonth: { classPropertyName: "activeMonth", publicName: "activeMonth", isSignal: true, isRequired: false, transformFunction: null }, firstWeekday: { classPropertyName: "firstWeekday", publicName: "firstWeekday", isSignal: true, isRequired: false, transformFunction: null }, multipleYearPageChangeModifier: { classPropertyName: "multipleYearPageChangeModifier", publicName: "multipleYearPageChangeModifier", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, useAcceptButtonToSelect: { classPropertyName: "useAcceptButtonToSelect", publicName: "useAcceptButtonToSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", dateInputValue: "dateInputValueChange", isOpen: "isOpenChange", openEvent: "open", closeEvent: "close", activeView: "activeViewChange", activeYear: "activeYearChange", activeMonth: "activeMonthChange", yearSelect: "yearSelect", monthSelect: "monthSelect" }, providers: [
329
+ {
330
+ provide: NG_VALUE_ACCESSOR,
331
+ useExisting: forwardRef(() => ArdiumDateInputComponent),
332
+ multi: true,
333
+ },
334
+ {
335
+ provide: _FormFieldComponentBase,
336
+ useExisting: ArdiumDateInputComponent,
337
+ },
338
+ ], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n />\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i4.ClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: i5.ArdiumCalendarComponent, selector: "ard-calendar", inputs: ["color", "activeView", "activeYear", "activeMonth", "firstWeekday", "multipleYearPageChangeModifier", "autoFocus", "selected", "min", "max", "filter"], outputs: ["activeViewChange", "activeYearChange", "activeMonthChange", "selectedChange", "yearSelect", "monthSelect"] }, { kind: "component", type: i6.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact"] }, { kind: "component", type: i7.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
339
+ }
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputComponent, decorators: [{
341
+ type: Component,
342
+ args: [{ selector: 'ard-date-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
343
+ {
344
+ provide: NG_VALUE_ACCESSOR,
345
+ useExisting: forwardRef(() => ArdiumDateInputComponent),
346
+ multi: true,
347
+ },
348
+ {
349
+ provide: _FormFieldComponentBase,
350
+ useExisting: ArdiumDateInputComponent,
351
+ },
352
+ ], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n />\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"] }]
353
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
354
+ type: Inject,
355
+ args: [ARD_DATE_INPUT_DEFAULTS]
356
+ }] }] });
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBR04sZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFL0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFF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QztRQUV2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0F0VlUsd0JBQXdCLGtCQUVmLHVCQUF1QjttR0FGaEMsd0JBQXdCLDYzSEFaeEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN2RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsV0FBVyxFQUFFLHdCQUF3QjthQUN0QztTQUNGLHFFQTJWcUMsa0NBQWtDLHVHQUMzQix5Q0FBeUMsd0dBQ3hDLDBDQUEwQyxpR0FFakQsbUNBQW1DLGlHQUNuQyxtQ0FBbUMsOGJBNUdBLDRCQUE0Qix1RkNuVHhHLDJ3SUFnSUE7OzRGRC9EYSx3QkFBd0I7a0JBbEJwQyxTQUFTOytCQUNFLGdCQUFnQixpQkFHWCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxXQUFXLDBCQUEwQjt5QkFDdEM7cUJBQ0Y7OzBCQUlZLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiwgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBtb2RlbCxcclxuICBvdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIHZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZURhdGVQcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCwgaXNOdWxsIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFyZENhbGVuZGFyRmlsdGVyRm4sIEFyZENhbGVuZGFyVmlldyB9IGZyb20gJy4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyLnR5cGVzJztcclxuaW1wb3J0IHsgQXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudCwgRHJvcGRvd25QYW5lbEFwcGVhcmFuY2UsIERyb3Bkb3duUGFuZWxWYXJpYW50IH0gZnJvbSAnLi4vLi4vZHJvcGRvd24tcGFuZWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb2xvciB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IEFSRF9EQVRFX0lOUFVUX0RFRkFVTFRTLCBBcmREYXRlSW5wdXREZWZhdWx0cyB9IGZyb20gJy4vZGF0ZS1pbnB1dC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7XHJcbiAgQXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dENhbGVuZGFySWNvblRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFZhbHVlVGVtcGxhdGVEaXJlY3RpdmUsXHJcbn0gZnJvbSAnLi9kYXRlLWlucHV0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgQXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc0NvbnRleHQsXHJcbiAgQXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbixcclxuICBBcmREYXRlSW5wdXRNaW5NYXhTdHJhdGVneSxcclxuICBBcmREYXRlSW5wdXRTZXJpYWxpemVGbixcclxuICBBcmREYXRlSW5wdXRWYWx1ZUNvbnRleHQsXHJcbn0gZnJvbSAnLi9kYXRlLWlucHV0LnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWRhdGUtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bURhdGVJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBBcmRpdW1EYXRlSW5wdXRDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1EYXRlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBBcmREYXRlSW5wdXREZWZhdWx0cztcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFSRF9EQVRFX0lOUFVUX0RFRkFVTFRTKSBkZWZhdWx0czogQXJkRGF0ZUlucHV0RGVmYXVsdHMpIHtcclxuICAgIHN1cGVyKGRlZmF1bHRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFN0cmF0ZWd5T3B0cyA9IGluamVjdChTY3JvbGxTdHJhdGVneU9wdGlvbnMpO1xyXG5cclxuICByZWFkb25seSBpbnB1dEF0dHJzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4odGhpcy5fREVGQVVMVFMuaW5wdXRBdHRycyk7XHJcblxyXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5wbGFjZWhvbGRlcik7XHJcblxyXG4gIHJlYWRvbmx5IGlucHV0UmVhZE9ubHkgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBjYWxlbmRhckhpZGRlbiA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgLy8hIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uXHJcbiAgcmVhZG9ubHkgc2VyaWFsaXplRm4gPSBpbnB1dDxBcmREYXRlSW5wdXRTZXJpYWxpemVGbj4odGhpcy5fREVGQVVMVFMuc2VyaWFsaXplRm4pO1xyXG4gIHJlYWRvbmx5IGRlc2VyaWFsaXplRm4gPSBpbnB1dDxBcmREYXRlSW5wdXREZXNlcmlhbGl6ZUZuPih0aGlzLl9ERUZBVUxUUy5kZXNlcmlhbGl6ZUZuKTtcclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3JcclxuICByZWFkb25seSB2YWx1ZSA9IG1vZGVsPERhdGUgfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSBkYXRlSW5wdXRWYWx1ZSA9IG1vZGVsPHN0cmluZz4oJycpO1xyXG5cclxuICB3cml0ZVZhbHVlKHY6IERhdGUgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodiBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQodik7XHJcbiAgICB9IGVsc2UgaWYgKCFpc0RlZmluZWQodikpIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKG5ldyBFcnJvcihgQVJELU5GMDA4MzogPGFyZC1kYXRlLWlucHV0PiB3cml0ZVZhbHVlIGV4cGVjdGVkIGEgRGF0ZSBvciBudWxsLCBnb3QgXCIke3Z9XCIuYCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8hIGNoYW5nZSAmIHRvdWNoIGV2ZW50IGVtaXR0ZXJzXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odGhpcy52YWx1ZSgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZD8uKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgb3V0cHV0IGV2ZW50c1xyXG4gIHJlYWRvbmx5IGlzT3BlbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcmVhZG9ubHkgb3BlbkV2ZW50ID0gb3V0cHV0PHZvaWQ+KHsgYWxpYXM6ICdvcGVuJyB9KTtcclxuICByZWFkb25seSBjbG9zZUV2ZW50ID0gb3V0cHV0PHZvaWQ+KHsgYWxpYXM6ICdjbG9zZScgfSk7XHJcblxyXG4gIC8vISBkYXRlIGlucHV0IGV2ZW50IGhhbmRsZXJzXHJcbiAgcmVhZG9ubHkgZGF0ZUlucHV0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdkYXRlSW5wdXQnKTtcclxuXHJcbiAgcmVhZG9ubHkgbWluTWF4U3RyYXRlZ3kgPSBpbnB1dDxBcmREYXRlSW5wdXRNaW5NYXhTdHJhdGVneT4odGhpcy5fREVGQVVMVFMubWluTWF4U3RyYXRlZ3kpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RhdGVJbnB1dEZvY3VzZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBvbkRhdGVJbnB1dElucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLmRhdGVJbnB1dFZhbHVlLnNldCh2KTtcclxuICB9XHJcbiAgb25EYXRlSW5wdXRGb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcclxuICAgIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZC5zZXQodHJ1ZSk7XHJcbiAgfVxyXG4gIG9uRGF0ZUlucHV0Qmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xyXG5cclxuICAgIHRoaXMuX3Byb2Nlc3NEYXRlSW5wdXRUZXh0KHRoaXMuZGF0ZUlucHV0VmFsdWUoKSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xyXG5cclxuICAgIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZC5zZXQoZmFsc2UpO1xyXG4gIH1cclxuICBvbkRhdGVJbnB1dEVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInKSByZXR1cm47XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgdGhpcy5ibHVyKCk7XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Byb2Nlc3NEYXRlSW5wdXRUZXh0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBkYXRlID0gdGhpcy5kZXNlcmlhbGl6ZUZuKCkodmFsdWUsIHRoaXMudmFsdWUoKSk7XHJcblxyXG4gICAgaWYgKHRoaXMubWluTWF4U3RyYXRlZ3koKSA9PT0gQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3kuQWRqdXN0ICYmIGRhdGUpIHtcclxuICAgICAgY29uc3QgbWluID0gdGhpcy5taW4oKTtcclxuICAgICAgY29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcclxuXHJcbiAgICAgIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xyXG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShtaW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XHJcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKG1heCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlLnNldChkYXRlKTtcclxuICAgIHRoaXMuZGF0ZUlucHV0VmFsdWUuc2V0KHRoaXMuc2VyaWFsaXplRm4oKShkYXRlKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NldERhdGVJbnB1dEF0dHJpYnV0ZXMoKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZGF0ZUlucHV0KCkhLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcclxuICAgICAgYXV0b2NhcGl0YWxpemU6ICdvZmYnLFxyXG4gICAgICBhdXRvY29tcGxldGU6ICdvZmYnLFxyXG4gICAgICAuLi50aGlzLmlucHV0QXR0cnMoKSxcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcclxuICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vISBjb21wdXRlZCBwcm9wZXJ0aWVzXHJcbiAgcmVhZG9ubHkgc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpICYmIHRoaXMuZGF0ZUlucHV0VmFsdWUoKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGlzTnVsbCh0aGlzLnZhbHVlKCkpO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQoKSAmJiB0aGlzLmRhdGVJbnB1dFZhbHVlKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlKCkgaW5zdGFuY2VvZiBEYXRlO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlEYXRlSW5wdXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaW5wdXRSZWFkT25seSgpICYmICF0aGlzLnNob3VsZERpc3BsYXlWYWx1ZSgpICYmIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29tcG9uZW50Q29sb3I+KHRoaXMuX0RFRkFVTFRTLmNvbG9yKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgW1xyXG4gICAgICAvL2FwcGVhcmFuY2UgYW5kIHZhcmlhbnQgaGFuZGxlZCBpbiBhcmQtZm9ybS1maWVsZC1mcmFtZSBjb21wb25lbnRcclxuICAgICAgLy9jb2xvciBoYW5kbGVkIGluIGFyZC1jYWxlbmRhciBjb21wb25lbnRcclxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXHJcbiAgICAgIHRoaXMuaXNPcGVuKCkgPyAnYXJkLWRyb3Bkb3duLW9wZW4nIDogJycsXHJcbiAgICAgIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpID8gJ2FyZC1kYXRlLWlucHV0X19kYXRlLWlucHV0LWZvY3VzZWQnIDogJycsXHJcbiAgICBdLmpvaW4oJyAnKVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IGRyb3Bkb3duQXBwZWFyYW5jZSA9IGlucHV0PE51bGxhYmxlPERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlPj4odGhpcy5fREVGQVVMVFMuZHJvcGRvd25BcHBlYXJhbmNlKTtcclxuICByZWFkb25seSBkcm9wZG93bkFwcGVhcmFuY2VPckRlZmF1bHQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkFwcGVhcmFuY2UoKSkgcmV0dXJuIHRoaXMuZHJvcGRvd25BcHBlYXJhbmNlKCkhO1xyXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5PdXRsaW5lZDtcclxuICAgIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5SYWlzZWQ7XHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25WYXJpYW50ID0gaW5wdXQ8TnVsbGFibGU8RHJvcGRvd25QYW5lbFZhcmlhbnQ+Pih0aGlzLl9ERUZBVUxUUy5kcm9wZG93blZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duVmFyaWFudE9yRGVmYXVsdCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duVmFyaWFudCgpKSByZXR1cm4gdGhpcy5kcm9wZG93blZhcmlhbnQoKSE7XHJcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50KCk7XHJcbiAgICBpZiAodmFyaWFudCA9PT0gRm9ybUVsZW1lbnRWYXJpYW50LlBpbGwpIHJldHVybiBEcm9wZG93blBhbmVsVmFyaWFudC5Sb3VuZGVkO1xyXG4gICAgcmV0dXJuIHZhcmlhbnQ7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBjYWxlbmRhciBhdHRyaWJ1dGVzXHJcbiAgcmVhZG9ubHkgYWN0aXZlVmlldyA9IG1vZGVsPEFyZENhbGVuZGFyVmlldz4odGhpcy5fREVGQVVMVFMuYWN0aXZlVmlldyk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlWWVhciA9IG1vZGVsPG51bWJlcj4odGhpcy5fREVGQVVMVFMuYWN0aXZlWWVhcik7XHJcbiAgcmVhZG9ubHkgYWN0aXZlTW9udGggPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZU1vbnRoKTtcclxuXHJcbiAgcmVhZG9ubHkgZmlyc3RXZWVrZGF5ID0gaW5wdXQ8bnVtYmVyLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmZpcnN0V2Vla2RheSwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5maXJzdFdlZWtkYXkpO1xyXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihgQVJELU5GMDA4MUE6IFtmaXJzdFdlZWtkYXldIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgXCIke3ZhbHVlfVwiLiBVc2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQuYClcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA2KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYEFSRC1ORjAwODFCOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgbW9kdWxvIG9wZXJhdG9yIHRvIGFkanVzdCB0aGUgdmFsdWUuYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlICUgNztcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllciA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSB8fCB2YWx1ZSA8IDEpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GMDA4MjogW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGdvdCBcIiR7dmFsdWV9XCIuIFVzaW5nIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5gXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gNTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9LFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBtaW4gPSBpbnB1dDxEYXRlIHwgbnVsbCwgYW55Pih0aGlzLl9ERUZBVUxUUy5taW4sIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZURhdGVQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5taW4pIH0pO1xyXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PERhdGUgfCBudWxsLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlRGF0ZVByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlciA9IGlucHV0PEFyZENhbGVuZGFyRmlsdGVyRm4gfCBudWxsPih0aGlzLl9ERUZBVUxUUy5maWx0ZXIpO1xyXG5cclxuICAvLyEgY2FsZW5kYXIgb3V0cHV0c1xyXG4gIHJlYWRvbmx5IHllYXJTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IG1vbnRoU2VsZWN0ID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgLy8hIGNhbGVuZGFyIGNvbnRyb2xzXHJcblxyXG4gIHJlYWRvbmx5IHVzZUFjY2VwdEJ1dHRvblRvU2VsZWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZVRvQWNjZXB0OiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIG9uQ2FsZW5kYXJTZWxlY3RlZENoYW5nZShldmVudDogRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVzZUFjY2VwdEJ1dHRvblRvU2VsZWN0KCkpIHtcclxuICAgICAgdGhpcy5fdmFsdWVUb0FjY2VwdCA9IGV2ZW50O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY2NlcHRTZWxlY3RlZERhdGUoZXZlbnQhKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWNjZXB0U2VsZWN0ZWREYXRlKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChkYXRlKTtcclxuICAgIHRoaXMuZGF0ZUlucHV0VmFsdWUuc2V0KHRoaXMuc2VyaWFsaXplRm4oKShkYXRlKSk7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NhbmNlbENhbGVuZGFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRCdXR0b25DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjY2VwdFNlbGVjdGVkRGF0ZSh0aGlzLl92YWx1ZVRvQWNjZXB0KTtcclxuICAgIHRoaXMuX3ZhbHVlVG9BY2NlcHQgPSBudWxsO1xyXG4gIH1cclxuICBvbkNhbmNlbEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2FuY2VsQ2FsZW5kYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8vISBkcm9wZG93biBvdmVybGF5XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25Ib3N0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZHJvcGRvd25Ib3N0Jyk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25UZW1wbGF0ZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxhbnk+PignZHJvcGRvd25UZW1wbGF0ZScpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duUGFuZWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8QXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudD4oQXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudCk7XHJcblxyXG4gIHByaXZhdGUgZHJvcGRvd25PdmVybGF5PzogT3ZlcmxheVJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZHJvcGRvd25Ib3N0KCkpXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdKTtcclxuXHJcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHN0cmF0ZWd5LFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneU9wdHMuYmxvY2soKSxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XHJcblxyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSgpLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkuYXR0YWNoKHBvcnRhbCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRyb3Bkb3duT3ZlcmxheSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5LmRpc3Bvc2UoKTtcclxuICAgIGRlbGV0ZSB0aGlzLmRyb3Bkb3duT3ZlcmxheTtcclxuICB9XHJcblxyXG4gIC8vISBob29rc1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldERhdGVJbnB1dEF0dHJpYnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIC8vISBkcm9wZG93biBzdGF0ZSBoYW5kbGVyc1xyXG4gIG9uR2VuZXJhbENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVJbnB1dCgpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgb25PdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG9uQ2FsZW5kYXJCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEaXNhYmxlZCgpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhckhpZGRlbigpKSByZXR1cm47XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVuKCk7XHJcbiAgfVxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuaXNPcGVuKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG5cclxuICAgIHRoaXMub3BlbkV2ZW50LmVtaXQoKTtcclxuICB9XHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XHJcblxyXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHRlbXBsYXRlc1xyXG4gIHJlYWRvbmx5IHZhbHVlVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0VmFsdWVUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJJY29uVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0Q2FsZW5kYXJJY29uVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGFjY2VwdEJ1dHRvbnNUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG5cclxuICByZWFkb25seSBwcmVmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xyXG5cclxuICAvLyEgY29udGV4dCBwcm92aWRlcnNcclxuICByZWFkb25seSB2YWx1ZUNvbnRleHQgPSBjb21wdXRlZDxBcmREYXRlSW5wdXRWYWx1ZUNvbnRleHQ+KCgpID0+ICh7XHJcbiAgICAkaW1wbGljaXQ6IHRoaXMudmFsdWUoKSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdEJ1dHRvbnNDb250ZXh0ID0gY29tcHV0ZWQ8QXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc0NvbnRleHQ+KCgpID0+ICh7XHJcbiAgICAkaW1wbGljaXQ6ICgpID0+IHRoaXMub25BY2NlcHRCdXR0b25DbGljaygpLFxyXG4gICAgYWNjZXB0OiAoKSA9PiB0aGlzLm9uQWNjZXB0QnV0dG9uQ2xpY2soKSxcclxuICAgIGNhbmNlbDogKCkgPT4gdGhpcy5vbkNhbmNlbEJ1dHRvbkNsaWNrKCksXHJcbiAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuY2FsZW5kYXJEaXNhYmxlZCgpLFxyXG4gIH0pKTtcclxufVxyXG4iLCI8YXJkLWZvcm0tZmllbGQtZnJhbWVcclxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxyXG4gIFt2YXJpYW50XT1cInZhcmlhbnQoKVwiXHJcbiAgW2NvbXBhY3RdPVwiY29tcGFjdCgpXCJcclxuICBbaXNGb2N1c2VkXT1cImlzRm9jdXNlZCgpXCJcclxuICBbaGFzRXJyb3JdPVwiaGFzRXJyb3IoKVwiXHJcbiAgW2lzU3VjY2Vzc109XCJpc1N1Y2Nlc3MoKVwiXHJcbiAgW3ByZWZpeFRlbXBsYXRlXT1cInByZWZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcclxuICBbc3VmZml4VGVtcGxhdGVdPVwic3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGVcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dFwiXHJcbiAgICAjZHJvcGRvd25Ib3N0XHJcbiAgICAoY2xpY2spPVwib25HZW5lcmFsQ2xpY2soJGV2ZW50KVwiXHJcbiAgICBbY2xhc3MuYXJkLWhhcy12YWx1ZV09XCIhIXZhbHVlKClcIlxyXG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9fdmFsdWUtY29udGFpbmVyIGFyZC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX3BsYWNlaG9sZGVyIGFyZC1wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW2NsYXNzLmFyZC1kYXRlLWlucHV0X19wbGFjZWhvbGRlci1oaWRkZW5dPVwiIXNob3VsZERpc3BsYXlQbGFjZWhvbGRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X192YWx1ZVwiXHJcbiAgICAgICAgW2NsYXNzLmFyZC1kYXRlLWlucHV0X192YWx1ZS1oaWRkZW5dPVwiIXNob3VsZERpc3BsYXlWYWx1ZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgI2RlZmF1bHRWYWx1ZVRlbXBsYXRlXHJcbiAgICAgICAgICBsZXQtZGF0ZVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlcmlhbGl6ZUZuKCkoZGF0ZSkgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInZhbHVlVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdFZhbHVlVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInZhbHVlQ29udGV4dCgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX2lucHV0LWNvbnRhaW5lclwiXHJcbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcclxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW4oKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImlzT3BlbigpID8gaHRtbElkKCkgOiBudWxsXCJcclxuICAgICAgICBbY2xhc3MuYXJkLWRhdGUtaW5wdXRfX2lucHV0LWNvbnRhaW5lci1oaWRkZW5dPVwiIXNob3VsZERpc3BsYXlEYXRlSW5wdXQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNkYXRlSW5wdXRcclxuICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19pbnB1dFwiXHJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJkYXRlSW5wdXRWYWx1ZSgpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuKCkgPyBodG1sSWQoKSA6IG51bGxcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uRGF0ZUlucHV0SW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAoZm9jdXMpPVwib25EYXRlSW5wdXRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uRGF0ZUlucHV0Qmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgIChrZXlkb3duKT1cIm9uRGF0ZUlucHV0RW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYgKCFjYWxlbmRhckhpZGRlbigpKSB7XHJcbiAgICA8YXJkLWljb24tYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwibm9uZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJjYWxlbmRhckRpc2FibGVkKClcIlxyXG4gICAgICAoY2xpY2spPVwib25DYWxlbmRhckJ1dHRvbkNsaWNrKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAjZGVmYXVsdENhbGVuZGFySWNvblRlbXBsYXRlXHJcbiAgICAgICAgbGV0LWRhdGVcclxuICAgICAgPlxyXG4gICAgICAgIDxhcmQtaWNvbiBmaWxsZWQ+dG9kYXk8L2FyZC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhbGVuZGFySWNvblRlbXBsYXRlKCk/LnRlbXBsYXRlIHx8IGRlZmF1bHRDYWxlbmRhckljb25UZW1wbGF0ZVwiIC8+XHJcbiAgICA8L2FyZC1pY29uLWJ1dHRvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9hcmQtZm9ybS1maWVsZC1mcmFtZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25UZW1wbGF0ZT5cclxuICA8YXJkLWRyb3Bkb3duLXBhbmVsXHJcbiAgICBjbGFzcz1cImFyZC1kcm9wZG93bi1wYW5lbCBhcmQtZGF0ZS1pbnB1dF9fZHJvcGRvd24tcGFuZWxcIlxyXG4gICAgW2FwcGVhcmFuY2VdPVwiZHJvcGRvd25BcHBlYXJhbmNlT3JEZWZhdWx0KClcIlxyXG4gICAgW3ZhcmlhbnRdPVwiZHJvcGRvd25WYXJpYW50T3JEZWZhdWx0KClcIlxyXG4gICAgW2lzT3Blbl09XCJ0cnVlXCJcclxuICAgIFtwYW5lbElkXT1cImh0bWxJZCgpXCJcclxuICAgIFtjb21wYWN0XT1cImNvbXBhY3QoKVwiXHJcbiAgICAoYXJkQ2xpY2tPdXRzaWRlKT1cIm9uT3V0c2lkZUNsaWNrKCRldmVudClcIlxyXG4gID5cclxuICAgIDxhcmQtY2FsZW5kYXJcclxuICAgICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9fY2FsZW5kYXJcIlxyXG4gICAgICBbKGFjdGl2ZU1vbnRoKV09XCJhY3RpdmVNb250aFwiXHJcbiAgICAgIFsoYWN0aXZlWWVhcildPVwiYWN0aXZlWWVhclwiXHJcbiAgICAgIFsoYWN0aXZlVmlldyldPVwiYWN0aXZlVmlld1wiXHJcbiAgICAgIFtmaXJzdFdlZWtkYXldPVwiZmlyc3RXZWVrZGF5KClcIlxyXG4gICAgICBbbWluXT1cIm1pbigpXCJcclxuICAgICAgW21heF09XCJtYXgoKVwiXHJcbiAgICAgIGF1dG9Gb2N1c1xyXG4gICAgICBbbXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyXT1cIm11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcigpXCJcclxuICAgICAgW2NvbG9yXT1cImNvbG9yKClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBjYWxlbmRhckRpc2FibGVkKClcIlxyXG4gICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJvbkNhbGVuZGFyU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICh5ZWFyU2VsZWN0KT1cInllYXJTZWxlY3QuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG1vbnRoU2VsZWN0KT1cIm1vbnRoU2VsZWN0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG4gICAgQGlmICh1c2VBY2NlcHRCdXR0b25Ub1NlbGVjdCgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX2FjY2VwdC1idXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAjZGVmYXVsdEFjY2VwdEJ1dHRvbnNUZW1wbGF0ZVxyXG4gICAgICAgIGxldC1kYXRlXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzZXJpYWxpemVGbigpKGRhdGUpIH19XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhY2NlcHRCdXR0b25zVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdEFjY2VwdEJ1dHRvbnNUZW1wbGF0ZVwiXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImFjY2VwdEJ1dHRvbnNDb250ZXh0KClcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9hcmQtZHJvcGRvd24tcGFuZWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { _formFieldComponentDefaults } from '../../_internal/form-field-component';
3
+ import { ArdCalendarView } from '../../calendar/calendar.types';
4
+ import { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';
5
+ import { ComponentColor } from '../../types/colors.types';
6
+ import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
7
+ import { DEFAULT_DATE_INPUT_DESERIALIZE_FN, DEFAULT_DATE_INPUT_SERIALIZE_FN } from './date-input.serializers';
8
+ import { ArdDateInputMinMaxStrategy } from './date-input.types';
9
+ const _dateInputDefaults = {
10
+ ..._formFieldComponentDefaults,
11
+ inputAttrs: {},
12
+ placeholder: 'Choose a date',
13
+ serializeFn: DEFAULT_DATE_INPUT_SERIALIZE_FN,
14
+ deserializeFn: DEFAULT_DATE_INPUT_DESERIALIZE_FN,
15
+ appearance: FormElementAppearance.Outlined,
16
+ variant: FormElementVariant.Rounded,
17
+ color: ComponentColor.Primary,
18
+ compact: false,
19
+ dropdownAppearance: DropdownPanelAppearance.Outlined,
20
+ dropdownVariant: DropdownPanelVariant.Rounded,
21
+ minMaxStrategy: ArdDateInputMinMaxStrategy.Adjust,
22
+ // calendar defaults
23
+ activeView: ArdCalendarView.Days,
24
+ activeYear: new Date().getFullYear(),
25
+ activeMonth: new Date().getMonth(),
26
+ firstWeekday: 1,
27
+ multipleYearPageChangeModifier: 5,
28
+ min: null,
29
+ max: null,
30
+ filter: null,
31
+ };
32
+ export const ARD_DATE_INPUT_DEFAULTS = new InjectionToken('ard-date-input-defaults', {
33
+ factory: () => ({ ..._dateInputDefaults }),
34
+ });
35
+ export function provideDateInputDefaults(config) {
36
+ return { provide: ARD_DATE_INPUT_DEFAULTS, useValue: { ..._dateInputDefaults, ...config } };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBK0IsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoSCxPQUFPLEVBQXVCLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RyxPQUFPLEVBQTZCLDBCQUEwQixFQUEyQixNQUFNLG9CQUFvQixDQUFDO0FBeUJwSCxNQUFNLGtCQUFrQixHQUF5QjtJQUMvQyxHQUFHLDJCQUEyQjtJQUM5QixVQUFVLEVBQUUsRUFBRTtJQUNkLFdBQVcsRUFBRSxlQUFlO0lBQzVCLFdBQVcsRUFBRSwrQkFBK0I7SUFDNUMsYUFBYSxFQUFFLGlDQUFpQztJQUNoRCxVQUFVLEVBQUUscUJBQXFCLENBQUMsUUFBUTtJQUMxQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUNuQyxLQUFLLEVBQUUsY0FBYyxDQUFDLE9BQU87SUFDN0IsT0FBTyxFQUFFLEtBQUs7SUFDZCxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQyxRQUFRO0lBQ3BELGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPO0lBQzdDLGNBQWMsRUFBRSwwQkFBMEIsQ0FBQyxNQUFNO0lBQ2pELG9CQUFvQjtJQUNwQixVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7SUFDaEMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ3BDLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxZQUFZLEVBQUUsQ0FBQztJQUNmLDhCQUE4QixFQUFFLENBQUM7SUFDakMsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUF1Qix5QkFBeUIsRUFBRTtJQUN6RyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztDQUMzQyxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBcUM7SUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUM5RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cywgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXJkQ2FsZW5kYXJGaWx0ZXJGbiwgQXJkQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMnO1xyXG5pbXBvcnQgeyBEcm9wZG93blBhbmVsQXBwZWFyYW5jZSwgRHJvcGRvd25QYW5lbFZhcmlhbnQgfSBmcm9tICcuLi8uLi9kcm9wZG93bi1wYW5lbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbG9yIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29sb3JzLnR5cGVzJztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgREVGQVVMVF9EQVRFX0lOUFVUX0RFU0VSSUFMSVpFX0ZOLCBERUZBVUxUX0RBVEVfSU5QVVRfU0VSSUFMSVpFX0ZOIH0gZnJvbSAnLi9kYXRlLWlucHV0LnNlcmlhbGl6ZXJzJztcclxuaW1wb3J0IHsgQXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbiwgQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3ksIEFyZERhdGVJbnB1dFNlcmlhbGl6ZUZuIH0gZnJvbSAnLi9kYXRlLWlucHV0LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJkRGF0ZUlucHV0RGVmYXVsdHMgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIGlucHV0QXR0cnM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBzZXJpYWxpemVGbjogQXJkRGF0ZUlucHV0U2VyaWFsaXplRm47XHJcbiAgZGVzZXJpYWxpemVGbjogQXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbjtcclxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2U7XHJcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50O1xyXG4gIGNvbG9yOiBDb21wb25lbnRDb2xvcjtcclxuICBjb21wYWN0OiBib29sZWFuO1xyXG4gIGRyb3Bkb3duQXBwZWFyYW5jZTogRHJvcGRvd25QYW5lbEFwcGVhcmFuY2U7XHJcbiAgZHJvcGRvd25WYXJpYW50OiBEcm9wZG93blBhbmVsVmFyaWFudDtcclxuICBtaW5NYXhTdHJhdGVneTogQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3k7XHJcbiAgLy8gY2FsZW5kYXIgZGVmYXVsdHNcclxuICBhY3RpdmVWaWV3OiBBcmRDYWxlbmRhclZpZXc7XHJcbiAgYWN0aXZlWWVhcjogbnVtYmVyO1xyXG4gIGFjdGl2ZU1vbnRoOiBudW1iZXI7XHJcbiAgZmlyc3RXZWVrZGF5OiBudW1iZXI7XHJcbiAgbXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyOiBudW1iZXI7XHJcbiAgbWluOiBEYXRlIHwgbnVsbDtcclxuICBtYXg6IERhdGUgfCBudWxsO1xyXG4gIGZpbHRlcjogQXJkQ2FsZW5kYXJGaWx0ZXJGbiB8IG51bGw7XHJcbn1cclxuXHJcbmNvbnN0IF9kYXRlSW5wdXREZWZhdWx0czogQXJkRGF0ZUlucHV0RGVmYXVsdHMgPSB7XHJcbiAgLi4uX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzLFxyXG4gIGlucHV0QXR0cnM6IHt9LFxyXG4gIHBsYWNlaG9sZGVyOiAnQ2hvb3NlIGEgZGF0ZScsXHJcbiAgc2VyaWFsaXplRm46IERFRkFVTFRfREFURV9JTlBVVF9TRVJJQUxJWkVfRk4sXHJcbiAgZGVzZXJpYWxpemVGbjogREVGQVVMVF9EQVRFX0lOUFVUX0RFU0VSSUFMSVpFX0ZOLFxyXG4gIGFwcGVhcmFuY2U6IEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCxcclxuICB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQuUm91bmRlZCxcclxuICBjb2xvcjogQ29tcG9uZW50Q29sb3IuUHJpbWFyeSxcclxuICBjb21wYWN0OiBmYWxzZSxcclxuICBkcm9wZG93bkFwcGVhcmFuY2U6IERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlLk91dGxpbmVkLFxyXG4gIGRyb3Bkb3duVmFyaWFudDogRHJvcGRvd25QYW5lbFZhcmlhbnQuUm91bmRlZCxcclxuICBtaW5NYXhTdHJhdGVneTogQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3kuQWRqdXN0LFxyXG4gIC8vIGNhbGVuZGFyIGRlZmF1bHRzXHJcbiAgYWN0aXZlVmlldzogQXJkQ2FsZW5kYXJWaWV3LkRheXMsXHJcbiAgYWN0aXZlWWVhcjogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxyXG4gIGFjdGl2ZU1vbnRoOiBuZXcgRGF0ZSgpLmdldE1vbnRoKCksXHJcbiAgZmlyc3RXZWVrZGF5OiAxLFxyXG4gIG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcjogNSxcclxuICBtaW46IG51bGwsXHJcbiAgbWF4OiBudWxsLFxyXG4gIGZpbHRlcjogbnVsbCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBBUkRfREFURV9JTlBVVF9ERUZBVUxUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcmREYXRlSW5wdXREZWZhdWx0cz4oJ2FyZC1kYXRlLWlucHV0LWRlZmF1bHRzJywge1xyXG4gIGZhY3Rvcnk6ICgpID0+ICh7IC4uLl9kYXRlSW5wdXREZWZhdWx0cyB9KSxcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURhdGVJbnB1dERlZmF1bHRzKGNvbmZpZzogUGFydGlhbDxBcmREYXRlSW5wdXREZWZhdWx0cz4pOiBQcm92aWRlciB7XHJcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX0RBVEVfSU5QVVRfREVGQVVMVFMsIHVzZVZhbHVlOiB7IC4uLl9kYXRlSW5wdXREZWZhdWx0cywgLi4uY29uZmlnIH0gfTtcclxufVxyXG4iXX0=
@@ -0,0 +1,59 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ //public (exported)
4
+ export class ArdDateInputPrefixTemplateDirective {
5
+ constructor(template) {
6
+ this.template = template;
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputPrefixTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdDateInputPrefixTemplateDirective, selector: "ard-date-input > ng-template[ard-prefix-tmp]", ngImport: i0 }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputPrefixTemplateDirective, decorators: [{
12
+ type: Directive,
13
+ args: [{ selector: 'ard-date-input > ng-template[ard-prefix-tmp]' }]
14
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
15
+ export class ArdDateInputSuffixTemplateDirective {
16
+ constructor(template) {
17
+ this.template = template;
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputSuffixTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
20
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdDateInputSuffixTemplateDirective, selector: "ard-date-input > ng-template[ard-suffix-tmp]", ngImport: i0 }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputSuffixTemplateDirective, decorators: [{
23
+ type: Directive,
24
+ args: [{ selector: 'ard-date-input > ng-template[ard-suffix-tmp]' }]
25
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
26
+ export class ArdDateInputValueTemplateDirective {
27
+ constructor(template) {
28
+ this.template = template;
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputValueTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
31
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdDateInputValueTemplateDirective, selector: "ard-date-input > ng-template[ard-value-tmp]", ngImport: i0 }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputValueTemplateDirective, decorators: [{
34
+ type: Directive,
35
+ args: [{ selector: 'ard-date-input > ng-template[ard-value-tmp]' }]
36
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
37
+ export class ArdDateInputCalendarIconTemplateDirective {
38
+ constructor(template) {
39
+ this.template = template;
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputCalendarIconTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
42
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdDateInputCalendarIconTemplateDirective, selector: "ard-date-input > ng-template[ard-calendar-icon-tmp]", ngImport: i0 }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputCalendarIconTemplateDirective, decorators: [{
45
+ type: Directive,
46
+ args: [{ selector: 'ard-date-input > ng-template[ard-calendar-icon-tmp]' }]
47
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
48
+ export class ArdDateInputAcceptButtonsTemplateDirective {
49
+ constructor(template) {
50
+ this.template = template;
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputAcceptButtonsTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
53
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdDateInputAcceptButtonsTemplateDirective, selector: "ard-date-input > ng-template[ard-accept-buttons-tmp]", ngImport: i0 }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdDateInputAcceptButtonsTemplateDirective, decorators: [{
56
+ type: Directive,
57
+ args: [{ selector: 'ard-date-input > ng-template[ard-accept-buttons-tmp]' }]
58
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBR3ZELG1CQUFtQjtBQUduQixNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLFlBQW1CLFFBQWdDO1FBQWhDLGFBQVEsR0FBUixRQUFRLENBQXdCO0lBQUcsQ0FBQzsrR0FENUMsbUNBQW1DO21HQUFuQyxtQ0FBbUM7OzRGQUFuQyxtQ0FBbUM7a0JBRC9DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsOENBQThDLEVBQUU7O0FBTXZFLE1BQU0sT0FBTyxtQ0FBbUM7SUFDOUMsWUFBbUIsUUFBZ0M7UUFBaEMsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7SUFBRyxDQUFDOytHQUQ1QyxtQ0FBbUM7bUdBQW5DLG1DQUFtQzs7NEZBQW5DLG1DQUFtQztrQkFEL0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSw4Q0FBOEMsRUFBRTs7QUFNdkUsTUFBTSxPQUFPLGtDQUFrQztJQUM3QyxZQUFtQixRQUErQztRQUEvQyxhQUFRLEdBQVIsUUFBUSxDQUF1QztJQUFHLENBQUM7K0dBRDNELGtDQUFrQzttR0FBbEMsa0NBQWtDOzs0RkFBbEMsa0NBQWtDO2tCQUQ5QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDZDQUE2QyxFQUFFOztBQU10RSxNQUFNLE9BQU8seUNBQXlDO0lBQ3BELFlBQW1CLFFBQWdDO1FBQWhDLGFBQVEsR0FBUixRQUFRLENBQXdCO0lBQUcsQ0FBQzsrR0FENUMseUNBQXlDO21HQUF6Qyx5Q0FBeUM7OzRGQUF6Qyx5Q0FBeUM7a0JBRHJELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscURBQXFELEVBQUU7O0FBTTlFLE1BQU0sT0FBTywwQ0FBMEM7SUFDckQsWUFBbUIsUUFBdUQ7UUFBdkQsYUFBUSxHQUFSLFFBQVEsQ0FBK0M7SUFBRyxDQUFDOytHQURuRSwwQ0FBMEM7bUdBQTFDLDBDQUEwQzs7NEZBQTFDLDBDQUEwQztrQkFEdEQsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzREFBc0QsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFyZERhdGVJbnB1dEFjY2VwdEJ1dHRvbnNDb250ZXh0LCBBcmREYXRlSW5wdXRWYWx1ZUNvbnRleHQgfSBmcm9tICcuL2RhdGUtaW5wdXQudHlwZXMnO1xuXG4vL3B1YmxpYyAoZXhwb3J0ZWQpXG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2FyZC1kYXRlLWlucHV0ID4gbmctdGVtcGxhdGVbYXJkLXByZWZpeC10bXBdJyB9KVxuZXhwb3J0IGNsYXNzIEFyZERhdGVJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmRlZmluZWQ+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdhcmQtZGF0ZS1pbnB1dCA+IG5nLXRlbXBsYXRlW2FyZC1zdWZmaXgtdG1wXScgfSlcbmV4cG9ydCBjbGFzcyBBcmREYXRlSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5kZWZpbmVkPikge31cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnYXJkLWRhdGUtaW5wdXQgPiBuZy10ZW1wbGF0ZVthcmQtdmFsdWUtdG1wXScgfSlcbmV4cG9ydCBjbGFzcyBBcmREYXRlSW5wdXRWYWx1ZVRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxBcmREYXRlSW5wdXRWYWx1ZUNvbnRleHQ+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdhcmQtZGF0ZS1pbnB1dCA+IG5nLXRlbXBsYXRlW2FyZC1jYWxlbmRhci1pY29uLXRtcF0nIH0pXG5leHBvcnQgY2xhc3MgQXJkRGF0ZUlucHV0Q2FsZW5kYXJJY29uVGVtcGxhdGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVuZGVmaW5lZD4pIHt9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2FyZC1kYXRlLWlucHV0ID4gbmctdGVtcGxhdGVbYXJkLWFjY2VwdC1idXR0b25zLXRtcF0nIH0pXG5leHBvcnQgY2xhc3MgQXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zQ29udGV4dD4pIHt9XG59Il19