@porscheinformatik/clr-addons 15.0.0 → 15.2.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 (64) hide show
  1. package/clr-addons.module.d.ts +2 -1
  2. package/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.d.ts +2 -0
  3. package/datagrid/datagrid-state-persistence/index.d.ts +1 -0
  4. package/datagrid/datagrid-state-persistence/state-persistence-key.directive.d.ts +13 -4
  5. package/datagrid/datagrid-state-persistence/state-persistence-options.interface.d.ts +8 -0
  6. package/daterangepicker/daterange.constants.d.ts +21 -0
  7. package/daterangepicker/daterangepicker.module.d.ts +17 -0
  8. package/daterangepicker/directives/abstract-container.component.d.ts +53 -0
  9. package/daterangepicker/directives/datepicker/datepicker.component.d.ts +65 -0
  10. package/daterangepicker/directives/daterangepicker/daterangepicker.directive.d.ts +127 -0
  11. package/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.d.ts +118 -0
  12. package/daterangepicker/directives/if-daterange-error.directive.d.ts +40 -0
  13. package/daterangepicker/index.d.ts +13 -0
  14. package/daterangepicker/interfaces/daterange-preset.interface.d.ts +8 -0
  15. package/daterangepicker/interfaces/daterange.interface.d.ts +12 -0
  16. package/daterangepicker/models/day.model.d.ts +80 -0
  17. package/daterangepicker/models/popover-positions.model.d.ts +20 -0
  18. package/daterangepicker/providers/daterange-control-state.service.d.ts +42 -0
  19. package/daterangepicker/providers/daterange-parsing.service.d.ts +66 -0
  20. package/daterangepicker/providers/daterange.service.d.ts +38 -0
  21. package/daterangepicker/providers/opened-datepickers-tracker.service.d.ts +20 -0
  22. package/daterangepicker/validators/daterange-max.validator.d.ts +32 -0
  23. package/daterangepicker/validators/daterange-min.validator.d.ts +32 -0
  24. package/daterangepicker/validators/daterange-order.validator.d.ts +29 -0
  25. package/daterangepicker/validators/daterange-required.validator.d.ts +29 -0
  26. package/esm2020/clr-addons.module.mjs +8 -4
  27. package/esm2020/datagrid/datagrid-state-persistence/column-hidden-state-persistence.directive.mjs +3 -2
  28. package/esm2020/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.mjs +1 -1
  29. package/esm2020/datagrid/datagrid-state-persistence/index.mjs +2 -1
  30. package/esm2020/datagrid/datagrid-state-persistence/state-persistence-key.directive.mjs +58 -12
  31. package/esm2020/datagrid/datagrid-state-persistence/state-persistence-options.interface.mjs +2 -0
  32. package/esm2020/daterangepicker/daterange.constants.mjs +27 -0
  33. package/esm2020/daterangepicker/daterangepicker.module.mjs +58 -0
  34. package/esm2020/daterangepicker/directives/abstract-container.component.mjs +104 -0
  35. package/esm2020/daterangepicker/directives/datepicker/datepicker.component.mjs +97 -0
  36. package/esm2020/daterangepicker/directives/daterangepicker/daterangepicker.directive.mjs +256 -0
  37. package/esm2020/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.mjs +251 -0
  38. package/esm2020/daterangepicker/directives/if-daterange-error.directive.mjs +94 -0
  39. package/esm2020/daterangepicker/index.mjs +14 -0
  40. package/esm2020/daterangepicker/interfaces/daterange-preset.interface.mjs +2 -0
  41. package/esm2020/daterangepicker/interfaces/daterange.interface.mjs +2 -0
  42. package/esm2020/daterangepicker/models/day.model.mjs +99 -0
  43. package/esm2020/daterangepicker/models/popover-positions.model.mjs +66 -0
  44. package/esm2020/daterangepicker/providers/daterange-control-state.service.mjs +62 -0
  45. package/esm2020/daterangepicker/providers/daterange-parsing.service.mjs +206 -0
  46. package/esm2020/daterangepicker/providers/daterange.service.mjs +54 -0
  47. package/esm2020/daterangepicker/providers/opened-datepickers-tracker.service.mjs +36 -0
  48. package/esm2020/daterangepicker/validators/daterange-max.validator.mjs +85 -0
  49. package/esm2020/daterangepicker/validators/daterange-min.validator.mjs +85 -0
  50. package/esm2020/daterangepicker/validators/daterange-order.validator.mjs +75 -0
  51. package/esm2020/daterangepicker/validators/daterange-required.validator.mjs +71 -0
  52. package/esm2020/index.mjs +3 -2
  53. package/esm2020/searchfield/search-field.mjs +7 -5
  54. package/fesm2015/clr-addons.mjs +1977 -270
  55. package/fesm2015/clr-addons.mjs.map +1 -1
  56. package/fesm2020/clr-addons.mjs +1858 -177
  57. package/fesm2020/clr-addons.mjs.map +1 -1
  58. package/index.d.ts +1 -0
  59. package/package.json +3 -3
  60. package/searchfield/search-field.d.ts +2 -2
  61. package/styles/clr-addons-phs.css +0 -13
  62. package/styles/clr-addons-phs.css.map +1 -1
  63. package/styles/clr-addons-phs.min.css +1 -1
  64. package/styles/clr-addons-phs.min.css.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import { ContentChild, ContentChildren, Directive, ElementRef, Input, QueryList, } from '@angular/core';
2
- import { ClrDatagrid, ClrDatagridFilter, ClrDatagridPagination } from '@clr/angular';
2
+ import { ClrDatagrid, ClrDatagridFilter, ClrDatagridPagination, ClrDatagridSortOrder, DatagridPropertyComparator, } from '@clr/angular';
3
3
  import { delay, Subject } from 'rxjs';
4
4
  import { takeUntil } from 'rxjs/operators';
5
5
  import * as i0 from "@angular/core";
