ngx-techlify-core 11.3.5 → 11.3.9

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 (34) hide show
  1. package/bundles/ngx-techlify-core.umd.js +576 -39
  2. package/bundles/ngx-techlify-core.umd.js.map +1 -1
  3. package/bundles/ngx-techlify-core.umd.min.js +2 -2
  4. package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +7 -9
  6. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +7 -9
  7. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +2 -2
  8. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +2 -2
  9. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +11 -2
  10. package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +27 -0
  11. package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +77 -0
  12. package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +174 -0
  13. package/esm2015/lib/techlify-feature/techlify-feature.module.js +30 -0
  14. package/esm2015/lib/techlify-feature/techlify-feature.routing.js +12 -0
  15. package/esm2015/lib/techlify-feature/techlify-feature.service.js +28 -0
  16. package/esm2015/lib/timeline-filter/calculate-timeline.js +2 -2
  17. package/esm2015/lib/timeline-filter/timeline-filter.component.js +146 -16
  18. package/esm2015/ngx-techlify-core.js +4 -1
  19. package/esm2015/public-api.js +5 -1
  20. package/fesm2015/ngx-techlify-core.js +478 -33
  21. package/fesm2015/ngx-techlify-core.js.map +1 -1
  22. package/lib/login-history-for-user/login-history-for-user.component.d.ts +2 -0
  23. package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +9 -0
  24. package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +16 -0
  25. package/lib/techlify-feature/techlify-feature-listing.component.d.ts +34 -0
  26. package/lib/techlify-feature/techlify-feature.module.d.ts +2 -0
  27. package/lib/techlify-feature/techlify-feature.routing.d.ts +2 -0
  28. package/lib/techlify-feature/techlify-feature.service.d.ts +8 -0
  29. package/lib/timeline-filter/calculate-timeline.d.ts +5 -0
  30. package/lib/timeline-filter/timeline-filter.component.d.ts +47 -6
  31. package/ngx-techlify-core.d.ts +3 -0
  32. package/ngx-techlify-core.metadata.json +1 -1
  33. package/package.json +1 -1
  34. package/public-api.d.ts +4 -0