@@ -28,8 +28,10 @@ export class StatePersistenceKeyDirective {
28
28
  const volatileDataState = this.getVolatileDataState();
29
29
  const localStorageState = this.getLocalStorageState();
30
30
  this.initFilter(volatileDataState);
31
+ this.initSorting(localStorageState);
31
32
  this.initDatagridPersister();
32
- if (this.pagination && this.pagination.page) {
33
+ const paginationPersistenceEnabled = this.options.persistPagination ?? true;
34
+ if (this.pagination?.page && paginationPersistenceEnabled) {
33
35
  this.initPageSizePersister(localStorageState);
34
36
  this.initCurrentPage(volatileDataState);
35
37
  }
@@ -64,7 +66,8 @@ export class StatePersistenceKeyDirective {
64
66
  }
65
67
  }
66
68
  initFilter(savedState) {
67
- if (savedState.columns) {
69
+ const filterPersistenceEnabled = this.options.persistFilters ?? true;
70
+ if (savedState.columns && filterPersistenceEnabled) {
68
71
  Object.keys(savedState.columns).forEach(prop => {
69
72
  const filter = this.getFilter(prop);
70
73
  if (filter) {
@@ -76,13 +79,40 @@ export class StatePersistenceKeyDirective {
76
79
  });
77
80
  }
78
81
  }
82
+ initSorting(savedState) {
83
+ const sortPersistenceEnabled = this.options.persistSort ?? true;
84
+ if (savedState.sortBy && sortPersistenceEnabled) {
85
+ this.datagrid.columns.forEach(column => {
86
+ if (this.getSortProperty(column.sortBy) === savedState.sortBy) {
87
+ column.sortOrder = savedState.sortReverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;
88
+ }
89
+ else {
90
+ column.sortOrder = ClrDatagridSortOrder.UNSORTED;
91
+ }
92
+ });
93
+ }
94
+ }
79
95
  initDatagridPersister() {
80
96
  // delay is needed, as onDestroy the filters emit empty values.
81
97
  // So delay it to the end of the current cycle, so the directive is also destroyed before it gets the next values
82
98
  this.datagrid.refresh.pipe(delay(0), takeUntil(this.destroy$)).subscribe(dgState => {
83
- const state = this.getVolatileDataState();
99
+ this.persistFiltersAndCurrentPage(dgState);
100
+ this.persistSorting(dgState);
101
+ if (this.canShowPaginationDescription) {
102
+ this.updatePaginationDescription();
103
+ }
104
+ });
105
+ this.datagrid.items.change.pipe(takeUntil(this.destroy$)).subscribe(() => this.updatePaginationDescription());
106
+ }
107
+ persistFiltersAndCurrentPage(dgState) {
108
+ const filterPersistenceEnabled = this.options.persistFilters ?? true;
109
+ const paginationPersistenceEnabled = this.options.persistPagination ?? true;
110
+ const state = this.getVolatileDataState();
111
+ state.columns = state.columns || {};
112
+ if (paginationPersistenceEnabled) {
84
113
  state.currentPage = dgState.page?.current;
85
- state.columns = state.columns || {};
114
+ }
115
+ if (filterPersistenceEnabled) {
86
116
  Object.keys(state.columns).forEach(prop => (state.columns[prop].filterValue = undefined));
87
117
  dgState.filters?.forEach(filter => {
88
118
  const property = this.getFilterPropertyName(filter);
@@ -91,12 +121,17 @@ export class StatePersistenceKeyDirective {
91
121
  state.columns[property].filterValue = this.enrichFilterValue(filter);
92
122
  }
93
123
  });
94
- (this.useLocalStoreOnly ? localStorage : sessionStorage).setItem(this.options.key, JSON.stringify(state));
95
- if (this.canShowPaginationDescription) {
96
- this.updatePaginationDescription();
97
- }
98
- });
99
- this.datagrid.items.change.pipe(takeUntil(this.destroy$)).subscribe(() => this.updatePaginationDescription());
124
+ }
125
+ (this.useLocalStoreOnly ? localStorage : sessionStorage).setItem(this.options.key, JSON.stringify(state));
126
+ }
127
+ persistSorting(dgState) {
128
+ const sortPersistenceEnabled = this.options.persistSort ?? true;
129
+ if (sortPersistenceEnabled) {
130
+ const state = this.getLocalStorageState();
131
+ state.sortBy = this.getSortProperty(dgState.sort?.by);
132
+ state.sortReverse = dgState.sort?.reverse;
133
+ localStorage.setItem(this.options.key, JSON.stringify(state));
134
+ }
100
135
  }
101
136
  /**
102
137
  * Pagination description must be set by this directive,
@@ -163,6 +198,17 @@ export class StatePersistenceKeyDirective {
163
198
  const filterWithProp = filter;
164
199
  return (filterWithProp.property?.prop || filterWithProp.property);
165
200
  }
201
+ getSortProperty(sortBy) {
202
+ if (sortBy) {
203
+ if (typeof sortBy === 'string') {
204
+ return sortBy;
205
+ }
206
+ if (sortBy instanceof DatagridPropertyComparator) {
207
+ return sortBy.prop;
208
+ }
209
+ }
210
+ return undefined;
211
+ }
166
212
  ngOnDestroy() {
167
213
  this.destroy$.next();
168
214
  this.destroy$.complete();
@@ -194,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
194
240
  type: ContentChildren,
195
241
  args: [ClrDatagridFilter, { descendants: true }]
196
242
  }] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uta2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGFncmlkL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlL3N0YXRlLXBlcnNpc3RlbmNlLWtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQThCLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpILE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRTNDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQVV6QixNQUFNLE9BQU8sNEJBQTRCO0lBdUJ2QyxZQUFvQixRQUFxQjtRQUFyQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBbEJ6QyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBVzNCLGlDQUE0QixHQUFHLEtBQUssQ0FBQztRQUNyQyxpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFYSxDQUFDO0lBRTdDLGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO2FBQU07WUFDTCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFD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QkFBVSxVQUFVLGdEQUd0QyxpQkFBaUI7MkZBaEJ2Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtpQkFDckM7a0dBR0MsT0FBTztzQkFETixLQUFLO3VCQUFDLHdCQUF3QjtnQkFJL0IsaUJBQWlCO3NCQURoQixLQUFLO3VCQUFDLHNCQUFzQjtnQkFJN0IscUJBQXFCO3NCQURwQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFJakMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFJbkMsY0FBYztzQkFEYixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJekQsYUFBYTtzQkFEWixlQUFlO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZCwgQ2xyRGF0YWdyaWRGaWx0ZXIsIENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlLCBDbHJEYXRhZ3JpZFBhZ2luYXRpb24gfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwgfSBmcm9tICcuL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlLW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWxheSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBEQVRFX1RZUEUgPSAnZGF0ZSc7XG5cbmludGVyZmFjZSBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSB7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5XScsXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRlUGVyc2lzdGVuY2VLZXlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoJ2NsclN0YXRlUGVyc2lzdGVuY2VLZXknKVxuICBvcHRpb25zOiB7IGtleTogc3RyaW5nOyBzZXJ2ZXJEcml2ZW46IGJvb2xlYW4gfTtcblxuICBASW5wdXQoJ2NsclVzZUxvY2FsU3RvcmVPbmx5JylcbiAgdXNlTG9jYWxTdG9yZU9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclBhZ2luYXRpb25EZXNjcmlwdGlvbicpXG4gIHBhZ2luYXRpb25EZXNjcmlwdGlvbiA9ICcnO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0YWdyaWRQYWdpbmF0aW9uKVxuICBwYWdpbmF0aW9uOiBDbHJEYXRhZ3JpZFBhZ2luYXRpb247XG5cbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZFBhZ2luYXRpb24sIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwYWdpbmF0aW9uRWxlbTogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkcmVuKENsckRhdGFncmlkRmlsdGVyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGN1c3RvbUZpbHRlcnM6IFF1ZXJ5TGlzdDxDbHJEYXRhZ3JpZEZpbHRlcj47XG5cbiAgY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbiA9IGZhbHNlO1xuICB3YXJuZWRBYm91dEN1c3RvbURlc2NyaXB0aW9uID0gZmFsc2U7XG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFncmlkOiBDbHJEYXRhZ3JpZCkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZXJ2ZXJEcml2ZW4pIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgY29uc3Qgdm9sYXRpbGVEYXRhU3RhdGUgPSB0aGlzLmdldFZvbGF0aWxlRGF0YVN0YXRlKCk7XG4gICAgY29uc3QgbG9jYWxTdG9yYWdlU3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG5cbiAgICB0aGlzLmluaXRGaWx0ZXIodm9sYXRpbGVEYXRhU3RhdGUpO1xuICAgIHRoaXMuaW5pdERhdGFncmlkUGVyc2lzdGVyKCk7XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uICYmIHRoaXMucGFnaW5hdGlvbi5wYWdlKSB7XG4gICAgICB0aGlzLmluaXRQYWdlU2l6ZVBlcnNpc3Rlcihsb2NhbFN0b3JhZ2VTdGF0ZSk7XG4gICAgICB0aGlzLmluaXRDdXJyZW50UGFnZSh2b2xhdGlsZURhdGFTdGF0ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FuU2hvd1BhZ2luYXRpb25EZXNjcmlwdGlvbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2l0aCB0aGlzIG1ldGhvZCBmaWx0ZXJzIGNhbiBiZSBjbGVhcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSBmb3IgY2xyU3RhdGVQZXJzaXN0ZW5jZUtleVxuICAgKiBAcGFyYW0gdXNlTG9jYWxTdG9yZU9ubHkgVGhlIGNsclVzZUxvY2FsU3RvcmVPbmx5IGluZGljYXRvclxuICAgKi9cbiAgc3RhdGljIGNsZWFyRmlsdGVycyhrZXk6IHN0cmluZywgdXNlTG9jYWxTdG9yZU9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSgodXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuZ2V0SXRlbShrZXkpKSB8fCB7fTtcbiAgICBkYXRhLmNvbHVtbnMgPSB7fTtcbiAgICAodXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFBhZ2VTaXplUGVyc2lzdGVyKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogcGVyc2lzdCBwYWdlIHNpemUgY2hhbmdlcyBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2Uuc2l6ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHBhZ2VTaXplID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRMb2NhbFN0b3JhZ2VTdGF0ZSgpO1xuICAgICAgc3RhdGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMub3B0aW9ucy5rZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gICAgfSk7XG5cbiAgICAvKiBpbml0IHBhZ2Ugc2l6ZSBvZiBkYXRhZ3JpZCBpZiBhbHJlYWR5IHBlcnNpc3RlZCBpbiBsb2NhbCBzdG9yYWdlICovXG4gICAgaWYgKHNhdmVkU3RhdGUucGFnZVNpemUpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlLnNpemUgPSBzYXZlZFN0YXRlLnBhZ2VTaXplO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEN1cnJlbnRQYWdlKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKSB7XG4gICAgLyogaW5pdCBjdXJyZW50IHBhZ2Ugb2YgZGF0YWdyaWQgaWYgYWxyZWFkeSBwZXJzaXN0ZWQgKi9cbiAgICBpZiAoc2F2ZWRTdGF0ZT8uY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlLmN1cnJlbnQgPSBzYXZlZFN0YXRlLmN1cnJlbnRQYWdlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZpbHRlcihzYXZlZFN0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCkge1xuICAgIGlmIChzYXZlZFN0YXRlLmNvbHVtbnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUuY29sdW1ucykuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIocHJvcCk7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlclZhbHVlID0gc2F2ZWRTdGF0ZS5jb2x1bW5zW3Byb3BdLmZpbHRlclZhbHVlIHx8IHt9O1xuICAgICAgICAgIE9iamVjdC5rZXlzKHNhdmVkRmlsdGVyVmFsdWUpXG4gICAgICAgICAgICAuZmlsdGVyKHZhbHVlS2V5ID0+IHZhbHVlS2V5ICE9PSAncHJvcGVydHknKVxuICAgICAgICAgICAgLmZvckVhY2godmFsdWVLZXkgPT4gKChmaWx0ZXIgYXMgYW55KVt2YWx1ZUtleV0gPSB0aGlzLnBhcnNlRmlsdGVyVmFsdWUoc2F2ZWRGaWx0ZXJWYWx1ZVt2YWx1ZUtleV0pKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdERhdGFncmlkUGVyc2lzdGVyKCkge1xuICAgIC8vIGRlbGF5IGlzIG5lZWRlZCwgYXMgb25EZXN0cm95IHRoZSBmaWx0ZXJzIGVtaXQgZW1wdHkgdmFsdWVzLlxuICAgIC8vIFNvIGRlbGF5IGl0IHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgY3ljbGUsIHNvIHRoZSBkaXJlY3RpdmUgaXMgYWxzbyBkZXN0cm95ZWQgYmVmb3JlIGl0IGdldHMgdGhlIG5leHQgdmFsdWVzXG4gICAgdGhpcy5kYXRhZ3JpZC5yZWZyZXNoLnBpcGUoZGVsYXkoMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGRnU3RhdGUgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFZvbGF0aWxlRGF0YVN0YXRlKCk7XG5cbiAgICAgIHN0YXRlLmN1cnJlbnRQYWdlID0gZGdTdGF0ZS5wYWdlPy5jdXJyZW50O1xuICAgICAgc3RhdGUuY29sdW1ucyA9IHN0YXRlLmNvbHVtbnMgfHwge307XG4gICAgICBPYmplY3Qua2V5cyhzdGF0ZS5jb2x1bW5zKS5mb3JFYWNoKHByb3AgPT4gKHN0YXRlLmNvbHVtbnNbcHJvcF0uZmlsdGVyVmFsdWUgPSB1bmRlZmluZWQpKTtcbiAgICAgIGRnU3RhdGUuZmlsdGVycz8uZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0RmlsdGVyUHJvcGVydHlOYW1lKGZpbHRlcik7XG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIHN0YXRlLmNvbHVtbnNbcHJvcGVydHldID0gc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0gfHwge307XG4gICAgICAgICAgc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0uZmlsdGVyVmFsdWUgPSB0aGlzLmVucmljaEZpbHRlclZhbHVlKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAodGhpcy51c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5zZXRJdGVtKHRoaXMub3B0aW9ucy5rZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gICAgICBpZiAodGhpcy5jYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFncmlkLml0ZW1zLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlUGFnaW5hdGlvbkRlc2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRpb24gZGVzY3JpcHRpb24gbXVzdCBiZSBzZXQgYnkgdGhpcyBkaXJlY3RpdmUsXG4gICAqIG90aGVyd2lzZSB3ZSBjYW4ndCB1cGRhdGUgZGF0YWdyaWQgdmFsdWVzIGZyb20gbG9jYWxTdG9yYWdlXG4gICAqIHdpdGhvdXQgZ2V0dGluZyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVBhZ2luYXRpb25EZXNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uRWxlbSAmJiB0aGlzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25EZXNjRWxlbSA9ICg8SFRNTEVsZW1lbnQ+dGhpcy5wYWdpbmF0aW9uRWxlbS5uYXRpdmVFbGVtZW50KS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgICAncGFnaW5hdGlvbi1kZXNjcmlwdGlvbidcbiAgICAgICk/LlswXTtcbiAgICAgIGlmIChwYWdpbmF0aW9uRGVzY0VsZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLndhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gJiYgcGFnaW5hdGlvbkRlc2NFbGVtLnRleHRDb250ZW50LnRyaW0oKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ1doZW4gdXNpbmcgY2xyU3RhdGVQZXJzaXN0ZW5jZUtleSBkaXJlY3RpdmUsIHlvdSBzaG91bGQgbm90IHVzZSBjdXN0b20gcGFnaW5hdGlvbiBkZXNjcmlwdGlvbicgK1xuICAgICAgICAgICAgICAnIGluc2lkZSBwYWdpbmF0aW9uIGNvbXBvbmVudCBjb250ZW50LCBidXQgdXNlIFtjbHJQYWdpbmF0aW9uRGVzY3JpcHRpb25dIG9uIGNsci1kYXRhZ3JpZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2FybmVkQWJvdXRDdXN0b21EZXNjcmlwdGlvbiA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZXNjcmlwdGlvbikge1xuICAgICAgICAgIHBhZ2luYXRpb25EZXNjRWxlbS50ZXh0Q29udGVudCA9IHRoaXMucGFnaW5hdGlvbkRlc2NyaXB0aW9uXG4gICAgICAgICAgICAucmVwbGFjZSgne3tmaXJzdH19JywgKHRoaXMucGFnaW5hdGlvbi5maXJzdEl0ZW0gKyAxKS50b1N0cmluZygpKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7bGFzdH19JywgKHRoaXMucGFnaW5hdGlvbi5sYXN0SXRlbSArIDEpLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAucmVwbGFjZSgne3t0b3RhbH19JywgdGhpcy5wYWdpbmF0aW9uLnRvdGFsSXRlbXMudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RhdGUgb2Ygdm9sYXRpbGUgZGF0YS4gVGhpcyBjYW4gYmUgaW5mbHVlbmNlZCBieSBjbHJVc2VMb2NhbFN0b3JlT25seS5cbiAgICovXG4gIGdldFZvbGF0aWxlRGF0YVN0YXRlKCk6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSgodGhpcy51c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5nZXRJdGVtKHRoaXMub3B0aW9ucy5rZXkpKSB8fCB7fTtcbiAgfVxuXG4gIGdldExvY2FsU3RvcmFnZVN0YXRlKCk6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5KSkgfHwge307XG4gIH1cblxuICAvKipcbiAgICogQXMgYSBkYXRlIGlzIHNlcmlhbGl6ZWQgYXMgc3RyaW5nLCBidXQgbm90IGRlc2VyaWFsaXplZCBhcyBkYXRlXG4gICAqIHdlIG5lZWQgdG8gYWRkIHNvbWUgbWV0YSBpbmZvcm1hdGlvbiB0byBkbyB0aGF0IG1hbnVhbGx5IGxhdGVyXG4gICAqL1xuICBwcml2YXRlIGVucmljaEZpbHRlclZhbHVlKGZpbHRlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgIE9iamVjdC5rZXlzKGZpbHRlcikuZm9yRWFjaChcbiAgICAgIGtleSA9PlxuICAgICAgICAocmVzdWx0W2tleV0gPVxuICAgICAgICAgIGZpbHRlcltrZXldIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IERBVEVfVFlQRSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyW2tleV0sXG4gICAgICAgICAgICAgIH0gYXMgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEpXG4gICAgICAgICAgICA6IGZpbHRlcltrZXldKVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGZpbHRlciB2YWx1ZXMgd2l0aCBtZXRhIGluZm9ybWF0aW9uIGxpa2UgZGF0ZSwgd2hpY2ggbmVlZHMgbWFudWFsIGRlc2VyaWFsaXphdGlvbiB0byBhIGRhdGUgb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIHBhcnNlRmlsdGVyVmFsdWUodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgICByZXR1cm4gKHZhbHVlIGFzIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhKT8udHlwZSA9PT0gREFURV9UWVBFXG4gICAgICA/IG5ldyBEYXRlKCh2YWx1ZSBhcyBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSkudmFsdWUgYXMgc3RyaW5nKVxuICAgICAgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyKHByb3A6IHN0cmluZyk6IENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlPHVua25vd24sIHVua25vd24+IHtcbiAgICAvLyBnZXQgZGVmYXVsdCBmaWx0ZXIgb3IgY3VzdG9tIGZpbHRlclxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmRhdGFncmlkLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBwcm9wKT8uZmlsdGVyIHx8XG4gICAgICB0aGlzLmN1c3RvbUZpbHRlcnMuZmluZChmaWx0ZXIgPT4gdGhpcy5nZXRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyLmZpbHRlcikgPT09IHByb3ApPy5maWx0ZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTx1bmtub3duLCB1bmtub3duPik6IHN0cmluZyB7XG4gICAgLy8gZm9yIE5lc3RlZFByb3BlcnR5IHdlIG5lZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eVxuICAgIGNvbnN0IGZpbHRlcldpdGhQcm9wID0gZmlsdGVyIGFzIHVua25vd24gYXMgeyBwcm9wZXJ0eTogdW5rbm93biB9O1xuICAgIHJldHVybiAoKGZpbHRlcldpdGhQcm9wLnByb3BlcnR5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucHJvcCB8fCBmaWx0ZXJXaXRoUHJvcC5wcm9wZXJ0eSkgYXMgc3RyaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uta2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGFncmlkL2RhdGFncmlkLXN0YXRlLXBlcnNpc3RlbmNlL3N0YXRlLXBlcnNpc3RlbmNlLWtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBRVgsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFFcEIsMEJBQTBCLEdBQzNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRzNDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQVV6QixNQUFNLE9BQU8sNEJBQTRCO0lBOEJ2QyxZQUFvQixRQUFxQjtRQUFyQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBbEJ6QyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBVzNCLGlDQUE0QixHQUFHLEtBQUssQ0FBQztRQUNyQyxpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFYSxDQUFDO0lBRTdDLGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO2FBQU07WUFDTCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZ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QUlqQyxVQUFVO3NCQURULFlBQVk7dUJBQUMscUJBQXFCO2dCQUluQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl6RCxhQUFhO3NCQURaLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENsckRhdGFncmlkLFxuICBDbHJEYXRhZ3JpZENvbXBhcmF0b3JJbnRlcmZhY2UsXG4gIENsckRhdGFncmlkRmlsdGVyLFxuICBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZSxcbiAgQ2xyRGF0YWdyaWRQYWdpbmF0aW9uLFxuICBDbHJEYXRhZ3JpZFNvcnRPcmRlcixcbiAgQ2xyRGF0YWdyaWRTdGF0ZUludGVyZmFjZSxcbiAgRGF0YWdyaWRQcm9wZXJ0eUNvbXBhcmF0b3IsXG59IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZFN0YXRlUGVyc2lzdGVuY2VNb2RlbCB9IGZyb20gJy4vZGF0YWdyaWQtc3RhdGUtcGVyc2lzdGVuY2UtbW9kZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IGRlbGF5LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucyB9IGZyb20gJy4vc3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5jb25zdCBEQVRFX1RZUEUgPSAnZGF0ZSc7XG5cbmludGVyZmFjZSBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSB7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5XScsXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRlUGVyc2lzdGVuY2VLZXlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGVyc2lzdGVuY2UuXG4gICAqICdLZXknIHJlcHJlc2VudHMgdGhlIGxvY2FsIHN0b3JhZ2Uga2V5IHVuZGVyIHdoaWNoIHRoZSBwZXJzaXN0ZW5jZSBzdGF0ZSBpcyBzdG9yZWQuXG4gICAqXG4gICAqIE9wdGlvbmFsIGZpZWxkcyB3aXRoIHRoZSAncGVyc2lzdCcgcHJlZml4IHRvZ2dsZSB0aGUgcGVyc2lzdGVuY2Ugb2YgdGhlIHJlc3BlY3RpdmUgZGF0YWdyaWQgZnVuY3Rpb25hbGl0eSxcbiAgICogdGhlIGRlZmF1bHQgdmFsdWUgaXMgYWx3YXlzICd0cnVlJy5cbiAgICovXG4gIEBJbnB1dCgnY2xyU3RhdGVQZXJzaXN0ZW5jZUtleScpXG4gIG9wdGlvbnM6IFN0YXRlUGVyc2lzdGVuY2VPcHRpb25zO1xuXG4gIEBJbnB1dCgnY2xyVXNlTG9jYWxTdG9yZU9ubHknKVxuICB1c2VMb2NhbFN0b3JlT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnY2xyUGFnaW5hdGlvbkRlc2NyaXB0aW9uJylcbiAgcGFnaW5hdGlvbkRlc2NyaXB0aW9uID0gJyc7XG5cbiAgQENvbnRlbnRDaGlsZChDbHJEYXRhZ3JpZFBhZ2luYXRpb24pXG4gIHBhZ2luYXRpb246IENsckRhdGFncmlkUGFnaW5hdGlvbjtcblxuICBAQ29udGVudENoaWxkKENsckRhdGFncmlkUGFnaW5hdGlvbiwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHBhZ2luYXRpb25FbGVtOiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ2xyRGF0YWdyaWRGaWx0ZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY3VzdG9tRmlsdGVyczogUXVlcnlMaXN0PENsckRhdGFncmlkRmlsdGVyPjtcblxuICBjYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uID0gZmFsc2U7XG4gIHdhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gPSBmYWxzZTtcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YWdyaWQ6IENsckRhdGFncmlkKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlcnZlckRyaXZlbikge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBjb25zdCB2b2xhdGlsZURhdGFTdGF0ZSA9IHRoaXMuZ2V0Vm9sYXRpbGVEYXRhU3RhdGUoKTtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2VTdGF0ZSA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlU3RhdGUoKTtcblxuICAgIHRoaXMuaW5pdEZpbHRlcih2b2xhdGlsZURhdGFTdGF0ZSk7XG4gICAgdGhpcy5pbml0U29ydGluZyhsb2NhbFN0b3JhZ2VTdGF0ZSk7XG4gICAgdGhpcy5pbml0RGF0YWdyaWRQZXJzaXN0ZXIoKTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFBhZ2luYXRpb24gPz8gdHJ1ZTtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uPy5wYWdlICYmIHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuaW5pdFBhZ2VTaXplUGVyc2lzdGVyKGxvY2FsU3RvcmFnZVN0YXRlKTtcbiAgICAgIHRoaXMuaW5pdEN1cnJlbnRQYWdlKHZvbGF0aWxlRGF0YVN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5jYW5TaG93UGFnaW5hdGlvbkRlc2NyaXB0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXRoIHRoaXMgbWV0aG9kIGZpbHRlcnMgY2FuIGJlIGNsZWFyZWRcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IGZvciBjbHJTdGF0ZVBlcnNpc3RlbmNlS2V5XG4gICAqIEBwYXJhbSB1c2VMb2NhbFN0b3JlT25seSBUaGUgY2xyVXNlTG9jYWxTdG9yZU9ubHkgaW5kaWNhdG9yXG4gICAqL1xuICBzdGF0aWMgY2xlYXJGaWx0ZXJzKGtleTogc3RyaW5nLCB1c2VMb2NhbFN0b3JlT25seTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKCh1c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5nZXRJdGVtKGtleSkpIHx8IHt9O1xuICAgIGRhdGEuY29sdW1ucyA9IHt9O1xuICAgICh1c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UGFnZVNpemVQZXJzaXN0ZXIoc2F2ZWRTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwpIHtcbiAgICAvKiBwZXJzaXN0IHBhZ2Ugc2l6ZSBjaGFuZ2VzIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICB0aGlzLnBhZ2luYXRpb24ucGFnZS5zaXplQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUocGFnZVNpemUgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldExvY2FsU3RvcmFnZVN0YXRlKCk7XG4gICAgICBzdGF0ZS5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vcHRpb25zLmtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgICB9KTtcblxuICAgIC8qIGluaXQgcGFnZSBzaXplIG9mIGRhdGFncmlkIGlmIGFscmVhZHkgcGVyc2lzdGVkIGluIGxvY2FsIHN0b3JhZ2UgKi9cbiAgICBpZiAoc2F2ZWRTdGF0ZS5wYWdlU2l6ZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2Uuc2l6ZSA9IHNhdmVkU3RhdGUucGFnZVNpemU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q3VycmVudFBhZ2Uoc2F2ZWRTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwpIHtcbiAgICAvKiBpbml0IGN1cnJlbnQgcGFnZSBvZiBkYXRhZ3JpZCBpZiBhbHJlYWR5IHBlcnNpc3RlZCAqL1xuICAgIGlmIChzYXZlZFN0YXRlPy5jdXJyZW50UGFnZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2UuY3VycmVudCA9IHNhdmVkU3RhdGUuY3VycmVudFBhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0RmlsdGVyKHNhdmVkU3RhdGU6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyUGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RGaWx0ZXJzID8/IHRydWU7XG4gICAgaWYgKHNhdmVkU3RhdGUuY29sdW1ucyAmJiBmaWx0ZXJQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUuY29sdW1ucykuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIocHJvcCk7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlclZhbHVlID0gc2F2ZWRTdGF0ZS5jb2x1bW5zW3Byb3BdLmZpbHRlclZhbHVlIHx8IHt9O1xuICAgICAgICAgIE9iamVjdC5rZXlzKHNhdmVkRmlsdGVyVmFsdWUpXG4gICAgICAgICAgICAuZmlsdGVyKHZhbHVlS2V5ID0+IHZhbHVlS2V5ICE9PSAncHJvcGVydHknKVxuICAgICAgICAgICAgLmZvckVhY2godmFsdWVLZXkgPT4gKChmaWx0ZXIgYXMgYW55KVt2YWx1ZUtleV0gPSB0aGlzLnBhcnNlRmlsdGVyVmFsdWUoc2F2ZWRGaWx0ZXJWYWx1ZVt2YWx1ZUtleV0pKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNvcnRpbmcoc2F2ZWRTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZVBlcnNpc3RlbmNlTW9kZWwpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0UGVyc2lzdGVuY2VFbmFibGVkID0gdGhpcy5vcHRpb25zLnBlcnNpc3RTb3J0ID8/IHRydWU7XG4gICAgaWYgKHNhdmVkU3RhdGUuc29ydEJ5ICYmIHNvcnRQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZGF0YWdyaWQuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdldFNvcnRQcm9wZXJ0eShjb2x1bW4uc29ydEJ5KSA9PT0gc2F2ZWRTdGF0ZS5zb3J0QnkpIHtcbiAgICAgICAgICBjb2x1bW4uc29ydE9yZGVyID0gc2F2ZWRTdGF0ZS5zb3J0UmV2ZXJzZSA/IENsckRhdGFncmlkU29ydE9yZGVyLkRFU0MgOiBDbHJEYXRhZ3JpZFNvcnRPcmRlci5BU0M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sdW1uLnNvcnRPcmRlciA9IENsckRhdGFncmlkU29ydE9yZGVyLlVOU09SVEVEO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXREYXRhZ3JpZFBlcnNpc3RlcigpIHtcbiAgICAvLyBkZWxheSBpcyBuZWVkZWQsIGFzIG9uRGVzdHJveSB0aGUgZmlsdGVycyBlbWl0IGVtcHR5IHZhbHVlcy5cbiAgICAvLyBTbyBkZWxheSBpdCB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGN5Y2xlLCBzbyB0aGUgZGlyZWN0aXZlIGlzIGFsc28gZGVzdHJveWVkIGJlZm9yZSBpdCBnZXRzIHRoZSBuZXh0IHZhbHVlc1xuICAgIHRoaXMuZGF0YWdyaWQucmVmcmVzaC5waXBlKGRlbGF5KDApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShkZ1N0YXRlID0+IHtcbiAgICAgIHRoaXMucGVyc2lzdEZpbHRlcnNBbmRDdXJyZW50UGFnZShkZ1N0YXRlKTtcbiAgICAgIHRoaXMucGVyc2lzdFNvcnRpbmcoZGdTdGF0ZSk7XG5cbiAgICAgIGlmICh0aGlzLmNhblNob3dQYWdpbmF0aW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uRGVzY3JpcHRpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YWdyaWQuaXRlbXMuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVQYWdpbmF0aW9uRGVzY3JpcHRpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIHBlcnNpc3RGaWx0ZXJzQW5kQ3VycmVudFBhZ2UoZGdTdGF0ZTogQ2xyRGF0YWdyaWRTdGF0ZUludGVyZmFjZTx1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlclBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0RmlsdGVycyA/PyB0cnVlO1xuICAgIGNvbnN0IHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMucGVyc2lzdFBhZ2luYXRpb24gPz8gdHJ1ZTtcblxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRWb2xhdGlsZURhdGFTdGF0ZSgpO1xuICAgIHN0YXRlLmNvbHVtbnMgPSBzdGF0ZS5jb2x1bW5zIHx8IHt9O1xuXG4gICAgaWYgKHBhZ2luYXRpb25QZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIHN0YXRlLmN1cnJlbnRQYWdlID0gZGdTdGF0ZS5wYWdlPy5jdXJyZW50O1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJQZXJzaXN0ZW5jZUVuYWJsZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHN0YXRlLmNvbHVtbnMpLmZvckVhY2gocHJvcCA9PiAoc3RhdGUuY29sdW1uc1twcm9wXS5maWx0ZXJWYWx1ZSA9IHVuZGVmaW5lZCkpO1xuICAgICAgZGdTdGF0ZS5maWx0ZXJzPy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5nZXRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyKTtcbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgc3RhdGUuY29sdW1uc1twcm9wZXJ0eV0gPSBzdGF0ZS5jb2x1bW5zW3Byb3BlcnR5XSB8fCB7fTtcbiAgICAgICAgICBzdGF0ZS5jb2x1bW5zW3Byb3BlcnR5XS5maWx0ZXJWYWx1ZSA9IHRoaXMuZW5yaWNoRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgKHRoaXMudXNlTG9jYWxTdG9yZU9ubHkgPyBsb2NhbFN0b3JhZ2UgOiBzZXNzaW9uU3RvcmFnZSkuc2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0U29ydGluZyhkZ1N0YXRlOiBDbHJEYXRhZ3JpZFN0YXRlSW50ZXJmYWNlPHVua25vd24+KTogdm9pZCB7XG4gICAgY29uc3Qgc29ydFBlcnNpc3RlbmNlRW5hYmxlZCA9IHRoaXMub3B0aW9ucy5wZXJzaXN0U29ydCA/PyB0cnVlO1xuICAgIGlmIChzb3J0UGVyc2lzdGVuY2VFbmFibGVkKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlU3RhdGUoKTtcbiAgICAgIHN0YXRlLnNvcnRCeSA9IHRoaXMuZ2V0U29ydFByb3BlcnR5KGRnU3RhdGUuc29ydD8uYnkpO1xuICAgICAgc3RhdGUuc29ydFJldmVyc2UgPSBkZ1N0YXRlLnNvcnQ/LnJldmVyc2U7XG5cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMub3B0aW9ucy5rZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRpb24gZGVzY3JpcHRpb24gbXVzdCBiZSBzZXQgYnkgdGhpcyBkaXJlY3RpdmUsXG4gICAqIG90aGVyd2lzZSB3ZSBjYW4ndCB1cGRhdGUgZGF0YWdyaWQgdmFsdWVzIGZyb20gbG9jYWxTdG9yYWdlXG4gICAqIHdpdGhvdXQgZ2V0dGluZyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVBhZ2luYXRpb25EZXNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uRWxlbSAmJiB0aGlzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25EZXNjRWxlbSA9ICg8SFRNTEVsZW1lbnQ+dGhpcy5wYWdpbmF0aW9uRWxlbS5uYXRpdmVFbGVtZW50KS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgICAncGFnaW5hdGlvbi1kZXNjcmlwdGlvbidcbiAgICAgICk/LlswXTtcbiAgICAgIGlmIChwYWdpbmF0aW9uRGVzY0VsZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLndhcm5lZEFib3V0Q3VzdG9tRGVzY3JpcHRpb24gJiYgcGFnaW5hdGlvbkRlc2NFbGVtLnRleHRDb250ZW50LnRyaW0oKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ1doZW4gdXNpbmcgY2xyU3RhdGVQZXJzaXN0ZW5jZUtleSBkaXJlY3RpdmUsIHlvdSBzaG91bGQgbm90IHVzZSBjdXN0b20gcGFnaW5hdGlvbiBkZXNjcmlwdGlvbicgK1xuICAgICAgICAgICAgICAnIGluc2lkZSBwYWdpbmF0aW9uIGNvbXBvbmVudCBjb250ZW50LCBidXQgdXNlIFtjbHJQYWdpbmF0aW9uRGVzY3JpcHRpb25dIG9uIGNsci1kYXRhZ3JpZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2FybmVkQWJvdXRDdXN0b21EZXNjcmlwdGlvbiA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25EZXNjcmlwdGlvbikge1xuICAgICAgICAgIHBhZ2luYXRpb25EZXNjRWxlbS50ZXh0Q29udGVudCA9IHRoaXMucGFnaW5hdGlvbkRlc2NyaXB0aW9uXG4gICAgICAgICAgICAucmVwbGFjZSgne3tmaXJzdH19JywgKHRoaXMucGFnaW5hdGlvbi5maXJzdEl0ZW0gKyAxKS50b1N0cmluZygpKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ3t7bGFzdH19JywgKHRoaXMucGFnaW5hdGlvbi5sYXN0SXRlbSArIDEpLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAucmVwbGFjZSgne3t0b3RhbH19JywgdGhpcy5wYWdpbmF0aW9uLnRvdGFsSXRlbXMudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RhdGUgb2Ygdm9sYXRpbGUgZGF0YS4gVGhpcyBjYW4gYmUgaW5mbHVlbmNlZCBieSBjbHJVc2VMb2NhbFN0b3JlT25seS5cbiAgICovXG4gIGdldFZvbGF0aWxlRGF0YVN0YXRlKCk6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSgodGhpcy51c2VMb2NhbFN0b3JlT25seSA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5nZXRJdGVtKHRoaXMub3B0aW9ucy5rZXkpKSB8fCB7fTtcbiAgfVxuXG4gIGdldExvY2FsU3RvcmFnZVN0YXRlKCk6IENsckRhdGFncmlkU3RhdGVQZXJzaXN0ZW5jZU1vZGVsIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLm9wdGlvbnMua2V5KSkgfHwge307XG4gIH1cblxuICAvKipcbiAgICogQXMgYSBkYXRlIGlzIHNlcmlhbGl6ZWQgYXMgc3RyaW5nLCBidXQgbm90IGRlc2VyaWFsaXplZCBhcyBkYXRlXG4gICAqIHdlIG5lZWQgdG8gYWRkIHNvbWUgbWV0YSBpbmZvcm1hdGlvbiB0byBkbyB0aGF0IG1hbnVhbGx5IGxhdGVyXG4gICAqL1xuICBwcml2YXRlIGVucmljaEZpbHRlclZhbHVlKGZpbHRlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgIE9iamVjdC5rZXlzKGZpbHRlcikuZm9yRWFjaChcbiAgICAgIGtleSA9PlxuICAgICAgICAocmVzdWx0W2tleV0gPVxuICAgICAgICAgIGZpbHRlcltrZXldIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IERBVEVfVFlQRSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyW2tleV0sXG4gICAgICAgICAgICAgIH0gYXMgRmlsdGVyVmFsdWVXaXRoTWV0YWRhdGEpXG4gICAgICAgICAgICA6IGZpbHRlcltrZXldKVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGZpbHRlciB2YWx1ZXMgd2l0aCBtZXRhIGluZm9ybWF0aW9uIGxpa2UgZGF0ZSwgd2hpY2ggbmVlZHMgbWFudWFsIGRlc2VyaWFsaXphdGlvbiB0byBhIGRhdGUgb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIHBhcnNlRmlsdGVyVmFsdWUodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgICByZXR1cm4gKHZhbHVlIGFzIEZpbHRlclZhbHVlV2l0aE1ldGFkYXRhKT8udHlwZSA9PT0gREFURV9UWVBFXG4gICAgICA/IG5ldyBEYXRlKCh2YWx1ZSBhcyBGaWx0ZXJWYWx1ZVdpdGhNZXRhZGF0YSkudmFsdWUgYXMgc3RyaW5nKVxuICAgICAgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyKHByb3A6IHN0cmluZyk6IENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlPHVua25vd24sIHVua25vd24+IHtcbiAgICAvLyBnZXQgZGVmYXVsdCBmaWx0ZXIgb3IgY3VzdG9tIGZpbHRlclxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmRhdGFncmlkLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBwcm9wKT8uZmlsdGVyIHx8XG4gICAgICB0aGlzLmN1c3RvbUZpbHRlcnMuZmluZChmaWx0ZXIgPT4gdGhpcy5nZXRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyLmZpbHRlcikgPT09IHByb3ApPy5maWx0ZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTx1bmtub3duLCB1bmtub3duPik6IHN0cmluZyB7XG4gICAgLy8gZm9yIE5lc3RlZFByb3BlcnR5IHdlIG5lZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eVxuICAgIGNvbnN0IGZpbHRlcldpdGhQcm9wID0gZmlsdGVyIGFzIHVua25vd24gYXMgeyBwcm9wZXJ0eTogdW5rbm93biB9O1xuICAgIHJldHVybiAoKGZpbHRlcldpdGhQcm9wLnByb3BlcnR5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucHJvcCB8fCBmaWx0ZXJXaXRoUHJvcC5wcm9wZXJ0eSkgYXMgc3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTb3J0UHJvcGVydHkoc29ydEJ5OiBDbHJEYXRhZ3JpZENvbXBhcmF0b3JJbnRlcmZhY2U8dW5rbm93bj4gfCBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChzb3J0QnkpIHtcbiAgICAgIGlmICh0eXBlb2Ygc29ydEJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gc29ydEJ5O1xuICAgICAgfVxuICAgICAgaWYgKHNvcnRCeSBpbnN0YW5jZW9mIERhdGFncmlkUHJvcGVydHlDb21wYXJhdG9yKSB7XG4gICAgICAgIHJldHVybiBzb3J0QnkucHJvcDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRhZ3JpZC9kYXRhZ3JpZC1zdGF0ZS1wZXJzaXN0ZW5jZS9zdGF0ZS1wZXJzaXN0ZW5jZS1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTdGF0ZVBlcnNpc3RlbmNlT3B0aW9ucyB7XG4gIGtleTogc3RyaW5nO1xuICBzZXJ2ZXJEcml2ZW46IGJvb2xlYW47XG4gIHBlcnNpc3RGaWx0ZXJzPzogYm9vbGVhbjtcbiAgcGVyc2lzdFBhZ2luYXRpb24/OiBib29sZWFuO1xuICBwZXJzaXN0U29ydD86IGJvb2xlYW47XG4gIHBlcnNpc3RIaWRkZW5Db2x1bW5zPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ export const USER_INPUT_REGEX = /\d+/g;
2
+ // https://en.wikipedia.org/wiki/Date_format_by_country
3
+ export const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;
4
+ export const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;
5
+ export const DELIMITER_REGEX = /d+|m+|y+/i;
6
+ export const YEAR = 'YYYY';
7
+ export const MONTH = 'MM';
8
+ export const DATE = 'DD';
9
+ export const LITTLE_ENDIAN = {
10
+ name: 'LITTLE_ENDIAN',
11
+ format: [DATE, MONTH, YEAR],
12
+ };
13
+ export const MIDDLE_ENDIAN = {
14
+ name: 'MIDDLE_ENDIAN',
15
+ format: [MONTH, DATE, YEAR],
16
+ };
17
+ export const BIG_ENDIAN = {
18
+ name: 'BIG_ENDIAN',
19
+ format: [YEAR, MONTH, DATE],
20
+ };
21
+ /** Default separator text. */
22
+ export const SEPARATOR_TEXT_DEFAULT = ' - ';
23
+ export const TRANSLATIONS = {
24
+ from: 'From',
25
+ to: 'To',
26
+ };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2UuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztBQUV2Qyx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQztBQUMxQixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBU3pCLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMkI7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMkI7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBMkI7SUFDaEQsSUFBSSxFQUFFLFlBQVk7SUFDbEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7Q0FDNUIsQ0FBQztBQUVGLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLElBQUksRUFBRSxNQUFNO0lBQ1osRUFBRSxFQUFFLElBQUk7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFVTRVJfSU5QVVRfUkVHRVggPSAvXFxkKy9nO1xuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG5leHBvcnQgY29uc3QgTElUVExFX0VORElBTl9SRUdFWCA9IC9kKy4rbSsuK3krL2k7XG5leHBvcnQgY29uc3QgTUlERExFX0VORElBTl9SRUdFWCA9IC9tKy4rZCsuK3krL2k7XG5cbmV4cG9ydCBjb25zdCBERUxJTUlURVJfUkVHRVggPSAvZCt8bSt8eSsvaTtcblxuZXhwb3J0IGNvbnN0IFlFQVIgPSAnWVlZWSc7XG5leHBvcnQgY29uc3QgTU9OVEggPSAnTU0nO1xuZXhwb3J0IGNvbnN0IERBVEUgPSAnREQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXRUeXBlID0gJ0xJVFRMRV9FTkRJQU4nIHwgJ01JRERMRV9FTkRJQU4nIHwgJ0JJR19FTkRJQU4nO1xuXG5leHBvcnQgdHlwZSBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICByZWFkb25seSBuYW1lOiBGb3JtYXRUeXBlO1xuICByZWFkb25seSBmb3JtYXQ6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXTtcbn07XG5cbmV4cG9ydCBjb25zdCBMSVRUTEVfRU5ESUFOOiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICBuYW1lOiAnTElUVExFX0VORElBTicsXG4gIGZvcm1hdDogW0RBVEUsIE1PTlRILCBZRUFSXSxcbn07XG5cbmV4cG9ydCBjb25zdCBNSURETEVfRU5ESUFOOiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICBuYW1lOiAnTUlERExFX0VORElBTicsXG4gIGZvcm1hdDogW01PTlRILCBEQVRFLCBZRUFSXSxcbn07XG5cbmV4cG9ydCBjb25zdCBCSUdfRU5ESUFOOiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0ID0ge1xuICBuYW1lOiAnQklHX0VORElBTicsXG4gIGZvcm1hdDogW1lFQVIsIE1PTlRILCBEQVRFXSxcbn07XG5cbi8qKiBEZWZhdWx0IHNlcGFyYXRvciB0ZXh0LiAqL1xuZXhwb3J0IGNvbnN0IFNFUEFSQVRPUl9URVhUX0RFRkFVTFQgPSAnIC0gJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TTEFUSU9OUyA9IHtcbiAgZnJvbTogJ0Zyb20nLFxuICB0bzogJ1RvJyxcbn07XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ClarityModule, ClrDatepickerModule, ClrIconModule } from '@clr/angular';
5
+ import { ClrDatepickerComponent } from './directives/datepicker/datepicker.component';
6
+ import { ClrDaterangepickerContainerComponent } from './directives/daterangepicker-container/daterangepicker-container.component';
7
+ import { ClrDaterangepickerDirective } from './directives/daterangepicker/daterangepicker.directive';
8
+ import { ClrIfDaterangeErrorDirective } from './directives/if-daterange-error.directive';
9
+ import { ClrDaterangeMaxValidator } from './validators/daterange-max.validator';
10
+ import { ClrDaterangeMinValidator } from './validators/daterange-min.validator';
11
+ import { ClrDaterangeOrderValidator } from './validators/daterange-order.validator';
12
+ import { ClrDaterangeRequiredValidator } from './validators/daterange-required.validator';
13
+ import * as i0 from "@angular/core";
14
+ export class ClrDaterangepickerModule {
15
+ }
16
+ ClrDaterangepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
+ ClrDaterangepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, declarations: [ClrDatepickerComponent,
18
+ ClrDaterangeMaxValidator,
19
+ ClrDaterangeMinValidator,
20
+ ClrDaterangeOrderValidator,
21
+ ClrDaterangepickerContainerComponent,
22
+ ClrDaterangepickerDirective,
23
+ ClrDaterangeRequiredValidator,
24
+ ClrIfDaterangeErrorDirective], imports: [CommonModule, FormsModule, ClarityModule, ClrDatepickerModule, ClrIconModule], exports: [ClrDaterangeMaxValidator,
25
+ ClrDaterangeMinValidator,
26
+ ClrDaterangeOrderValidator,
27
+ ClrDaterangepickerContainerComponent,
28
+ ClrDaterangepickerDirective,
29
+ ClrDaterangeRequiredValidator,
30
+ ClrIfDaterangeErrorDirective] });
31
+ ClrDaterangepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, imports: [CommonModule, FormsModule, ClarityModule, ClrDatepickerModule, ClrIconModule] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDaterangepickerModule, decorators: [{
33
+ type: NgModule,
34
+ args: [{
35
+ imports: [CommonModule, FormsModule, ClarityModule, ClrDatepickerModule, ClrIconModule],
36
+ declarations: [
37
+ ClrDatepickerComponent,
38
+ ClrDaterangeMaxValidator,
39
+ ClrDaterangeMinValidator,
40
+ ClrDaterangeOrderValidator,
41
+ ClrDaterangepickerContainerComponent,
42
+ ClrDaterangepickerDirective,
43
+ ClrDaterangeRequiredValidator,
44
+ ClrIfDaterangeErrorDirective,
45
+ ],
46
+ entryComponents: [ClrDatepickerComponent],
47
+ exports: [
48
+ ClrDaterangeMaxValidator,
49
+ ClrDaterangeMinValidator,
50
+ ClrDaterangeOrderValidator,
51
+ ClrDaterangepickerContainerComponent,
52
+ ClrDaterangepickerDirective,
53
+ ClrDaterangeRequiredValidator,
54
+ ClrIfDaterangeErrorDirective,
55
+ ],
56
+ }]
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUF5QjFGLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFwQmpDLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDBCQUEwQjtRQUMxQixvQ0FBb0M7UUFDcEMsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3Qiw0QkFBNEIsYUFUcEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxhQWFwRix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDBCQUEwQjtRQUMxQixvQ0FBb0M7UUFDcEMsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3Qiw0QkFBNEI7c0hBR25CLHdCQUF3QixZQXRCekIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYTsyRkFzQjNFLHdCQUF3QjtrQkF2QnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxDQUFDO29CQUN2RixZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQixvQ0FBb0M7d0JBQ3BDLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7cUJBQzdCO29CQUNELGVBQWUsRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUN6QyxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLDBCQUEwQjt3QkFDMUIsb0NBQW9DO3dCQUNwQywyQkFBMkI7d0JBQzNCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3FCQUM3QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDbGFyaXR5TW9kdWxlLCBDbHJEYXRlcGlja2VyTW9kdWxlLCBDbHJJY29uTW9kdWxlIH0gZnJvbSAnQGNsci9hbmd1bGFyJztcblxuaW1wb3J0IHsgQ2xyRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aXZlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENsckRhdGVyYW5nZXBpY2tlckNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aXZlcy9kYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyL2RhdGVyYW5nZXBpY2tlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENsckRhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbHJJZkRhdGVyYW5nZUVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2lmLWRhdGVyYW5nZS1lcnJvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xyRGF0ZXJhbmdlTWF4VmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2RhdGVyYW5nZS1tYXgudmFsaWRhdG9yJztcbmltcG9ydCB7IENsckRhdGVyYW5nZU1pblZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9kYXRlcmFuZ2UtbWluLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBDbHJEYXRlcmFuZ2VPcmRlclZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9kYXRlcmFuZ2Utb3JkZXIudmFsaWRhdG9yJztcbmltcG9ydCB7IENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2RhdGVyYW5nZS1yZXF1aXJlZC52YWxpZGF0b3InO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ2xhcml0eU1vZHVsZSwgQ2xyRGF0ZXBpY2tlck1vZHVsZSwgQ2xySWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENsckRhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgQ2xyRGF0ZXJhbmdlTWF4VmFsaWRhdG9yLFxuICAgIENsckRhdGVyYW5nZU1pblZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VPcmRlclZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VwaWNrZXJDb250YWluZXJDb21wb25lbnQsXG4gICAgQ2xyRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgIENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yLFxuICAgIENscklmRGF0ZXJhbmdlRXJyb3JEaXJlY3RpdmUsXG4gIF0sXG4gIGVudHJ5Q29tcG9uZW50czogW0NsckRhdGVwaWNrZXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbXG4gICAgQ2xyRGF0ZXJhbmdlTWF4VmFsaWRhdG9yLFxuICAgIENsckRhdGVyYW5nZU1pblZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VPcmRlclZhbGlkYXRvcixcbiAgICBDbHJEYXRlcmFuZ2VwaWNrZXJDb250YWluZXJDb21wb25lbnQsXG4gICAgQ2xyRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgIENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yLFxuICAgIENscklmRGF0ZXJhbmdlRXJyb3JEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVyYW5nZXBpY2tlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,104 @@
1
+ import { ContentChild, Directive, HostBinding, Optional } from '@angular/core';
2
+ import { ClrControlError, ClrControlHelper, ClrControlSuccess, ClrLabel, ClrLayout } from '@clr/angular';
3
+ import { DaterangeControlStateService } from '../providers/daterange-control-state.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@clr/angular";
6
+ import * as i2 from "../providers/daterange-control-state.service";
7
+ export class ClrAbstractContainer {
8
+ constructor(clrLayout, daterangeControlStateService) {
9
+ this.clrLayout = clrLayout;
10
+ this.daterangeControlStateService = daterangeControlStateService;
11
+ this.isFormControl = true;
12
+ }
13
+ /**
14
+ * Detect if container is not part of an vertical form to apply correct grid classes.
15
+ */
16
+ get addLayoutGrid() {
17
+ return !this.clrLayout?.layoutService?.isVertical();
18
+ }
19
+ /**
20
+ * Wether to show the helper control.
21
+ * @returns Wether to show the helper control.
22
+ */
23
+ get showHelper() {
24
+ if (this.controlHelperComponent == null) {
25
+ return false;
26
+ }
27
+ // Helper Component exist and the state of the form is NONE (not touched).
28
+ if (!this.daterangeControlStateService.touched) {
29
+ return true;
30
+ }
31
+ // Or there is no success component but the state of the form is VALID - show helper information.
32
+ if (this.controlSuccessComponent == null &&
33
+ this.daterangeControlStateService.touched &&
34
+ !this.daterangeControlStateService.invalid) {
35
+ return true;
36
+ }
37
+ // Or there is no error component but the state of the form is INVALID - show helper information.
38
+ if (this.controlErrorComponent == null && this.daterangeControlStateService.invalid) {
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+ /**
44
+ * Wether to show the valid control.
45
+ * @returns Wether to show the valid control.
46
+ */
47
+ get showValid() {
48
+ return !this.daterangeControlStateService.invalid && !!this.controlSuccessComponent;
49
+ }
50
+ /**
51
+ * Wether to show the invalid control.
52
+ * @returns Wether to show the invalid control.
53
+ */
54
+ get showInvalid() {
55
+ return this.daterangeControlStateService.invalid && !!this.controlErrorComponent;
56
+ }
57
+ /**
58
+ * Disabled state.
59
+ * @returns Disabled state.
60
+ */
61
+ get disabled() {
62
+ return this.daterangeControlStateService.disabled;
63
+ }
64
+ /**
65
+ * If control is focused.
66
+ * @returns Wether control is focused.
67
+ */
68
+ get focus() {
69
+ return this.daterangeControlStateService.focused;
70
+ }
71
+ /**
72
+ * Wether control is invalid.
73
+ * @returns Wether control is invalid.
74
+ */
75
+ get isInvalid() {
76
+ return this.daterangeControlStateService.invalid;
77
+ }
78
+ }
79
+ ClrAbstractContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrAbstractContainer, deps: [{ token: i1.ClrLayout, optional: true }, { token: i2.DaterangeControlStateService }], target: i0.ɵɵFactoryTarget.Directive });
80
+ ClrAbstractContainer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ClrAbstractContainer, host: { properties: { "class.clr-form-control": "this.isFormControl", "class.clr-row": "this.addLayoutGrid" } }, queries: [{ propertyName: "labelComponent", first: true, predicate: ClrLabel, descendants: true }, { propertyName: "controlHelperComponent", first: true, predicate: ClrControlHelper, descendants: true }, { propertyName: "controlErrorComponent", first: true, predicate: ClrControlError, descendants: true }, { propertyName: "controlSuccessComponent", first: true, predicate: ClrControlSuccess, descendants: true }], ngImport: i0 });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrAbstractContainer, decorators: [{
82
+ type: Directive
83
+ }], ctorParameters: function () { return [{ type: i1.ClrLayout, decorators: [{
84
+ type: Optional
85
+ }] }, { type: i2.DaterangeControlStateService }]; }, propDecorators: { isFormControl: [{
86
+ type: HostBinding,
87
+ args: ['class.clr-form-control']
88
+ }], addLayoutGrid: [{
89
+ type: HostBinding,
90
+ args: ['class.clr-row']
91
+ }], labelComponent: [{
92
+ type: ContentChild,
93
+ args: [ClrLabel]
94
+ }], controlHelperComponent: [{
95
+ type: ContentChild,
96
+ args: [ClrControlHelper]
97
+ }], controlErrorComponent: [{
98
+ type: ContentChild,
99
+ args: [ClrControlError]
100
+ }], controlSuccessComponent: [{
101
+ type: ContentChild,
102
+ args: [ClrControlSuccess]
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kaXJlY3RpdmVzL2Fic3RyYWN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFHNUYsTUFBTSxPQUFnQixvQkFBb0I7SUE0RnhDLFlBQ2lDLFNBQW9CLEVBQ2hDLDRCQUEwRDtRQUQ5QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2hDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUE3RnJCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBOEY1RSxDQUFDO0lBNUZKOztPQUVHO0lBQ0gsSUFDVyxhQUFhO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBWUQ7OztPQUdHO0lBQ0gsSUFBYyxVQUFVO1FBQ3RCLElBQUksSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxpR0FBaUc7UUFDakcsSUFDRSxJQUFJLENBQUMsdUJBQXVCLElBQUksSUFBSTtZQUNwQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTztZQUN6QyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQzFDO1lBQ0EsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELGlHQUFpRztRQUNqRyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRTtZQUNuRixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxTQUFTO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNuRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxLQUFLO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxTQUFTO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztJQUNuRCxDQUFDOztpSEExRm1CLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHVMQVkxQixRQUFRLHlGQUdSLGdCQUFnQix3RkFFaEIsZUFBZSwwRkFFZixpQkFBaUI7MkZBbkJYLG9CQUFvQjtrQkFEekMsU0FBUzs7MEJBOEZMLFFBQVE7dUZBNUYrQyxhQUFhO3NCQUF0RSxXQUFXO3VCQUFDLHdCQUF3QjtnQkFNMUIsYUFBYTtzQkFEdkIsV0FBVzt1QkFBQyxlQUFlO2dCQU1NLGNBQWM7c0JBQS9DLFlBQVk7dUJBQUMsUUFBUTtnQkFHb0Isc0JBQXNCO3NCQUEvRCxZQUFZO3VCQUFDLGdCQUFnQjtnQkFFVyxxQkFBcUI7c0JBQTdELFlBQVk7dUJBQUMsZUFBZTtnQkFFYyx1QkFBdUI7c0JBQWpFLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xyQ29udHJvbEVycm9yLCBDbHJDb250cm9sSGVscGVyLCBDbHJDb250cm9sU3VjY2VzcywgQ2xyTGFiZWwsIENsckxheW91dCB9IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5pbXBvcnQgeyBEYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGVyYW5nZS1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbHJBYnN0cmFjdENvbnRhaW5lciB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2xyLWZvcm0tY29udHJvbCcpIHByb3RlY3RlZCByZWFkb25seSBpc0Zvcm1Db250cm9sID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZWN0IGlmIGNvbnRhaW5lciBpcyBub3QgcGFydCBvZiBhbiB2ZXJ0aWNhbCBmb3JtIHRvIGFwcGx5IGNvcnJlY3QgZ3JpZCBjbGFzc2VzLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jbHItcm93JylcbiAgcHVibGljIGdldCBhZGRMYXlvdXRHcmlkKCkge1xuICAgIHJldHVybiAhdGhpcy5jbHJMYXlvdXQ/LmxheW91dFNlcnZpY2U/LmlzVmVydGljYWwoKTtcbiAgfVxuXG4gIC8qKiBMYWJlbCBjb21wb25lbnQuICovXG4gIEBDb250ZW50Q2hpbGQoQ2xyTGFiZWwpIHByb3RlY3RlZCBsYWJlbENvbXBvbmVudDogQ2xyTGFiZWw7XG5cbiAgLyoqIEhlbHBlciBjb250cm9sIGNvbXBvbmVudC4gKi9cbiAgQENvbnRlbnRDaGlsZChDbHJDb250cm9sSGVscGVyKSBwcm90ZWN0ZWQgY29udHJvbEhlbHBlckNvbXBvbmVudDogQ2xyQ29udHJvbEhlbHBlcjtcbiAgLyoqIEVycm9yIGNvbnRyb2wgY29tcG9uZW50LiAqL1xuICBAQ29udGVudENoaWxkKENsckNvbnRyb2xFcnJvcikgcHJvdGVjdGVkIGNvbnRyb2xFcnJvckNvbXBvbmVudDogQ2xyQ29udHJvbEVycm9yO1xuICAvKiogU3VjY2VzcyBjb250cm9sIGNvbXBvbmVudC4gKi9cbiAgQENvbnRlbnRDaGlsZChDbHJDb250cm9sU3VjY2VzcykgcHJvdGVjdGVkIGNvbnRyb2xTdWNjZXNzQ29tcG9uZW50OiBDbHJDb250cm9sU3VjY2VzcztcblxuICAvKipcbiAgICogV2V0aGVyIHRvIHNob3cgdGhlIGhlbHBlciBjb250cm9sLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgdG8gc2hvdyB0aGUgaGVscGVyIGNvbnRyb2wuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3dIZWxwZXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29udHJvbEhlbHBlckNvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIENvbXBvbmVudCBleGlzdCBhbmQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtIGlzIE5PTkUgKG5vdCB0b3VjaGVkKS5cbiAgICBpZiAoIXRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS50b3VjaGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBPciB0aGVyZSBpcyBubyBzdWNjZXNzIGNvbXBvbmVudCBidXQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtIGlzIFZBTElEIC0gc2hvdyBoZWxwZXIgaW5mb3JtYXRpb24uXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudCA9PSBudWxsICYmXG4gICAgICB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UudG91Y2hlZCAmJlxuICAgICAgIXRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5pbnZhbGlkXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBPciB0aGVyZSBpcyBubyBlcnJvciBjb21wb25lbnQgYnV0IHRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBpcyBJTlZBTElEIC0gc2hvdyBoZWxwZXIgaW5mb3JtYXRpb24uXG4gICAgaWYgKHRoaXMuY29udHJvbEVycm9yQ29tcG9uZW50ID09IG51bGwgJiYgdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmludmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZXRoZXIgdG8gc2hvdyB0aGUgdmFsaWQgY29udHJvbC5cbiAgICogQHJldHVybnMgV2V0aGVyIHRvIHNob3cgdGhlIHZhbGlkIGNvbnRyb2wuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3dWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5pbnZhbGlkICYmICEhdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZXRoZXIgdG8gc2hvdyB0aGUgaW52YWxpZCBjb250cm9sLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgdG8gc2hvdyB0aGUgaW52YWxpZCBjb250cm9sLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBzaG93SW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmludmFsaWQgJiYgISF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlZCBzdGF0ZS5cbiAgICogQHJldHVybnMgRGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSWYgY29udHJvbCBpcyBmb2N1c2VkLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgY29udHJvbCBpcyBmb2N1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmb2N1cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmZvY3VzZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2V0aGVyIGNvbnRyb2wgaXMgaW52YWxpZC5cbiAgICogQHJldHVybnMgV2V0aGVyIGNvbnRyb2wgaXMgaW52YWxpZC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuaW52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xyTGF5b3V0OiBDbHJMYXlvdXQsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2U6IERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2VcbiAgKSB7fVxufVxuIl19
@@ -0,0 +1,97 @@
1
+ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { ClrDateContainer } from '@clr/angular';
3
+ import { DayModel } from '../../models/day.model';
4
+ import { OpenedDatepickersTrackerService } from '../../providers/opened-datepickers-tracker.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../providers/opened-datepickers-tracker.service";
7
+ import * as i2 from "@clr/angular";
8
+ export class ClrDatepickerComponent {
9
+ constructor(openedDatepickersTrackerService) {
10
+ this.openedDatepickersTrackerService = openedDatepickersTrackerService;
11
+ /**
12
+ * Text label.
13
+ */
14
+ this.label = 'Date';
15
+ /**
16
+ * Minimum date that can be selected.
17
+ */
18
+ this.minDate = undefined;
19
+ /**
20
+ * Maximum date that can be selected.
21
+ */
22
+ this.maxDate = undefined;
23
+ /**
24
+ * Event triggered when value changes.
25
+ */
26
+ this.valueChange = new EventEmitter();
27
+ /** List of subscriptions to later destroy. */
28
+ this.subscriptions = [];
29
+ }
30
+ /**
31
+ * Get date.
32
+ * @returns JavaScript Date object.
33
+ */
34
+ get date() {
35
+ return this.value?.toDate();
36
+ }
37
+ /**
38
+ * Set date.
39
+ */
40
+ set date(val) {
41
+ this.value = val == null ? null : new DayModel(val);
42
+ this.valueChange.emit(this.value);
43
+ }
44
+ /**
45
+ * Minimum date as attribute string.
46
+ * @returns Minimum date as attribute string.
47
+ */
48
+ get minDateAttr() {
49
+ return this.minDate?.toHTML5SpecDateString();
50
+ }
51
+ /**
52
+ * Maximum date as attribute string.
53
+ * @returns Maximum date as attribute string.
54
+ */
55
+ get maxDateAttr() {
56
+ return this.maxDate?.toHTML5SpecDateString();
57
+ }
58
+ ngAfterViewInit() {
59
+ // eslint-disable-next-line dot-notation -- Need access to this private property.
60
+ const toggleService = this.clrDateContainer['toggleService'];
61
+ this.subscriptions.push(toggleService.openChange.subscribe(openState => {
62
+ this.openedDatepickersTrackerService.track(openState);
63
+ }));
64
+ }
65
+ ngOnDestroy() {
66
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
67
+ }
68
+ /**
69
+ * Focus input.
70
+ */
71
+ focus() {
72
+ this.inputElm.nativeElement.focus();
73
+ }
74
+ }
75
+ ClrDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDatepickerComponent, deps: [{ token: i1.OpenedDatepickersTrackerService }], target: i0.ɵɵFactoryTarget.Component });
76
+ ClrDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrDatepickerComponent, selector: "clr-datepicker", inputs: { value: "value", label: "label", minDate: "minDate", maxDate: "maxDate" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "inputElm", first: true, predicate: ["inputElm"], descendants: true }, { propertyName: "clrDateContainer", first: true, predicate: ClrDateContainer, descendants: true }], ngImport: i0, template: "<clr-date-container>\n <label>{{ this.label }}</label>\n <input #inputElm clrDate [(clrDate)]=\"this.date\" [min]=\"this.minDateAttr\" [max]=\"this.maxDateAttr\" />\n</clr-date-container>\n", dependencies: [{ kind: "directive", type: i2.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i2.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i2.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i2.ClrDateInputValidator, selector: "[clrDate]" }] });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrDatepickerComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'clr-datepicker', template: "<clr-date-container>\n <label>{{ this.label }}</label>\n <input #inputElm clrDate [(clrDate)]=\"this.date\" [min]=\"this.minDateAttr\" [max]=\"this.maxDateAttr\" />\n</clr-date-container>\n" }]
80
+ }], ctorParameters: function () { return [{ type: i1.OpenedDatepickersTrackerService }]; }, propDecorators: { value: [{
81
+ type: Input
82
+ }], label: [{
83
+ type: Input
84
+ }], minDate: [{
85
+ type: Input
86
+ }], maxDate: [{
87
+ type: Input
88
+ }], inputElm: [{
89
+ type: ViewChild,
90
+ args: ['inputElm']
91
+ }], clrDateContainer: [{
92
+ type: ViewChild,
93
+ args: [ClrDateContainer]
94
+ }], valueChange: [{
95
+ type: Output
96
+ }] } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRlcmFuZ2VwaWNrZXIvZGlyZWN0aXZlcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0ZXJhbmdlcGlja2VyL2RpcmVjdGl2ZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLGdCQUFnQixFQUEyQixNQUFNLGNBQWMsQ0FBQztBQUd6RSxPQUFPLEVBQUUsUUFBUSxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7O0FBTXJHLE1BQU0sT0FBTyxzQkFBc0I7SUE4RWpDLFlBQW9DLCtCQUFnRTtRQUFoRSxvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWlDO1FBdkVwRzs7V0FFRztRQUVJLFVBQUssR0FBRyxNQUFNLENBQUM7UUFFdEI7O1dBRUc7UUFFSSxZQUFPLEdBQXFCLFNBQVMsQ0FBQztRQUU3Qzs7V0FFRztRQUVJLFlBQU8sR0FBcUIsU0FBUyxDQUFDO1FBYzdDOztXQUVHO1FBRUksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQWtDMUQsOENBQThDO1FBQ3RDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztJQUV1RCxDQUFDO0lBbkN4Rzs7O09BR0c7SUFDSCxJQUFjLElBQUk7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsSUFBSSxDQUFDLEdBQTRCO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFPTSxlQUFlO1FBQ3BCLGlGQUFpRjtRQUNqRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUE0QixDQUFDO1FBQ3hGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzttSEFuR1Usc0JBQXNCO3VHQUF0QixzQkFBc0IsNFRBa0N0QixnQkFBZ0IsZ0RDN0M3QixpTUFJQTsyRkRPYSxzQkFBc0I7a0JBSmxDLFNBQVM7K0JBQ0UsZ0JBQWdCO3NIQVFuQixLQUFLO3NCQURYLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0UsUUFBUTtzQkFEZixTQUFTO3VCQUFDLFVBQVU7Z0JBT2IsZ0JBQWdCO3NCQUR2QixTQUFTO3VCQUFDLGdCQUFnQjtnQkFPcEIsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xyRGF0ZUNvbnRhaW5lciwgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERheU1vZGVsLCBOdWxsYWJsZURheU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RheS5tb2RlbCc7XG5pbXBvcnQgeyBPcGVuZWREYXRlcGlja2Vyc1RyYWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL29wZW5lZC1kYXRlcGlja2Vycy10cmFja2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJbnB1dCB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWx1ZTogTnVsbGFibGVEYXlNb2RlbDtcblxuICAvKipcbiAgICogVGV4dCBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbCA9ICdEYXRlJztcblxuICAvKipcbiAgICogTWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IE51bGxhYmxlRGF5TW9kZWwgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBOdWxsYWJsZURheU1vZGVsID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBjb250cm9sLlxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaW5wdXRFbG0nKVxuICBwcml2YXRlIGlucHV0RWxtITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogQ2xhcml0eSBkYXRlcGlja2VyIGNvbnRhaW5lci5cbiAgICovXG4gIEBWaWV3Q2hpbGQoQ2xyRGF0ZUNvbnRhaW5lcilcbiAgcHJpdmF0ZSBjbHJEYXRlQ29udGFpbmVyITogQ2xyRGF0ZUNvbnRhaW5lcjtcblxuICAvKipcbiAgICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE51bGxhYmxlRGF5TW9kZWw+KCk7XG5cbiAgLyoqXG4gICAqIEdldCBkYXRlLlxuICAgKiBAcmV0dXJucyBKYXZhU2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBkYXRlKCk6IERhdGUgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8udG9EYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IGRhdGUodmFsOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMudmFsdWUgPSB2YWwgPT0gbnVsbCA/IG51bGwgOiBuZXcgRGF5TW9kZWwodmFsKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWluaW11bSBkYXRlIGFzIGF0dHJpYnV0ZSBzdHJpbmcuXG4gICAqIEByZXR1cm5zIE1pbmltdW0gZGF0ZSBhcyBhdHRyaWJ1dGUgc3RyaW5nLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBtaW5EYXRlQXR0cigpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5taW5EYXRlPy50b0hUTUw1U3BlY0RhdGVTdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGRhdGUgYXMgYXR0cmlidXRlIHN0cmluZy5cbiAgICogQHJldHVybnMgTWF4aW11bSBkYXRlIGFzIGF0dHJpYnV0ZSBzdHJpbmcuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IG1heERhdGVBdHRyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm1heERhdGU/LnRvSFRNTDVTcGVjRGF0ZVN0cmluZygpO1xuICB9XG5cbiAgLyoqIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucyB0byBsYXRlciBkZXN0cm95LiAqL1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvcGVuZWREYXRlcGlja2Vyc1RyYWNrZXJTZXJ2aWNlOiBPcGVuZWREYXRlcGlja2Vyc1RyYWNrZXJTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvbiAtLSBOZWVkIGFjY2VzcyB0byB0aGlzIHByaXZhdGUgcHJvcGVydHkuXG4gICAgY29uc3QgdG9nZ2xlU2VydmljZSA9IHRoaXMuY2xyRGF0ZUNvbnRhaW5lclsndG9nZ2xlU2VydmljZSddIGFzIENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShvcGVuU3RhdGUgPT4ge1xuICAgICAgICB0aGlzLm9wZW5lZERhdGVwaWNrZXJzVHJhY2tlclNlcnZpY2UudHJhY2sob3BlblN0YXRlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIGlucHV0LlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbG0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG59XG4iLCI8Y2xyLWRhdGUtY29udGFpbmVyPlxuICA8bGFiZWw+e3sgdGhpcy5sYWJlbCB9fTwvbGFiZWw+XG4gIDxpbnB1dCAjaW5wdXRFbG0gY2xyRGF0ZSBbKGNsckRhdGUpXT1cInRoaXMuZGF0ZVwiIFttaW5dPVwidGhpcy5taW5EYXRlQXR0clwiIFttYXhdPVwidGhpcy5tYXhEYXRlQXR0clwiIC8+XG48L2Nsci1kYXRlLWNvbnRhaW5lcj5cbiJdfQ==