@@ -0,0 +1,174 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Component } from '@angular/core';
3
+ import { FormBuilder } from '@angular/forms';
4
+ import { MatDialog } from '@angular/material/dialog';
5
+ import { MatTableDataSource } from '@angular/material/table';
6
+ import { TechlifyFeatureService } from './techlify-feature.service';
7
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
8
+ import { AlertService, DataManager, ErrorHandlerService, StorageService } from '../core';
9
+ import { debounceTime } from 'rxjs/operators';
10
+ import { ActionPopupComponent } from '../action-popup';
11
+ let TechlifyFeatureListingComponent = class TechlifyFeatureListingComponent {
12
+ constructor(dataManager, errorHandler, fb, alertService, dialog, storage, featureService) {
13
+ this.dataManager = dataManager;
14
+ this.errorHandler = errorHandler;
15
+ this.fb = fb;
16
+ this.alertService = alertService;
17
+ this.dialog = dialog;
18
+ this.storage = storage;
19
+ this.featureService = featureService;
20
+ this.features = [];
21
+ this.displayedColumns = [
22
+ 'index',
23
+ 'feature',
24
+ 'description',
25
+ 'actions',
26
+ ];
27
+ this.dataSource = new MatTableDataSource();
28
+ this.page = 1;
29
+ this.perPage = 25;
30
+ this.isWorking = false;
31
+ this.filterFormGroup = this.fb.group({
32
+ num_items: [""]
33
+ });
34
+ }
35
+ ngOnInit() {
36
+ this.loadData();
37
+ this.listenForChanges();
38
+ }
39
+ listenForChanges() {
40
+ this.filterFormGroup.valueChanges
41
+ .pipe(debounceTime(500), untilDestroyed(this))
42
+ .subscribe((changes) => {
43
+ this.reload();
44
+ });
45
+ }
46
+ loadData() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ let result;
49
+ try {
50
+ this.isWorking = true;
51
+ var filter = this.filterFormGroup.value;
52
+ filter.page = this.page;
53
+ filter.perPage = this.perPage;
54
+ result = yield this.dataManager.GET(`api/features`, filter);
55
+ this.features = this.features.concat(result.data);
56
+ this.dataSource = new MatTableDataSource(this.features);
57
+ if (!this.storage.getItem('features')) {
58
+ this.setStorage(this.features);
59
+ }
60
+ this.isWorking = false;
61
+ }
62
+ catch (error) {
63
+ this.errorHandler.handleError(error);
64
+ }
65
+ finally {
66
+ this.isWorking = false;
67
+ }
68
+ });
69
+ }
70
+ toggeleFeature(element, feature) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ let status = element ? 'Off' : "On";
73
+ let data;
74
+ const dialogRef = this.dialog.open(ActionPopupComponent, {
75
+ width: "400px",
76
+ data: {
77
+ title: `Turn this feature ${status}?`,
78
+ message: `Would you like to turn ${feature.title} feature ${status}`
79
+ }
80
+ });
81
+ dialogRef.afterClosed().subscribe((result) => __awaiter(this, void 0, void 0, function* () {
82
+ if (result) {
83
+ try {
84
+ data = element
85
+ ? yield this.featureService.disableFeature(feature.id)
86
+ : yield this.featureService.enableFeature(feature.id);
87
+ }
88
+ catch (error) {
89
+ this.errorHandler.handleError(error);
90
+ }
91
+ finally {
92
+ this.alertService.addAlert(`You have just turned ${status} the feature ${feature.title}`, 'success');
93
+ this.reload();
94
+ this.storage.removeItem('features');
95
+ this.setStorage(this.features);
96
+ this.isWorking = false;
97
+ }
98
+ }
99
+ else {
100
+ this.reload();
101
+ }
102
+ }));
103
+ });
104
+ }
105
+ setStorage(features) {
106
+ let localFeatures = [];
107
+ for (let feature of features) {
108
+ if (!feature.client_feature) {
109
+ if (feature.is_enabled_default) {
110
+ localFeatures.push(feature.code);
111
+ }
112
+ }
113
+ else {
114
+ if (feature.client_feature.is_enabled) {
115
+ localFeatures.push(feature.code);
116
+ }
117
+ }
118
+ }
119
+ this.storage.setItem("features", localFeatures);
120
+ }
121
+ reload() {
122
+ this.features = [];
123
+ this.page = 1;
124
+ if (!this.isWorking) {
125
+ this.loadData();
126
+ }
127
+ }
128
+ onScroll() {
129
+ if (!this.isWorking && this.page < this.lastPage) {
130
+ this.page += 1;
131
+ this.loadData();
132
+ }
133
+ }
134
+ sortColumn(event) {
135
+ var direction = event.direction.toString().toUpperCase();
136
+ this.assignFilter(event.active, direction);
137
+ this.reload();
138
+ }
139
+ assignFilter(column, direction) {
140
+ switch (column) {
141
+ case 'name': {
142
+ return this.filterFormGroup
143
+ .get('sort_by')
144
+ .setValue('first_name|' + direction);
145
+ }
146
+ case 'added_on': {
147
+ return this.filterFormGroup
148
+ .get('sort_by')
149
+ .setValue('created_at|' + direction);
150
+ }
151
+ }
152
+ }
153
+ };
154
+ TechlifyFeatureListingComponent.decorators = [
155
+ { type: Component, args: [{
156
+ selector: 'app-techlify-listing-feature',
157
+ template: "<div fxLayout=\"column\" fxLayoutGap=\"3rem\" class=\"p-3\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"primary-color mt-3\">\n <h3>Features Configuration</h3>\n <mat-hint>\n <i> Here you can specify which optional features you'd like to have available to your team </i>\n </mat-hint>\n </div>\n\n\n <div>\n <mat-card>\n <mat-card-content fxlayout=\"column\" style=\"overflow: auto; height: 700px\" class=\"classifications-card\">\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [fromRoot]=\"true\" [infiniteScrollContainer]=\"'.classifications-card'\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\">\n {{ i + 1 }}\n </td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"feature\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\n Feature\n </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\n Descriptions\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.description }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\n Actions\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <div *ngIf=\"!element?.client_feature\">\n <app-on-off-switch [value]=\"element?.is_enabled_default\"\n (click)=\"toggeleFeature(element?.is_enabled_default, element)\"></app-on-off-switch>\n </div>\n <div *ngIf=\"element?.client_feature\">\n <app-on-off-switch [value]=\"element?.client_feature?.is_enabled\"\n (click)=\"toggeleFeature(element?.client_feature?.is_enabled, element)\"></app-on-off-switch>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n",
158
+ styles: [""]
159
+ },] }
160
+ ];
161
+ TechlifyFeatureListingComponent.ctorParameters = () => [
162
+ { type: DataManager },
163
+ { type: ErrorHandlerService },
164
+ { type: FormBuilder },
165
+ { type: AlertService },
166
+ { type: MatDialog },
167
+ { type: StorageService },
168
+ { type: TechlifyFeatureService }
169
+ ];
170
+ TechlifyFeatureListingComponent = __decorate([
171
+ UntilDestroy()
172
+ ], TechlifyFeatureListingComponent);
173
+ export { TechlifyFeatureListingComponent };
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLWxpc3RpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBZSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0lBUXZELCtCQUErQixTQUEvQiwrQkFBK0I7SUFvQjFDLFlBQ1UsV0FBd0IsRUFDeEIsWUFBaUMsRUFDakMsRUFBZSxFQUNmLFlBQTBCLEVBQzFCLE1BQWlCLEVBQ2pCLE9BQXVCLEVBQ3ZCLGNBQXNDO1FBTnRDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUF6QmhELGFBQVEsR0FBVSxFQUFFLENBQUE7UUFDcEIscUJBQWdCLEdBQWE7WUFDM0IsT0FBTztZQUNQLFNBQVM7WUFDVCxhQUFhO1lBQ2IsU0FBUztTQUNWLENBQUE7UUFFRCxlQUFVLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFBO1FBRXJDLFNBQUksR0FBVyxDQUFDLENBQUM7UUFFakIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixjQUFTLEdBQVksS0FBSyxDQUFBO1FBYXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFDekIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWTthQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM3QyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFSyxRQUFROztZQUNaLElBQUksTUFBTSxDQUFDO1lBQ1gsSUFBSTtnQkFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtnQkFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUE7Z0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM5QixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNoQztnQkFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTthQUN2QjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RDO29CQUFTO2dCQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQztLQUFBO0lBRUssY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPOztZQUNuQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDO1lBQ1QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3ZELEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBZTtvQkFDakIsS0FBSyxFQUFFLHFCQUFxQixNQUFNLEdBQUc7b0JBQ3JDLE9BQU8sRUFBRSwwQkFBMEIsT0FBTyxDQUFDLEtBQUssWUFBWSxNQUFNLEVBQUU7aUJBQ3JFO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFNLE1BQU0sRUFBQyxFQUFFO2dCQUMvQyxJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJO3dCQUNGLElBQUksR0FBRyxPQUFPOzRCQUNaLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7NEJBQ3RELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDekQ7b0JBQUMsT0FBTyxLQUFLLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ3RDOzRCQUFTO3dCQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLHdCQUF3QixNQUFNLGdCQUFnQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQ3JHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3FCQUN4QjtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2Y7WUFDSCxDQUFDLENBQUEsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0lBRUQsVUFBVSxDQUFDLFFBQVE7UUFDakIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssSUFBSSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO2dCQUMzQixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtvQkFDOUIsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRTtvQkFDckMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7U0FFRjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQU0sRUFBRSxTQUFTO1FBQzVCLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDWCxPQUFPLElBQUksQ0FBQyxlQUFlO3FCQUN4QixHQUFHLENBQUMsU0FBUyxDQUFDO3FCQUNkLFFBQVEsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUE7YUFDdkM7WUFDRCxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWU7cUJBQ3hCLEdBQUcsQ0FBQyxTQUFTLENBQUM7cUJBQ2QsUUFBUSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQTthQUN2QztTQUNGO0lBQ0gsQ0FBQztDQUVGLENBQUE7O1lBaEtBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsOEJBQThCO2dCQUN4QyxvMUZBQXdEOzthQUV6RDs7O1lBVHNCLFdBQVc7WUFBRSxtQkFBbUI7WUFMOUMsV0FBVztZQUtYLFlBQVk7WUFKWixTQUFTO1lBSXVDLGNBQWM7WUFGOUQsc0JBQXNCOztBQVlsQiwrQkFBK0I7SUFOM0MsWUFBWSxFQUFFO0dBTUYsK0JBQStCLENBMkozQztTQTNKWSwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBUZWNobGlmeUZlYXR1cmVTZXJ2aWNlIH0gZnJvbSAnLi90ZWNobGlmeS1mZWF0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIERhdGFNYW5hZ2VyLCBFcnJvckhhbmRsZXJTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9uUG9wdXAsIEFjdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uLXBvcHVwJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVjaGxpZnktbGlzdGluZy1mZWF0dXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlY2hsaWZ5LWZlYXR1cmUtbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RlY2hsaWZ5LWZlYXR1cmUtbGlzdGluZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGZlYXR1cmVzOiBhbnlbXSA9IFtdXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgICdpbmRleCcsXG4gICAgJ2ZlYXR1cmUnLFxuICAgICdkZXNjcmlwdGlvbicsXG4gICAgJ2FjdGlvbnMnLFxuICBdXG5cbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKVxuXG4gIHBhZ2U6IG51bWJlciA9IDE7XG4gIGxhc3RQYWdlOiBudW1iZXI7XG4gIHBlclBhZ2U6IG51bWJlciA9IDI1O1xuXG4gIGlzV29ya2luZzogYm9vbGVhbiA9IGZhbHNlXG4gIGZpbHRlckZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBmZWF0dXJlVG9nZ2xlRm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YU1hbmFnZXI6IERhdGFNYW5hZ2VyLFxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG51bV9pdGVtczogW1wiXCJdXG4gICAgfSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZERhdGEoKVxuICAgIHRoaXMubGlzdGVuRm9yQ2hhbmdlcygpXG4gIH1cblxuICBsaXN0ZW5Gb3JDaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlcykgPT4ge1xuICAgICAgICB0aGlzLnJlbG9hZCgpXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgbG9hZERhdGEoKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlXG4gICAgICB2YXIgZmlsdGVyID0gdGhpcy5maWx0ZXJGb3JtR3JvdXAudmFsdWVcbiAgICAgIGZpbHRlci5wYWdlID0gdGhpcy5wYWdlO1xuICAgICAgZmlsdGVyLnBlclBhZ2UgPSB0aGlzLnBlclBhZ2U7XG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFNYW5hZ2VyLkdFVChgYXBpL2ZlYXR1cmVzYCwgZmlsdGVyKTtcbiAgICAgIHRoaXMuZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzLmNvbmNhdChyZXN1bHQuZGF0YSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZmVhdHVyZXMpO1xuXG4gICAgICBpZiAoIXRoaXMuc3RvcmFnZS5nZXRJdGVtKCdmZWF0dXJlcycpKSB7XG4gICAgICAgIHRoaXMuc2V0U3RvcmFnZSh0aGlzLmZlYXR1cmVzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdG9nZ2VsZUZlYXR1cmUoZWxlbWVudCwgZmVhdHVyZSkge1xuICAgIGxldCBzdGF0dXMgPSBlbGVtZW50ID8gJ09mZicgOiBcIk9uXCI7XG4gICAgbGV0IGRhdGE7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3Rpb25Qb3B1cENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6IFwiNDAwcHhcIixcbiAgICAgIGRhdGE6IDxBY3Rpb25Qb3B1cD57XG4gICAgICAgIHRpdGxlOiBgVHVybiB0aGlzIGZlYXR1cmUgJHtzdGF0dXN9P2AsXG4gICAgICAgIG1lc3NhZ2U6IGBXb3VsZCB5b3UgbGlrZSB0byB0dXJuICR7ZmVhdHVyZS50aXRsZX0gZmVhdHVyZSAke3N0YXR1c31gXG4gICAgICB9XG4gICAgfSlcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyByZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGRhdGEgPSBlbGVtZW50XG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMuZmVhdHVyZVNlcnZpY2UuZGlzYWJsZUZlYXR1cmUoZmVhdHVyZS5pZClcbiAgICAgICAgICAgIDogYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5lbmFibGVGZWF0dXJlKGZlYXR1cmUuaWQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChgWW91IGhhdmUganVzdCB0dXJuZWQgJHtzdGF0dXN9IHRoZSBmZWF0dXJlICR7ZmVhdHVyZS50aXRsZX1gLCAnc3VjY2VzcycpO1xuICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZlYXR1cmVzJyk7XG4gICAgICAgICAgdGhpcy5zZXRTdG9yYWdlKHRoaXMuZmVhdHVyZXMpO1xuICAgICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHNldFN0b3JhZ2UoZmVhdHVyZXMpIHtcbiAgICBsZXQgbG9jYWxGZWF0dXJlcyA9IFtdO1xuICAgIGZvciAobGV0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICAgIGlmICghZmVhdHVyZS5jbGllbnRfZmVhdHVyZSkge1xuICAgICAgICBpZiAoZmVhdHVyZS5pc19lbmFibGVkX2RlZmF1bHQpIHtcbiAgICAgICAgICBsb2NhbEZlYXR1cmVzLnB1c2goZmVhdHVyZS5jb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZlYXR1cmUuY2xpZW50X2ZlYXR1cmUuaXNfZW5hYmxlZCkge1xuICAgICAgICAgIGxvY2FsRmVhdHVyZXMucHVzaChmZWF0dXJlLmNvZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oXCJmZWF0dXJlc1wiLCBsb2NhbEZlYXR1cmVzKTtcbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLmZlYXR1cmVzID0gW107XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICBpZiAoIXRoaXMuaXNXb3JraW5nKSB7XG4gICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoKSB7XG4gICAgaWYgKCF0aGlzLmlzV29ya2luZyAmJiB0aGlzLnBhZ2UgPCB0aGlzLmxhc3RQYWdlKSB7XG4gICAgICB0aGlzLnBhZ2UgKz0gMTtcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBzb3J0Q29sdW1uKGV2ZW50KSB7XG4gICAgdmFyIGRpcmVjdGlvbiA9IGV2ZW50LmRpcmVjdGlvbi50b1N0cmluZygpLnRvVXBwZXJDYXNlKClcbiAgICB0aGlzLmFzc2lnbkZpbHRlcihldmVudC5hY3RpdmUsIGRpcmVjdGlvbilcbiAgICB0aGlzLnJlbG9hZCgpXG4gIH1cblxuICBhc3NpZ25GaWx0ZXIoY29sdW1uLCBkaXJlY3Rpb24pIHtcbiAgICBzd2l0Y2ggKGNvbHVtbikge1xuICAgICAgY2FzZSAnbmFtZSc6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybUdyb3VwXG4gICAgICAgICAgLmdldCgnc29ydF9ieScpXG4gICAgICAgICAgLnNldFZhbHVlKCdmaXJzdF9uYW1lfCcgKyBkaXJlY3Rpb24pXG4gICAgICB9XG4gICAgICBjYXNlICdhZGRlZF9vbic6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybUdyb3VwXG4gICAgICAgICAgLmdldCgnc29ydF9ieScpXG4gICAgICAgICAgLnNldFZhbHVlKCdjcmVhdGVkX2F0fCcgKyBkaXJlY3Rpb24pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';
4
+ import { TechlifyFeatureRoutes } from './techlify-feature.routing';
5
+ import { OnOffSwitchComponent } from './on-off-switch/on-off-switch.component';
6
+ import { FlexLayoutModule } from '@angular/flex-layout';
7
+ import { TechlifyFeatureEnabledDirective } from './techlify-feature-enabled.directive';
8
+ import { InfiniteScrollModule } from 'ngx-infinite-scroll';
9
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
10
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
11
+ import { MaterialModule } from '../material.module';
12
+ export class TechlifyFeatureModule {
13
+ }
14
+ TechlifyFeatureModule.decorators = [
15
+ { type: NgModule, args: [{
16
+ imports: [
17
+ CommonModule,
18
+ MaterialModule,
19
+ FlexLayoutModule,
20
+ TechlifyFeatureRoutes,
21
+ MatSlideToggleModule,
22
+ FormsModule,
23
+ ReactiveFormsModule,
24
+ InfiniteScrollModule
25
+ ],
26
+ declarations: [TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],
27
+ exports: [TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]
28
+ },] }
29
+ ];
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3RlY2hsaWZ5LWZlYXR1cmUvdGVjaGxpZnktZmVhdHVyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWdCcEQsTUFBTSxPQUFPLHFCQUFxQjs7O1lBZGpDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixjQUFjO29CQUNkLGdCQUFnQjtvQkFDaEIscUJBQXFCO29CQUNyQixvQkFBb0I7b0JBQ3BCLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixvQkFBb0I7aUJBQ3JCO2dCQUNELFlBQVksRUFBRSxDQUFDLCtCQUErQixFQUFFLG9CQUFvQixFQUFFLCtCQUErQixDQUFDO2dCQUN0RyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSwrQkFBK0IsQ0FBQzthQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGVjaGxpZnlGZWF0dXJlTGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4vdGVjaGxpZnktZmVhdHVyZS1saXN0aW5nLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZVJvdXRlcyB9IGZyb20gJy4vdGVjaGxpZnktZmVhdHVyZS5yb3V0aW5nJztcbmltcG9ydCB7IE9uT2ZmU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnLi9vbi1vZmYtc3dpdGNoL29uLW9mZi1zd2l0Y2guY29tcG9uZW50JztcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBUZWNobGlmeUZlYXR1cmVFbmFibGVkRGlyZWN0aXZlIH0gZnJvbSAnLi90ZWNobGlmeS1mZWF0dXJlLWVuYWJsZWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsTW9kdWxlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICAgIFRlY2hsaWZ5RmVhdHVyZVJvdXRlcyxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEluZmluaXRlU2Nyb2xsTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1RlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQsIE9uT2ZmU3dpdGNoQ29tcG9uZW50LCBUZWNobGlmeUZlYXR1cmVFbmFibGVkRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW1RlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQsIFRlY2hsaWZ5RmVhdHVyZUVuYWJsZWREaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5RmVhdHVyZU1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { RouterModule } from '@angular/router';
2
+ import { AuthenticationGuard } from '../core';
3
+ import { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';
4
+ const routes = [
5
+ {
6
+ path: '',
7
+ component: TechlifyFeatureListingComponent,
8
+ canActivate: [AuthenticationGuard]
9
+ },
10
+ ];
11
+ export const TechlifyFeatureRoutes = RouterModule.forChild(routes);
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS5yb3V0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUucm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXZGLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsK0JBQStCO1FBQzFDLFdBQVcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0tBQ25DO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkd1YXJkIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBUZWNobGlmeUZlYXR1cmVMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi90ZWNobGlmeS1mZWF0dXJlLWxpc3RpbmcuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IFRlY2hsaWZ5RmVhdHVyZUxpc3RpbmdDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoZW50aWNhdGlvbkd1YXJkXVxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IFRlY2hsaWZ5RmVhdHVyZVJvdXRlcyA9IFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpO1xuIl19
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { DataManager } from '../core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../core/dataManager.service";
5
+ export class TechlifyFeatureService {
6
+ constructor(dataManager) {
7
+ this.dataManager = dataManager;
8
+ }
9
+ getFeatures() {
10
+ return this.dataManager.GET(`api/features`);
11
+ }
12
+ disableFeature(id) {
13
+ return this.dataManager.GET(`api/feature/${id}/disable`);
14
+ }
15
+ enableFeature(id) {
16
+ return this.dataManager.GET(`api/feature/${id}/enable`);
17
+ }
18
+ }
19
+ TechlifyFeatureService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TechlifyFeatureService_Factory() { return new TechlifyFeatureService(i0.ɵɵinject(i1.DataManager)); }, token: TechlifyFeatureService, providedIn: "root" });
20
+ TechlifyFeatureService.decorators = [
21
+ { type: Injectable, args: [{
22
+ providedIn: 'root'
23
+ },] }
24
+ ];
25
+ TechlifyFeatureService.ctorParameters = () => [
26
+ { type: DataManager }
27
+ ];
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi90ZWNobGlmeS1mZWF0dXJlL3RlY2hsaWZ5LWZlYXR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQUt0QyxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUVqRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQU87UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFPO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Ozs7WUFqQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFKUSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1hbmFnZXIgfSBmcm9tICcuLi9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGVjaGxpZnlGZWF0dXJlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhTWFuYWdlcjogRGF0YU1hbmFnZXIpIHsgfVxuXG4gIGdldEZlYXR1cmVzKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFNYW5hZ2VyLkdFVChgYXBpL2ZlYXR1cmVzYCk7XG4gIH1cblxuICBkaXNhYmxlRmVhdHVyZShpZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuR0VUKGBhcGkvZmVhdHVyZS8ke2lkfS9kaXNhYmxlYCk7XG4gIH1cblxuICBlbmFibGVGZWF0dXJlKGlkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhTWFuYWdlci5HRVQoYGFwaS9mZWF0dXJlLyR7aWR9L2VuYWJsZWApO1xuICB9XG5cbn1cbiJdfQ==
@@ -24,7 +24,7 @@ export function calculateTimeline(value) {
24
24
  }
25
25
  case 4: { // This Week
26
26
  var first = date.getDate() - date.getDay() + 1; // First day is the day of the month - the day of the week
27
- var last = first + 6; // last day is the first day + 6
27
+ var last = first + 6; // last day is the first day + 6
28
28
  data.date_from = new Date(date.setDate(first));
29
29
  data.date_to = new Date(date.setDate(last));
30
30
  break;
@@ -87,4 +87,4 @@ export function calculateTimeline(value) {
87
87
  }
88
88
  return data;
89
89
  }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXRpbWVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi90aW1lbGluZS1maWx0ZXIvY2FsY3VsYXRlLXRpbWVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFVO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDeEIsTUFBTSxJQUFJLEdBQVE7UUFDZCxXQUFXLEVBQUUsSUFBSTtRQUNqQixTQUFTLEVBQUUsSUFBSTtRQUNmLG1CQUFtQixFQUFFLEtBQUs7S0FDN0IsQ0FBQztJQUNGLFFBQVEsS0FBSyxFQUFFO1FBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVE7WUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE1BQU07U0FDVDtRQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTTtTQUNUO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDaEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDekIsTUFBTTtTQUNUO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7WUFDbEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxH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Q0FBQyxDQUFDO1lBQUEsQ0FBQztZQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRSxNQUFNO1lBQ04sTUFBTTtTQUNUO1FBQ0QsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNO1lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTTtTQUNUO0tBRUo7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVRpbWVsaW5lKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICdkYXRlX2Zyb20nOiBkYXRlLFxuICAgICAgICAnZGF0ZV90byc6IGRhdGUsXG4gICAgICAgICdzaG93X2N1c3RvbV9maWVsZCc6IGZhbHNlXG4gICAgfTtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgMTogeyAvL0N1c3RvbVxuICAgICAgICAgICAgZGF0YS5zaG93X2N1c3RvbV9maWVsZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI6IHsgLy8gVG9kYXlcbiAgICAgICAgICAgIGRhdGEuZGF0ZV9mcm9tID0gZGF0ZTtcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IGRhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDM6IHsgLy8gWWVzdGVyZGF5XG4gICAgICAgICAgICBjb25zdCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZShkYXRlKVxuICAgICAgICAgICAgeWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IHllc3RlcmRheTtcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IHllc3RlcmRheTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgNDogeyAvLyBUaGlzIFdlZWtcbiAgICAgICAgICAgIHZhciBmaXJzdCA9IGRhdGUuZ2V0RGF0ZSgpIC0gZGF0ZS5nZXREYXkoKSArIDE7IC8vIEZpcnN0IGRheSBpcyB0aGUgZGF5IG9mIHRoZSBtb250aCAtIHRoZSBkYXkgb2YgdGhlIHdlZWtcbiAgICAgICAgICAgIHZhciBsYXN0ID0gZmlyc3QgKyA2OyAvLyBsYXN0IGRheSBpcyB0aGUgZmlyc3QgZGF5ICsgNiAgIFxuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShkYXRlLnNldERhdGUoZmlyc3QpKTtcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IG5ldyBEYXRlKGRhdGUuc2V0RGF0ZShsYXN0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDU6IHsgLy8gTGFzdCBXZWVrXG4gICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB2YXIgdG8gPSBkLnNldFRpbWUoZC5nZXRUaW1lKCkgLSAoZC5nZXREYXkoKSA/IGQuZ2V0RGF5KCkgOiA3KSAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgICAgICAgICAgdmFyIGZyb20gPSBkLnNldFRpbWUoZC5nZXRUaW1lKCkgLSA2ICogMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IG5ldyBEYXRlKGZyb20pO1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gbmV3IERhdGUodG8pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA2OiB7IC8vVGhpcyBNb250aFxuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgICAgICBkYXRhLmRhdGVfdG8gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA3OiB7IC8vIExhc3QgTW9udGhcbiAgICAgICAgICAgIHZhciBkID0gbmV3IERhdGUoKTsgLy8gY3VycmVudCBkYXRlXG4gICAgICAgICAgICBkLnNldERhdGUoMSk7IC8vIGdvaW5nIHRvIDFzdCBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgIGQuc2V0SG91cnMoLTEpO1xuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSAtIDEsIDEpO1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgODogeyAvLyBUaGlzIFF1YXJ0ZXJcbiAgICAgICAgICAgIGNvbnN0IHF1YXJ0ZXIgPSBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZ1bGxRdWFydGVyID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBxdWFydGVyICogMywgMSk7XG4gICAgICAgICAgICBjb25zdCBlbmRGdWxsUXVhcnRlciA9IG5ldyBEYXRlKHN0YXJ0RnVsbFF1YXJ0ZXIuZ2V0RnVsbFllYXIoKSwgc3RhcnRGdWxsUXVhcnRlci5nZXRNb250aCgpICsgMywgMCk7XG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IHN0YXJ0RnVsbFF1YXJ0ZXI7XG4gICAgICAgICAgICBkYXRhLmRhdGVfdG8gPSBlbmRGdWxsUXVhcnRlcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgOTogeyAvLyBMYXN0IFF1YXJ0ZXJcbiAgICAgICAgICAgIGNvbnN0IHF1YXJ0ZXIgPSBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZ1bGxRdWFydGVyID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBxdWFydGVyICogMyAtIDMsIDEpO1xuICAgICAgICAgICAgY29uc3QgZW5kRnVsbFF1YXJ0ZXIgPSBuZXcgRGF0ZShzdGFydEZ1bGxRdWFydGVyLmdldEZ1bGxZZWFyKCksIHN0YXJ0RnVsbFF1YXJ0ZXIuZ2V0TW9udGgoKSArIDMsIDApXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IHN0YXJ0RnVsbFF1YXJ0ZXI7XG4gICAgICAgICAgICBkYXRhLmRhdGVfdG8gPSBlbmRGdWxsUXVhcnRlcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTA6IHsgLy8gVGhpcyBZZWFyXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IG5ldyBEYXRlKFwiMS8xL1wiICsgKG5ldyBEYXRlKCkpLmdldEZ1bGxZZWFyKCkpOztcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IG5ldyBEYXRlKFwiMTIvMzEvXCIgKyAobmV3IERhdGUoKSkuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDExOiB7IC8vIExhc3QgWWVhclxuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShcIjEvMS9cIiArIChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxKSk7O1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gbmV3IERhdGUoXCIxMi8zMS9cIiArIChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHsgLy8gQWxsXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9ICcnO1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufSJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXRpbWVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi90aW1lbGluZS1maWx0ZXIvY2FsY3VsYXRlLXRpbWVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFVO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDeEIsTUFBTSxJQUFJLEdBQVE7UUFDZCxXQUFXLEVBQUUsSUFBSTtRQUNqQixTQUFTLEVBQUUsSUFBSTtRQUNmLG1CQUFtQixFQUFFLEtBQUs7S0FDN0IsQ0FBQztJQUNGLFFBQVEsS0FBSyxFQUFFO1FBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVE7WUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE1BQU07U0FDVDtRQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTTtTQUNUO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDaEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDekIsTUFBTTtTQUNUO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7WUFDbEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxH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Q0FBQyxDQUFDO1lBQUEsQ0FBQztZQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRSxNQUFNO1lBQ04sTUFBTTtTQUNUO1FBQ0QsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNO1lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTTtTQUNUO0tBRUo7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUaW1lbGluZVZhbHVlIHtcbiAgZGF0ZV9mcm9tOiBEYXRlLFxuICBkYXRlX3RvOiBEYXRlLFxuICBzaG93X2N1c3RvbV9maWVsZDogYm9vbGVhblxufVxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVRpbWVsaW5lKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICdkYXRlX2Zyb20nOiBkYXRlLFxuICAgICAgICAnZGF0ZV90byc6IGRhdGUsXG4gICAgICAgICdzaG93X2N1c3RvbV9maWVsZCc6IGZhbHNlXG4gICAgfTtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgMTogeyAvL0N1c3RvbVxuICAgICAgICAgICAgZGF0YS5zaG93X2N1c3RvbV9maWVsZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI6IHsgLy8gVG9kYXlcbiAgICAgICAgICAgIGRhdGEuZGF0ZV9mcm9tID0gZGF0ZTtcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IGRhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDM6IHsgLy8gWWVzdGVyZGF5XG4gICAgICAgICAgICBjb25zdCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZShkYXRlKVxuICAgICAgICAgICAgeWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IHllc3RlcmRheTtcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IHllc3RlcmRheTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgNDogeyAvLyBUaGlzIFdlZWtcbiAgICAgICAgICAgIHZhciBmaXJzdCA9IGRhdGUuZ2V0RGF0ZSgpIC0gZGF0ZS5nZXREYXkoKSArIDE7IC8vIEZpcnN0IGRheSBpcyB0aGUgZGF5IG9mIHRoZSBtb250aCAtIHRoZSBkYXkgb2YgdGhlIHdlZWtcbiAgICAgICAgICAgIHZhciBsYXN0ID0gZmlyc3QgKyA2OyAvLyBsYXN0IGRheSBpcyB0aGUgZmlyc3QgZGF5ICsgNlxuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShkYXRlLnNldERhdGUoZmlyc3QpKTtcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IG5ldyBEYXRlKGRhdGUuc2V0RGF0ZShsYXN0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDU6IHsgLy8gTGFzdCBXZWVrXG4gICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB2YXIgdG8gPSBkLnNldFRpbWUoZC5nZXRUaW1lKCkgLSAoZC5nZXREYXkoKSA/IGQuZ2V0RGF5KCkgOiA3KSAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgICAgICAgICAgdmFyIGZyb20gPSBkLnNldFRpbWUoZC5nZXRUaW1lKCkgLSA2ICogMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IG5ldyBEYXRlKGZyb20pO1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gbmV3IERhdGUodG8pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA2OiB7IC8vVGhpcyBNb250aFxuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgICAgICBkYXRhLmRhdGVfdG8gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA3OiB7IC8vIExhc3QgTW9udGhcbiAgICAgICAgICAgIHZhciBkID0gbmV3IERhdGUoKTsgLy8gY3VycmVudCBkYXRlXG4gICAgICAgICAgICBkLnNldERhdGUoMSk7IC8vIGdvaW5nIHRvIDFzdCBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgIGQuc2V0SG91cnMoLTEpO1xuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSAtIDEsIDEpO1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgODogeyAvLyBUaGlzIFF1YXJ0ZXJcbiAgICAgICAgICAgIGNvbnN0IHF1YXJ0ZXIgPSBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZ1bGxRdWFydGVyID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBxdWFydGVyICogMywgMSk7XG4gICAgICAgICAgICBjb25zdCBlbmRGdWxsUXVhcnRlciA9IG5ldyBEYXRlKHN0YXJ0RnVsbFF1YXJ0ZXIuZ2V0RnVsbFllYXIoKSwgc3RhcnRGdWxsUXVhcnRlci5nZXRNb250aCgpICsgMywgMCk7XG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IHN0YXJ0RnVsbFF1YXJ0ZXI7XG4gICAgICAgICAgICBkYXRhLmRhdGVfdG8gPSBlbmRGdWxsUXVhcnRlcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgOTogeyAvLyBMYXN0IFF1YXJ0ZXJcbiAgICAgICAgICAgIGNvbnN0IHF1YXJ0ZXIgPSBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZ1bGxRdWFydGVyID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBxdWFydGVyICogMyAtIDMsIDEpO1xuICAgICAgICAgICAgY29uc3QgZW5kRnVsbFF1YXJ0ZXIgPSBuZXcgRGF0ZShzdGFydEZ1bGxRdWFydGVyLmdldEZ1bGxZZWFyKCksIHN0YXJ0RnVsbFF1YXJ0ZXIuZ2V0TW9udGgoKSArIDMsIDApXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IHN0YXJ0RnVsbFF1YXJ0ZXI7XG4gICAgICAgICAgICBkYXRhLmRhdGVfdG8gPSBlbmRGdWxsUXVhcnRlcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTA6IHsgLy8gVGhpcyBZZWFyXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9IG5ldyBEYXRlKFwiMS8xL1wiICsgKG5ldyBEYXRlKCkpLmdldEZ1bGxZZWFyKCkpOztcbiAgICAgICAgICAgIGRhdGEuZGF0ZV90byA9IG5ldyBEYXRlKFwiMTIvMzEvXCIgKyAobmV3IERhdGUoKSkuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDExOiB7IC8vIExhc3QgWWVhclxuICAgICAgICAgICAgZGF0YS5kYXRlX2Zyb20gPSBuZXcgRGF0ZShcIjEvMS9cIiArIChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxKSk7O1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gbmV3IERhdGUoXCIxMi8zMS9cIiArIChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHsgLy8gQWxsXG4gICAgICAgICAgICBkYXRhLmRhdGVfZnJvbSA9ICcnO1xuICAgICAgICAgICAgZGF0YS5kYXRlX3RvID0gJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufVxuIl19
@@ -1,11 +1,18 @@
1
+ var TimelineFilterComponent_1;
1
2
  import { __decorate } from "tslib";
2
- import { Component, Input } from '@angular/core';
3
- import { FormControl } from '@angular/forms';
4
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
5
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { DatePipe } from '@angular/common';
5
+ import { Component, EventEmitter, Input, Optional, Output, Self, ViewChild } from '@angular/core';
6
+ import { FormBuilder, FormControl, NgControl, Validators } from '@angular/forms';
7
+ import { MatFormFieldControl } from '@angular/material/form-field';
8
+ import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
6
9
  import { calculateTimeline } from './calculate-timeline';
7
- let TimelineFilterComponent = class TimelineFilterComponent {
8
- constructor() {
10
+ import { Subject } from 'rxjs';
11
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
12
+ let TimelineFilterComponent = TimelineFilterComponent_1 = class TimelineFilterComponent {
13
+ constructor(formBuilder, ngControl, datePipe) {
14
+ this.ngControl = ngControl;
15
+ this.datePipe = datePipe;
9
16
  this.timelineValue = new FormControl('');
10
17
  this.timelines = [
11
18
  { value: 1, viewValue: 'Custom' },
@@ -21,20 +28,73 @@ let TimelineFilterComponent = class TimelineFilterComponent {
21
28
  { value: 11, viewValue: 'Last Year' },
22
29
  { value: 12, viewValue: 'All dates' },
23
30
  ];
24
- this.labelText = 'Select Timeline';
25
31
  this.dateFrom = 'date_from';
26
32
  this.dateTo = 'date_to';
27
33
  this.appearance = "legacy";
28
34
  this.showClearbutton = false;
35
+ /**
36
+ * @deprecated The form input is deprated
37
+ */
38
+ this.form = null;
39
+ this.labelText = 'Select Timeline';
40
+ this.touchUi = true;
41
+ this.selectedValueChange = new EventEmitter();
42
+ this.selectionChange = new EventEmitter();
43
+ this.onChange = () => { };
44
+ this.onTouched = () => { };
45
+ this.stateChanges = new Subject();
46
+ this.controlType = 'timeline-filter';
47
+ this.id = `timeline-filter-${TimelineFilterComponent_1.nextId++}`;
48
+ this.describedBy = '';
29
49
  this.showCustomDateFields = false;
50
+ this._required = false;
51
+ this._disabled = false;
52
+ this.selectorForm = formBuilder.group({
53
+ select_value: [null],
54
+ });
55
+ if (this.ngControl != null) {
56
+ this.ngControl.valueAccessor = this;
57
+ }
30
58
  }
31
59
  set defaultValue(value) {
32
60
  this.timelineValue.setValue(value);
33
61
  this.changeTimeline(value);
34
62
  }
35
- ngOnInit() {
36
- this.timelineValue.valueChanges.
37
- pipe(debounceTime(100), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => this.changeTimeline(value));
63
+ get required() { return this._required; }
64
+ set required(value) {
65
+ this.selectorForm.get('select_value').setValidators(Validators.required);
66
+ this._required = coerceBooleanProperty(value);
67
+ this.stateChanges.next();
68
+ }
69
+ get disabled() { return this._disabled; }
70
+ set disabled(value) {
71
+ this._disabled = coerceBooleanProperty(value);
72
+ this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();
73
+ this.stateChanges.next();
74
+ }
75
+ get value() {
76
+ if (this.selectorForm.valid) {
77
+ return this.selectorForm.value.select_value;
78
+ }
79
+ return '';
80
+ }
81
+ set value(data) {
82
+ this.selectorForm.patchValue({ select_value: data || '' });
83
+ this._handleInput();
84
+ this.stateChanges.next();
85
+ }
86
+ getDateRangeString() {
87
+ var _a, _b, _c, _d, _e, _f, _g;
88
+ let str = "";
89
+ if ((_a = this.selectedRange) === null || _a === void 0 ? void 0 : _a.show_custom_field) {
90
+ if (((_b = this.selectedRange) === null || _b === void 0 ? void 0 : _b.date_from.toUTCString()) != 'Invalid Date') {
91
+ str += ' - ' + this.datePipe.transform((_d = (_c = this.selectedRange) === null || _c === void 0 ? void 0 : _c.date_from) === null || _d === void 0 ? void 0 : _d.toUTCString());
92
+ }
93
+ if (((_e = this.selectedRange) === null || _e === void 0 ? void 0 : _e.date_to.toUTCString()) != 'Invalid Date') {
94
+ str += ' - ' + this.datePipe.transform((_g = (_f = this.selectedRange) === null || _f === void 0 ? void 0 : _f.date_to) === null || _g === void 0 ? void 0 : _g.toUTCString());
95
+ }
96
+ }
97
+ return str;
38
98
  }
39
99
  resetFieldValue(field) {
40
100
  this.form.get(field).setValue('');
@@ -53,28 +113,98 @@ let TimelineFilterComponent = class TimelineFilterComponent {
53
113
  this.showCustomDateFields = timeline.show_custom_field;
54
114
  }
55
115
  }
116
+ _handleInput() {
117
+ if (this.value == 1) {
118
+ this.picker.open();
119
+ return;
120
+ }
121
+ const range = calculateTimeline(this.value);
122
+ this.selectedRange = range;
123
+ this.onChange(this.value);
124
+ this.selectedValueChange.emit(this.selectedValue);
125
+ this.selectionChange.emit(range);
126
+ }
127
+ dateRangeChange(dateRangeStart, dateRangeEnd) {
128
+ const range = {
129
+ date_from: new Date(dateRangeStart.value),
130
+ date_to: new Date(dateRangeEnd.value),
131
+ show_custom_field: true
132
+ };
133
+ this.selectedRange = range;
134
+ this.onChange(this.value);
135
+ this.selectedValueChange.emit(this.selectedValue);
136
+ this.selectionChange.emit(range);
137
+ }
138
+ onCustomDateChange(event) {
139
+ console.log(event);
140
+ }
141
+ setDescribedByIds(ids) {
142
+ this.describedBy = ids.join(' ');
143
+ }
144
+ onContainerClick(event) {
145
+ event.stopPropagation();
146
+ }
147
+ writeValue(data) {
148
+ this.value = data;
149
+ }
150
+ registerOnChange(fn) {
151
+ this.onChange = fn;
152
+ }
153
+ registerOnTouched(fn) {
154
+ this.onTouched = fn;
155
+ }
156
+ setDisabledState(isDisabled) {
157
+ this.disabled = isDisabled;
158
+ }
159
+ ngOnInit() {
160
+ console.log(this.form);
161
+ this.timelineValue.valueChanges.
162
+ pipe(debounceTime(100), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => this.changeTimeline(value));
163
+ }
164
+ ngOnDestroy() {
165
+ this.stateChanges.complete();
166
+ }
56
167
  };
168
+ TimelineFilterComponent.nextId = 0;
57
169
  TimelineFilterComponent.decorators = [
58
170
  { type: Component, args: [{
59
171
  selector: 'app-timeline-filter',
60
- template: "<ng-container [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>{{labelText}}</mat-label>\n <mat-select [formControl]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n <button mat-button *ngIf=\"showClearbutton && timelineValue.value\" matSuffix mat-icon-button\n (click)=\"timelineValue.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>From Date</mat-label>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>To Date</mat-label>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>",
172
+ template: "<ng-container *ngIf=\"form\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>{{labelText}}</mat-label>\n <mat-select [formControl]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n <button mat-button *ngIf=\"showClearbutton && timelineValue.value\" matSuffix mat-icon-button\n (click)=\"timelineValue.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>From Date</mat-label>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>To Date</mat-label>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>\n<div *ngIf=\"!form\" [formGroup]=\"selectorForm\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline?.value\">\n {{ timeline?.viewValue }} {{ selectedRange?.show_custom_field && timeline?.value == 1 ? getDateRangeString() : '' }}\n </mat-option>\n </mat-select>\n <mat-date-range-input hidden (dateChange)=\"onCustomDateChange($event)\" [rangePicker]=\"picker\">\n <input matStartDate #customStartDate>\n <input matEndDate (dateChange)=\"dateRangeChange(customStartDate, customEndDate)\" #customEndDate>\n </mat-date-range-input>\n <mat-date-range-picker #picker [touchUi]=\"touchUi\"></mat-date-range-picker>\n</div>\n",
173
+ providers: [
174
+ {
175
+ provide: MatFormFieldControl,
176
+ useExisting: TimelineFilterComponent_1
177
+ }
178
+ ],
61
179
  styles: [""]
62
180
  },] }
63
181
  ];
64
- TimelineFilterComponent.ctorParameters = () => [];
182
+ TimelineFilterComponent.ctorParameters = () => [
183
+ { type: FormBuilder },
184
+ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
185
+ { type: DatePipe }
186
+ ];
65
187
  TimelineFilterComponent.propDecorators = {
188
+ picker: [{ type: ViewChild, args: ['picker',] }],
66
189
  timelineValue: [{ type: Input }],
67
190
  timelines: [{ type: Input }],
68
- labelText: [{ type: Input }],
69
191
  dateFrom: [{ type: Input }],
70
192
  dateTo: [{ type: Input }],
71
193
  appearance: [{ type: Input }],
72
194
  showClearbutton: [{ type: Input }],
73
195
  form: [{ type: Input }],
74
- defaultValue: [{ type: Input }]
196
+ labelText: [{ type: Input }],
197
+ selectedValue: [{ type: Input }],
198
+ touchUi: [{ type: Input }],
199
+ selectedValueChange: [{ type: Output }],
200
+ selectionChange: [{ type: Output }],
201
+ defaultValue: [{ type: Input }],
202
+ required: [{ type: Input }],
203
+ disabled: [{ type: Input }],
204
+ value: [{ type: Input }]
75
205
  };
76
- TimelineFilterComponent = __decorate([
206
+ TimelineFilterComponent = TimelineFilterComponent_1 = __decorate([
77
207
  UntilDestroy()
78
208
  ], TimelineFilterComponent);
79
209
  export { TimelineFilterComponent };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGltZWxpbmUtZmlsdGVyL3RpbWVsaW5lLWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztJQVE1Qyx1QkFBdUIsU0FBdkIsdUJBQXVCO0lBZ0NsQztRQTlCUyxrQkFBYSxHQUFnQixJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQVU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7WUFDakMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUU7WUFDaEMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7WUFDckMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7WUFDckMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7WUFDdkMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7WUFDdkMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUU7WUFDckMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUU7WUFDckMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUU7U0FDdEMsQ0FBQztRQUVPLGNBQVMsR0FBVyxpQkFBaUIsQ0FBQztRQUN0QyxhQUFRLEdBQVcsV0FBVyxDQUFDO1FBQy9CLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFDM0IsZUFBVSxHQUFRLFFBQVEsQ0FBQTtRQUMxQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVExQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7SUFFdEIsQ0FBQztJQVBqQixJQUFhLFlBQVksQ0FBQyxLQUFVO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQU1ELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVk7WUFDN0IsSUFBSSxDQUNGLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsb0JBQW9CLEVBQUUsRUFDdEIsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUNyQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFHRCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWEsRUFBRSxLQUFVO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDakQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FFRixDQUFBOztZQXRFQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsMCtEQUErQzs7YUFFaEQ7Ozs7NEJBR0UsS0FBSzt3QkFDTCxLQUFLO3dCQWVMLEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSzttQkFDTCxLQUFLOzJCQUVMLEtBQUs7O0FBekJLLHVCQUF1QjtJQU5uQyxZQUFZLEVBQUU7R0FNRix1QkFBdUIsQ0FpRW5DO1NBakVZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNhbGN1bGF0ZVRpbWVsaW5lIH0gZnJvbSAnLi9jYWxjdWxhdGUtdGltZWxpbmUnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10aW1lbGluZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZWxpbmUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGltZWxpbmVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHRpbWVsaW5lVmFsdWU6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgQElucHV0KCkgdGltZWxpbmVzOiBhbnlbXSA9IFtcbiAgICB7IHZhbHVlOiAxLCB2aWV3VmFsdWU6ICdDdXN0b20nIH0sXG4gICAgeyB2YWx1ZTogMiwgdmlld1ZhbHVlOiAnVG9kYXknIH0sXG4gICAgeyB2YWx1ZTogMywgdmlld1ZhbHVlOiAnWWVzdGVyZGF5JyB9LFxuICAgIHsgdmFsdWU6IDQsIHZpZXdWYWx1ZTogJ1RoaXMgV2VlaycgfSxcbiAgICB7IHZhbHVlOiA1LCB2aWV3VmFsdWU6ICdMYXN0IFdlZWsnIH0sXG4gICAgeyB2YWx1ZTogNiwgdmlld1ZhbHVlOiAnVGhpcyBNb250aCcgfSxcbiAgICB7IHZhbHVlOiA3LCB2aWV3VmFsdWU6ICdMYXN0IE1vbnRoJyB9LFxuICAgIHsgdmFsdWU6IDgsIHZpZXdWYWx1ZTogJ1RoaXMgUXVhcnRlcicgfSxcbiAgICB7IHZhbHVlOiA5LCB2aWV3VmFsdWU6ICdMYXN0IFF1YXJ0ZXInIH0sXG4gICAgeyB2YWx1ZTogMTAsIHZpZXdWYWx1ZTogJ1RoaXMgWWVhcicgfSxcbiAgICB7IHZhbHVlOiAxMSwgdmlld1ZhbHVlOiAnTGFzdCBZZWFyJyB9LFxuICAgIHsgdmFsdWU6IDEyLCB2aWV3VmFsdWU6ICdBbGwgZGF0ZXMnIH0sXG4gIF07XG5cbiAgQElucHV0KCkgbGFiZWxUZXh0OiBzdHJpbmcgPSAnU2VsZWN0IFRpbWVsaW5lJztcbiAgQElucHV0KCkgZGF0ZUZyb206IHN0cmluZyA9ICdkYXRlX2Zyb20nO1xuICBASW5wdXQoKSBkYXRlVG86IHN0cmluZyA9ICdkYXRlX3RvJztcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogYW55ID0gXCJsZWdhY3lcIlxuICBASW5wdXQoKSBzaG93Q2xlYXJidXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0VmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudGltZWxpbmVWYWx1ZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VUaW1lbGluZSh2YWx1ZSk7XG4gIH1cblxuICBzaG93Q3VzdG9tRGF0ZUZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lbGluZVZhbHVlLnZhbHVlQ2hhbmdlcy5cbiAgICAgIHBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5jaGFuZ2VUaW1lbGluZSh2YWx1ZSkpO1xuICB9XG5cbiAgcmVzZXRGaWVsZFZhbHVlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkKS5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuXG4gIGdldEZpZWxkVmFsdWUoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KGZpZWxkKS52YWx1ZTtcbiAgfVxuXG4gIHNldEZpZWxkVmFsdWUoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuZm9ybS5nZXQoZmllbGQpLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIGNoYW5nZVRpbWVsaW5lKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCB0aW1lbGluZSA9IGNhbGN1bGF0ZVRpbWVsaW5lKHZhbHVlKTtcbiAgICBpZiAodGltZWxpbmUpIHtcbiAgICAgIHRoaXMuc2V0RmllbGRWYWx1ZSh0aGlzLmRhdGVGcm9tLCB0aW1lbGluZS5kYXRlX2Zyb20pXG4gICAgICB0aGlzLnNldEZpZWxkVmFsdWUodGhpcy5kYXRlVG8sIHRpbWVsaW5lLmRhdGVfdG8pXG4gICAgICB0aGlzLnNob3dDdXN0b21EYXRlRmllbGRzID0gdGltZWxpbmUuc2hvd19jdXN0b21fZmllbGQ7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGltZWxpbmUtZmlsdGVyL3RpbWVsaW5lLWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQXdCLFdBQVcsRUFBRSxXQUFXLEVBQWEsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0lBY3ZELHVCQUF1QixxQ0FBdkIsdUJBQXVCO0lBaURsQyxZQUNFLFdBQXdCLEVBQ0csU0FBb0IsRUFDdkMsUUFBa0I7UUFEQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFqRG5CLGtCQUFhLEdBQWdCLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELGNBQVMsR0FBVTtZQUMxQixFQUFFLEtB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O3dCQUNMLEtBQUs7dUJBY0wsS0FBSztxQkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSzttQkFJTCxLQUFLO3dCQUNMLEtBQUs7NEJBQ0wsS0FBSztzQkFDTCxLQUFLO2tDQUNMLE1BQU07OEJBQ04sTUFBTTsyQkFZTixLQUFLO3VCQXFCTCxLQUFLO3VCQVNMLEtBQUs7b0JBU0wsS0FBSzs7QUFqRkssdUJBQXVCO0lBWm5DLFlBQVksRUFBRTtHQVlGLHVCQUF1QixDQXFNbkM7U0FyTVksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gXCJAbmduZWF0L3VudGlsLWRlc3Ryb3lcIjtcbmltcG9ydCB7IFRpbWVsaW5lVmFsdWUsIGNhbGN1bGF0ZVRpbWVsaW5lIH0gZnJvbSAnLi9jYWxjdWxhdGUtdGltZWxpbmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGltZWxpbmUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWVsaW5lLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IFRpbWVsaW5lRmlsdGVyQ29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQFZpZXdDaGlsZCgncGlja2VyJykgcGlja2VyO1xuICBASW5wdXQoKSB0aW1lbGluZVZhbHVlOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIEBJbnB1dCgpIHRpbWVsaW5lczogYW55W10gPSBbXG4gICAgeyB2YWx1ZTogMSwgdmlld1ZhbHVlOiAnQ3VzdG9tJyB9LFxuICAgIHsgdmFsdWU6IDIsIHZpZXdWYWx1ZTogJ1RvZGF5JyB9LFxuICAgIHsgdmFsdWU6IDMsIHZpZXdWYWx1ZTogJ1llc3RlcmRheScgfSxcbiAgICB7IHZhbHVlOiA0LCB2aWV3VmFsdWU6ICdUaGlzIFdlZWsnIH0sXG4gICAgeyB2YWx1ZTogNSwgdmlld1ZhbHVlOiAnTGFzdCBXZWVrJyB9LFxuICAgIHsgdmFsdWU6IDYsIHZpZXdWYWx1ZTogJ1RoaXMgTW9udGgnIH0sXG4gICAgeyB2YWx1ZTogNywgdmlld1ZhbHVlOiAnTGFzdCBNb250aCcgfSxcbiAgICB7IHZhbHVlOiA4LCB2aWV3VmFsdWU6ICdUaGlzIFF1YXJ0ZXInIH0sXG4gICAgeyB2YWx1ZTogOSwgdmlld1ZhbHVlOiAnTGFzdCBRdWFydGVyJyB9LFxuICAgIHsgdmFsdWU6IDEwLCB2aWV3VmFsdWU6ICdUaGlzIFllYXInIH0sXG4gICAgeyB2YWx1ZTogMTEsIHZpZXdWYWx1ZTogJ0xhc3QgWWVhcicgfSxcbiAgICB7IHZhbHVlOiAxMiwgdmlld1ZhbHVlOiAnQWxsIGRhdGVzJyB9LFxuICBdO1xuICBASW5wdXQoKSBkYXRlRnJvbTogc3RyaW5nID0gJ2RhdGVfZnJvbSc7XG4gIEBJbnB1dCgpIGRhdGVUbzogc3RyaW5nID0gJ2RhdGVfdG8nO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBhbnkgPSBcImxlZ2FjeVwiXG4gIEBJbnB1dCgpIHNob3dDbGVhcmJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgIFRoZSBmb3JtIGlucHV0IGlzIGRlcHJhdGVkXG4gICAqL1xuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXAgPSBudWxsO1xuICBASW5wdXQoKSBsYWJlbFRleHQ6IHN0cmluZyA9ICdTZWxlY3QgVGltZWxpbmUnO1xuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBhbnk7XG4gIEBJbnB1dCgpIHRvdWNoVWk6IGJvb2xlYW4gPSB0cnVlO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzZWxlY3RvckZvcm06IEZvcm1Hcm91cDtcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBjb250cm9sVHlwZSA9ICd0aW1lbGluZS1maWx0ZXInO1xuICBpZCA9IGB0aW1lbGluZS1maWx0ZXItJHtUaW1lbGluZUZpbHRlckNvbXBvbmVudC5uZXh0SWQrK31gO1xuICBkZXNjcmliZWRCeSA9ICcnO1xuXG4gIHNlbGVjdGVkUmFuZ2U6IFRpbWVsaW5lVmFsdWU7XG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0VmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudGltZWxpbmVWYWx1ZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VUaW1lbGluZSh2YWx1ZSk7XG4gIH1cblxuICBzaG93Q3VzdG9tRGF0ZUZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZVxuICApIHtcbiAgICB0aGlzLnNlbGVjdG9yRm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlbGVjdF92YWx1ZTogW251bGxdLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3JlcXVpcmVkOyB9XG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2VsZWN0b3JGb3JtLmdldCgnc2VsZWN0X3ZhbHVlJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5zZWxlY3RvckZvcm0uZGlzYWJsZSgpIDogdGhpcy5zZWxlY3RvckZvcm0uZW5hYmxlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0b3JGb3JtLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RvckZvcm0udmFsdWUuc2VsZWN0X3ZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgc2V0IHZhbHVlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0b3JGb3JtLnBhdGNoVmFsdWUoeyBzZWxlY3RfdmFsdWU6IGRhdGEgfHwgJycgfSk7XG4gICAgdGhpcy5faGFuZGxlSW5wdXQoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBnZXREYXRlUmFuZ2VTdHJpbmcoKSB7XG4gICAgbGV0IHN0ciA9IFwiXCI7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSYW5nZT8uc2hvd19jdXN0b21fZmllbGQpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUmFuZ2U/LmRhdGVfZnJvbS50b1VUQ1N0cmluZygpICE9ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgIHN0ciArPSAnIC0gJyArIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWRSYW5nZT8uZGF0ZV9mcm9tPy50b1VUQ1N0cmluZygpKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSYW5nZT8uZGF0ZV90by50b1VUQ1N0cmluZygpICE9ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgIHN0ciArPSAnIC0gJyArIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWRSYW5nZT8uZGF0ZV90bz8udG9VVENTdHJpbmcoKSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJlc2V0RmllbGRWYWx1ZShmaWVsZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb3JtLmdldChmaWVsZCkuc2V0VmFsdWUoJycpO1xuICB9XG5cblxuICBnZXRGaWVsZFZhbHVlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChmaWVsZCkudmFsdWU7XG4gIH1cblxuICBzZXRGaWVsZFZhbHVlKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkKS5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBjaGFuZ2VUaW1lbGluZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgdGltZWxpbmUgPSBjYWxjdWxhdGVUaW1lbGluZSh2YWx1ZSk7XG4gICAgaWYgKHRpbWVsaW5lKSB7XG4gICAgICB0aGlzLnNldEZpZWxkVmFsdWUodGhpcy5kYXRlRnJvbSwgdGltZWxpbmUuZGF0ZV9mcm9tKVxuICAgICAgdGhpcy5zZXRGaWVsZFZhbHVlKHRoaXMuZGF0ZVRvLCB0aW1lbGluZS5kYXRlX3RvKVxuICAgICAgdGhpcy5zaG93Q3VzdG9tRGF0ZUZpZWxkcyA9IHRpbWVsaW5lLnNob3dfY3VzdG9tX2ZpZWxkO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PSAxKSB7XG4gICAgICB0aGlzLnBpY2tlci5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJhbmdlOiBUaW1lbGluZVZhbHVlID0gY2FsY3VsYXRlVGltZWxpbmUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZFJhbmdlID0gcmFuZ2U7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQocmFuZ2UpO1xuICB9XG5cbiAgZGF0ZVJhbmdlQ2hhbmdlKGRhdGVSYW5nZVN0YXJ0OiBIVE1MSW5wdXRFbGVtZW50LCBkYXRlUmFuZ2VFbmQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICBjb25zdCByYW5nZTogVGltZWxpbmVWYWx1ZSA9IHtcbiAgICAgIGRhdGVfZnJvbSA6IG5ldyBEYXRlKGRhdGVSYW5nZVN0YXJ0LnZhbHVlKSxcbiAgICAgIGRhdGVfdG86IG5ldyBEYXRlKGRhdGVSYW5nZUVuZC52YWx1ZSksXG4gICAgICBzaG93X2N1c3RvbV9maWVsZDogdHJ1ZVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUmFuZ2UgPSByYW5nZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChyYW5nZSk7XG4gIH1cblxuICBvbkN1c3RvbURhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcblxuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gZGF0YTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm0pO1xuXG4gICAgdGhpcy50aW1lbGluZVZhbHVlLnZhbHVlQ2hhbmdlcy5cbiAgICAgIHBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5jaGFuZ2VUaW1lbGluZSh2YWx1ZSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iXX0=