kwikid-agent-dashboard 0.0.37 → 0.0.39

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 (109) hide show
  1. package/bundles/kwikid-agent-dashboard.umd.js +3655 -1317
  2. package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
  3. package/esm2015/lib/kwikid-agent-dashboard.component.js +39 -120
  4. package/esm2015/lib/kwikid-agent-dashboard.module.js +26 -35
  5. package/esm2015/lib/v1/components/action-button/action-button.component.js +91 -0
  6. package/esm2015/lib/v1/components/customer-details/customer-details.component.js +139 -0
  7. package/esm2015/lib/v1/components/customer-list/customer-list.component.js +201 -0
  8. package/esm2015/lib/v1/components/customer-tile/customer-tile.component.js +137 -0
  9. package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.component.js +54 -0
  10. package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.definitions.js +36 -0
  11. package/esm2015/lib/v1/helpers/maps.helpers.js +46 -0
  12. package/esm2015/lib/v1/kwikid-agent-dashboard.component.js +177 -0
  13. package/esm2015/lib/v1/kwikid-agent-dashboard.module.js +120 -0
  14. package/esm2015/lib/v1/pipes/search-filter.pipe.js +62 -0
  15. package/esm2015/lib/v1/services/agent.service.js +149 -0
  16. package/esm2015/lib/v1/services/google-maps.service.js +201 -0
  17. package/esm2015/lib/v1/services/open-street-maps.service.js +252 -0
  18. package/esm2015/lib/v2/components/agent-info/agent-info.component.js +20 -0
  19. package/esm2015/lib/v2/components/agent-info/agent-info.module.js +37 -0
  20. package/esm2015/lib/v2/components/bottom-sheet/bottom-sheet.component.js +111 -0
  21. package/esm2015/lib/v2/components/bottom-sheet/bottom-sheet.module.js +41 -0
  22. package/esm2015/lib/v2/components/components.module.js +79 -0
  23. package/esm2015/lib/v2/components/map-view/map-view.component.js +39 -0
  24. package/esm2015/lib/v2/components/map-view/map-view.module.js +37 -0
  25. package/esm2015/lib/v2/components/primary-actions/primary-actions.component.js +65 -0
  26. package/esm2015/lib/v2/components/primary-actions/primary-actions.module.js +54 -0
  27. package/esm2015/lib/v2/components/task-detail/task-detail.component.js +82 -0
  28. package/esm2015/lib/v2/components/task-detail/task-detail.module.js +41 -0
  29. package/esm2015/lib/v2/components/task-item/task-item.component.js +107 -0
  30. package/esm2015/lib/v2/components/task-item/task-item.constant.js +12 -0
  31. package/esm2015/lib/v2/components/task-item/task-item.module.js +45 -0
  32. package/esm2015/lib/v2/components/task-item-status/task-item-status.component.js +51 -0
  33. package/esm2015/lib/v2/components/task-item-status/task-item-status.module.js +19 -0
  34. package/esm2015/lib/v2/components/task-list/task-list.component.js +186 -0
  35. package/esm2015/lib/v2/components/task-list/task-list.module.js +57 -0
  36. package/esm2015/lib/v2/components/task-list-search/task-list-search.component.js +118 -0
  37. package/esm2015/lib/v2/components/task-list-search/task-list-search.module.js +41 -0
  38. package/esm2015/lib/v2/components/task-preview/task-preview.component.js +30 -0
  39. package/esm2015/lib/v2/components/task-preview/task-preview.module.js +37 -0
  40. package/esm2015/lib/v2/helpers/array.helper.js +10 -0
  41. package/esm2015/lib/v2/helpers/date.helplers.js +17 -0
  42. package/esm2015/lib/v2/kwikid-agent-dashboard.component.js +61 -0
  43. package/esm2015/lib/v2/kwikid-agent-dashboard.module.js +45 -0
  44. package/esm2015/lib/v2/layout/layout-body/layout-body.component.js +274 -0
  45. package/esm2015/lib/v2/layout/layout-body/layout-body.module.js +55 -0
  46. package/esm2015/lib/v2/layout/layout-header/layout-header.component.js +60 -0
  47. package/esm2015/lib/v2/layout/layout-header/layout-header.module.js +48 -0
  48. package/esm2015/lib/v2/layout/layout.module.js +18 -0
  49. package/esm2015/lib/v2/pipes/search-filter.pipe.js +62 -0
  50. package/fesm2015/kwikid-agent-dashboard.js +3255 -1100
  51. package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
  52. package/lib/kwikid-agent-dashboard.component.d.ts +11 -36
  53. package/lib/kwikid-agent-dashboard.module.d.ts +13 -16
  54. package/lib/v1/components/action-button/action-button.component.d.ts +18 -0
  55. package/lib/{components → v1/components}/customer-details/customer-details.component.d.ts +13 -6
  56. package/lib/{components → v1/components}/customer-list/customer-list.component.d.ts +25 -15
  57. package/lib/{components → v1/components}/customer-tile/customer-tile.component.d.ts +12 -5
  58. package/lib/{components → v1/components}/customer-tile/status-pill/status-pill.component.d.ts +6 -2
  59. package/lib/{components → v1/components}/customer-tile/status-pill/status-pill.definitions.d.ts +1 -1
  60. package/lib/v1/kwikid-agent-dashboard.component.d.ts +54 -0
  61. package/lib/v1/kwikid-agent-dashboard.module.d.ts +23 -0
  62. package/lib/{pipes → v1/pipes}/search-filter.pipe.d.ts +1 -1
  63. package/lib/{services → v1/services}/agent.service.d.ts +1 -1
  64. package/lib/{services → v1/services}/google-maps.service.d.ts +4 -4
  65. package/lib/{services → v1/services}/open-street-maps.service.d.ts +5 -5
  66. package/lib/v2/components/agent-info/agent-info.component.d.ts +8 -0
  67. package/lib/v2/components/agent-info/agent-info.module.d.ts +11 -0
  68. package/lib/v2/components/bottom-sheet/bottom-sheet.component.d.ts +24 -0
  69. package/lib/v2/components/bottom-sheet/bottom-sheet.module.d.ts +12 -0
  70. package/lib/v2/components/components.module.d.ts +15 -0
  71. package/lib/v2/components/map-view/map-view.component.d.ts +10 -0
  72. package/lib/v2/components/map-view/map-view.module.d.ts +11 -0
  73. package/lib/v2/components/primary-actions/primary-actions.component.d.ts +14 -0
  74. package/lib/v2/components/primary-actions/primary-actions.module.d.ts +13 -0
  75. package/lib/v2/components/task-detail/task-detail.component.d.ts +23 -0
  76. package/lib/v2/components/task-detail/task-detail.module.d.ts +12 -0
  77. package/lib/v2/components/task-item/task-item.component.d.ts +23 -0
  78. package/lib/v2/components/task-item/task-item.constant.d.ts +11 -0
  79. package/lib/v2/components/task-item/task-item.module.d.ts +13 -0
  80. package/lib/v2/components/task-item-status/task-item-status.component.d.ts +14 -0
  81. package/lib/v2/components/task-item-status/task-item-status.module.d.ts +9 -0
  82. package/lib/v2/components/task-list/task-list.component.d.ts +45 -0
  83. package/lib/v2/components/task-list/task-list.module.d.ts +16 -0
  84. package/lib/v2/components/task-list-search/task-list-search.component.d.ts +34 -0
  85. package/lib/v2/components/task-list-search/task-list-search.module.d.ts +12 -0
  86. package/lib/v2/components/task-preview/task-preview.component.d.ts +11 -0
  87. package/lib/v2/components/task-preview/task-preview.module.d.ts +11 -0
  88. package/lib/v2/helpers/array.helper.d.ts +1 -0
  89. package/lib/v2/helpers/date.helplers.d.ts +3 -0
  90. package/lib/v2/kwikid-agent-dashboard.component.d.ts +17 -0
  91. package/lib/v2/kwikid-agent-dashboard.module.d.ts +13 -0
  92. package/lib/v2/layout/layout-body/layout-body.component.d.ts +42 -0
  93. package/lib/v2/layout/layout-body/layout-body.module.d.ts +14 -0
  94. package/lib/v2/layout/layout-header/layout-header.component.d.ts +20 -0
  95. package/lib/v2/layout/layout-header/layout-header.module.d.ts +13 -0
  96. package/lib/v2/layout/layout.module.d.ts +8 -0
  97. package/lib/v2/pipes/search-filter.pipe.d.ts +25 -0
  98. package/package.json +2 -2
  99. package/esm2015/lib/components/customer-details/customer-details.component.js +0 -90
  100. package/esm2015/lib/components/customer-list/customer-list.component.js +0 -165
  101. package/esm2015/lib/components/customer-tile/customer-tile.component.js +0 -87
  102. package/esm2015/lib/components/customer-tile/status-pill/status-pill.component.js +0 -32
  103. package/esm2015/lib/components/customer-tile/status-pill/status-pill.definitions.js +0 -36
  104. package/esm2015/lib/helpers/maps.helpers.js +0 -46
  105. package/esm2015/lib/pipes/search-filter.pipe.js +0 -62
  106. package/esm2015/lib/services/agent.service.js +0 -153
  107. package/esm2015/lib/services/google-maps.service.js +0 -201
  108. package/esm2015/lib/services/open-street-maps.service.js +0 -252
  109. /package/lib/{helpers → v1/helpers}/maps.helpers.d.ts +0 -0
@@ -1,165 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { FormControl, FormGroup } from '@angular/forms';
4
- import { TuiDay, TuiDayRange } from '@taiga-ui/cdk';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/google-maps.service";
7
- import * as i2 from "../../services/open-street-maps.service";
8
- import * as i3 from "../../services/agent.service";
9
- import * as i4 from "kwikui";
10
- import * as i5 from "@angular/cdk/scrolling";
11
- import * as i6 from "../customer-tile/customer-tile.component";
12
- import * as i7 from "@angular/forms";
13
- import * as i8 from "@angular/common";
14
- import * as i9 from "../../pipes/search-filter.pipe";
15
- export class CustomerListComponent {
16
- constructor(googleMapsService, openStreetMapsService, agentService) {
17
- this.googleMapsService = googleMapsService;
18
- this.openStreetMapsService = openStreetMapsService;
19
- this.agentService = agentService;
20
- this.nextStep = new EventEmitter();
21
- this.removeTask = new EventEmitter();
22
- this.filterTaskList = new EventEmitter();
23
- this.filteredData = [];
24
- this.formGroup = new FormGroup({});
25
- this.max = new TuiDay(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());
26
- }
27
- ngOnInit() {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- this.setDateRange();
30
- });
31
- }
32
- setDateRange() {
33
- var _a, _b, _c, _d, _e;
34
- const searchDateStart = (_b = (_a = this.config.dashboard) === null || _a === void 0 ? void 0 : _a.searchDateStart) !== null && _b !== void 0 ? _b : {
35
- day: 0,
36
- month: 0,
37
- year: 0
38
- };
39
- const currentDate = new Date();
40
- const startDate = new Date((_c = currentDate.getFullYear() - (searchDateStart === null || searchDateStart === void 0 ? void 0 : searchDateStart.year)) !== null && _c !== void 0 ? _c : 0, (_d = currentDate.getMonth() - (searchDateStart === null || searchDateStart === void 0 ? void 0 : searchDateStart.month)) !== null && _d !== void 0 ? _d : 0, (_e = currentDate.getDate() - (searchDateStart === null || searchDateStart === void 0 ? void 0 : searchDateStart.day)) !== null && _e !== void 0 ? _e : 0);
41
- this.fromDate = this.getDate(startDate);
42
- this.toDate = this.getDate(null);
43
- this.dateRangeFormControl = new FormControl({
44
- value: new TuiDayRange(new TuiDay(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()), this.max),
45
- disabled: false
46
- });
47
- this.formGroup.addControl('dateRange', this.dateRangeFormControl);
48
- this.searchFormControl = new FormControl('');
49
- this.formGroup.addControl('search', this.searchFormControl);
50
- }
51
- setUpMaps() {
52
- var _a;
53
- return __awaiter(this, void 0, void 0, function* () {
54
- if (this.config.dashboard.isShowMaps) {
55
- if (((_a = this.config.dashboard) === null || _a === void 0 ? void 0 : _a.mapType) == 'open-street') {
56
- yield this.openStreetMapsService.initializeMap();
57
- }
58
- else {
59
- yield this.googleMapsService.initializeMap();
60
- }
61
- }
62
- });
63
- }
64
- setCustomersList() {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- if (this.config.dashboard.isShowMaps) {
67
- this.filteredData = yield this.plotMarkers(this.customers);
68
- }
69
- else {
70
- this.filteredData = this.customers;
71
- }
72
- });
73
- }
74
- ngAfterViewInit() {
75
- var _a, _b;
76
- this.maxLength = (_b = (_a = this.config.dashboard) === null || _a === void 0 ? void 0 : _a.searchDateRange) !== null && _b !== void 0 ? _b : this.maxLength;
77
- setTimeout(() => __awaiter(this, void 0, void 0, function* () {
78
- yield this.setUpMaps();
79
- yield this.setCustomersList();
80
- }), 1000);
81
- }
82
- ngOnChanges() {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- yield this.setCustomersList();
85
- });
86
- }
87
- handleOnClickNext(e) {
88
- this.nextStep.emit(e);
89
- }
90
- getDate(d) {
91
- const date = d ? new Date(d) : new Date();
92
- const year = date.getFullYear();
93
- let month = date.getMonth() + 1;
94
- let day = date.getDate();
95
- if (month < 10)
96
- month = '0' + month;
97
- if (day < 10)
98
- day = '0' + day;
99
- const today = `${year}-${month}-${day}`;
100
- return today;
101
- }
102
- plotMarkers(customers) {
103
- var _a, _b;
104
- return __awaiter(this, void 0, void 0, function* () {
105
- if (!((_a = this.config.dashboard) === null || _a === void 0 ? void 0 : _a.isPlotCompletedTaskMarkers)) {
106
- customers = customers.filter((customer) => {
107
- return this.agentService.canPlotMarkers(customer.session_status);
108
- });
109
- }
110
- if (((_b = this.config.dashboard) === null || _b === void 0 ? void 0 : _b.mapType) == 'open-street') {
111
- customers = yield this.openStreetMapsService.plotDirectionsForAllTasks(customers);
112
- }
113
- else {
114
- customers = yield this.googleMapsService.plotDirectionsForAllTasks(customers);
115
- }
116
- return customers;
117
- });
118
- }
119
- getTuiDate(event) {
120
- let year = event.year;
121
- let month = event.month + 1;
122
- let date = event.day;
123
- month = month < 10 ? '0' + month : month;
124
- date = date < 10 ? '0' + date : date;
125
- return `${year}-${month}-${date}`;
126
- }
127
- onDateRangeChange(event) {
128
- this.fromDate = this.getTuiDate(event.value.from);
129
- this.toDate = this.getTuiDate(event.value.to);
130
- this.handleOnFilterTaskList({
131
- from_date: this.fromDate,
132
- to_date: this.toDate
133
- });
134
- }
135
- onSearchFilter(event) {
136
- this.searchText = event.value;
137
- }
138
- handleOnClickRemoveTask(task) {
139
- this.removeTask.emit(task);
140
- }
141
- handleOnFilterTaskList(filter) {
142
- this.filterTaskList.emit(filter);
143
- }
144
- }
145
- /** @nocollapse */ CustomerListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerListComponent, deps: [{ token: i1.GoogleMapsService }, { token: i2.OpenStreetMapsService }, { token: i3.AgentService }], target: i0.ɵɵFactoryTarget.Component });
146
- /** @nocollapse */ CustomerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerListComponent, selector: "customer-list", inputs: { customers: "customers", config: "config" }, outputs: { nextStep: "nextStep", removeTask: "removeTask", filterTaskList: "filterTaskList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"customer-list-wrapper\">\n <div class=\"customer-list-filter\" [formGroup]=\"formGroup\">\n <kwikui-input-date-range\n *ngIf=\"config?.dashboard?.isAllowDateFilter\"\n [label]=\"'Date Range'\"\n [id]=\"'dateRange'\"\n [size]=\"'m'\"\n [max]=\"max\"\n [maxLength]=\"maxLength\"\n [formControlName]=\"'dateRange'\"\n [formControl]=\"dateRangeFormControl\"\n (getKeyValue)=\"onDateRangeChange($event)\"\n ></kwikui-input-date-range>\n <kwikui-input\n *ngIf=\"config?.dashboard?.isAllowSearchFilter\"\n [label]=\"'Search'\"\n [id]=\"'search'\"\n icon=\"tuiIconSearch\"\n size=\"m\"\n placeholder=\"Search Any Task\"\n [formControlName]=\"'search'\"\n [formControl]=\"searchFormControl\"\n (getKeyValue)=\"onSearchFilter($event)\"\n ></kwikui-input>\n </div>\n\n <div class=\"customer-task-list\">\n <cdk-virtual-scroll-viewport itemSize=\"1\" class=\"customer-task-list-scroll\">\n <div\n *cdkVirtualFor=\"\n let customer of filteredData | filter: searchText;\n index as index\n \"\n >\n <customer-tile\n class=\"example-item\"\n [customer]=\"customer\"\n [config]=\"config\"\n [index]=\"index\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n ></customer-tile>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n\n <div class=\"customer-list-empty\" *ngIf=\"filteredData.length === 0\">\n {{config?.dashboard?.emptyTaskListMessage ?? '0 Tasks for the given Date.'}}\n </div>\n</div>\n", styles: [".customer-list-wrapper{width:100%;height:100%;display:flex;flex-direction:column}.customer-list-filter{height:-moz-fit-content;height:fit-content;width:100%;display:flex;flex-direction:column;padding:1rem;grid-gap:.8rem;gap:.8rem;border-bottom:.5px solid #ddd}.customer-list-empty{height:100%;width:100%;margin-top:.5rem;font-size:1rem;text-align:center}.customer-task-list{height:100%}.customer-task-list-scroll{height:100%;width:100%}.cdk-virtual-scroll-spacer{height:0!important}.example-item{height:50px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i4.KwikUIInputDateRangeComponent, selector: "kwikui-input-date-range", inputs: ["disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "max", "maxLength", "min", "minLength", "placeholder", "postfix", "prefix", "properties", "size", "validators"], outputs: ["getKeyValue"] }, { type: i4.KwikUIInputComponent, selector: "kwikui-input", inputs: ["case", "disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "placeholder", "postfix", "prefix", "properties", "size", "type", "validators"], outputs: ["getKeyValue"] }, { type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i6.CustomerTileComponent, selector: "customer-tile", inputs: ["customer", "index", "config"], outputs: ["nextStep", "removeTask"] }], directives: [{ type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], pipes: { "filter": i9.Ng2SearchPipe } });
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerListComponent, decorators: [{
148
- type: Component,
149
- args: [{
150
- selector: 'customer-list',
151
- templateUrl: './customer-list.component.html',
152
- styleUrls: ['./customer-list.component.css']
153
- }]
154
- }], ctorParameters: function () { return [{ type: i1.GoogleMapsService }, { type: i2.OpenStreetMapsService }, { type: i3.AgentService }]; }, propDecorators: { customers: [{
155
- type: Input
156
- }], config: [{
157
- type: Input
158
- }], nextStep: [{
159
- type: Output
160
- }], removeTask: [{
161
- type: Output
162
- }], filterTaskList: [{
163
- type: Output
164
- }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b21lci1saXN0L2N1c3RvbWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tZXItbGlzdC9jdXN0b21lci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyxxQkFBcUI7SUFrQ2hDLFlBQ1MsaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxZQUEwQjtRQUYxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUE3Qm5DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzlCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR2hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUtwQyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixjQUFTLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFPekMsUUFBRyxHQUFXLElBQUksTUFBTSxDQUN0QixJQUFJLElBQUksRUFBRSxD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LENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUs7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFJO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFNO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7O3NJQTVLVSxxQkFBcUI7MEhBQXJCLHFCQUFxQiwrTkNibEMsNm9EQWtEQTs0RkRyQ2EscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztpQkFDN0M7dUtBR0MsU0FBUztzQkFEUixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUdWlEYXksIFR1aURheVJhbmdlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dvb2dsZS1tYXBzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRVN0YXR1cyB9IGZyb20gJy4uL2N1c3RvbWVyLXRpbGUvc3RhdHVzLXBpbGwvc3RhdHVzLXBpbGwuZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgQWdlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPcGVuU3RyZWV0TWFwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcGVuLXN0cmVldC1tYXBzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjdXN0b21lci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b21lci1saXN0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21lckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBjdXN0b21lcnM6IGFueTtcblxuICBASW5wdXQoKVxuICBjb25maWc6IGFueTtcblxuICBAT3V0cHV0KClcbiAgbmV4dFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlbW92ZVRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlclRhc2tMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHNlYXJjaFRleHQ7XG5cbiAgbGFzdEluZm9XaW5kb3dPcGVuZWQ6IGFueTtcbiAgZmlsdGVyZWREYXRhID0gW107XG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGRhdGVSYW5nZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgdG9EYXRlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBzZWFyY2hGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgZnJvbURhdGU6IHN0cmluZyB8IERhdGU7XG4gIHRvRGF0ZTogc3RyaW5nIHwgRGF0ZTtcbiAgbWF4OiBUdWlEYXkgPSBuZXcgVHVpRGF5KFxuICAgIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcbiAgICBuZXcgRGF0ZSgpLmdldE1vbnRoKCksXG4gICAgbmV3IERhdGUoKS5nZXREYXRlKClcbiAgKTtcbiAgbWF4TGVuZ3RoOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGdvb2dsZU1hcHNTZXJ2aWNlOiBHb29nbGVNYXBzU2VydmljZSxcbiAgICBwdWJsaWMgb3BlblN0cmVldE1hcHNTZXJ2aWNlOiBPcGVuU3RyZWV0TWFwc1NlcnZpY2UsXG4gICAgcHVibGljIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldERhdGVSYW5nZSgpO1xuICB9XG5cbiAgc2V0RGF0ZVJhbmdlKCkge1xuICAgIGNvbnN0IHNlYXJjaERhdGVTdGFydCA9IHRoaXMuY29uZmlnLmRhc2hib2FyZD8uc2VhcmNoRGF0ZVN0YXJ0ID8/IHtcbiAgICAgIGRheTogMCxcbiAgICAgIG1vbnRoOiAwLFxuICAgICAgeWVhcjogMFxuICAgIH07XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSAtIHNlYXJjaERhdGVTdGFydD8ueWVhciA/PyAwLFxuICAgICAgY3VycmVudERhdGUuZ2V0TW9udGgoKSAtIHNlYXJjaERhdGVTdGFydD8ubW9udGggPz8gMCxcbiAgICAgIGN1cnJlbnREYXRlLmdldERhdGUoKSAtIHNlYXJjaERhdGVTdGFydD8uZGF5ID8/IDBcbiAgICApO1xuXG4gICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuZ2V0RGF0ZShzdGFydERhdGUpO1xuICAgIHRoaXMudG9EYXRlID0gdGhpcy5nZXREYXRlKG51bGwpO1xuXG4gICAgdGhpcy5kYXRlUmFuZ2VGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICB2YWx1ZTogbmV3IFR1aURheVJhbmdlKFxuICAgICAgICBuZXcgVHVpRGF5KFxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKClcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICksXG4gICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdkYXRlUmFuZ2UnLCB0aGlzLmRhdGVSYW5nZUZvcm1Db250cm9sKTtcblxuICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ3NlYXJjaCcsIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wpO1xuICB9XG5cbiAgYXN5bmMgc2V0VXBNYXBzKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kYXNoYm9hcmQuaXNTaG93TWFwcykge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmRhc2hib2FyZD8ubWFwVHlwZSA9PSAnb3Blbi1zdHJlZXQnKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3BlblN0cmVldE1hcHNTZXJ2aWNlLmluaXRpYWxpemVNYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuaW5pdGlhbGl6ZU1hcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEN1c3RvbWVyc0xpc3QoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhc2hib2FyZC5pc1Nob3dNYXBzKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IGF3YWl0IHRoaXMucGxvdE1hcmtlcnModGhpcy5jdXN0b21lcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuY3VzdG9tZXJzO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1heExlbmd0aCA9IHRoaXMuY29uZmlnLmRhc2hib2FyZD8uc2VhcmNoRGF0ZVJhbmdlID8/IHRoaXMubWF4TGVuZ3RoO1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5zZXRVcE1hcHMoKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q3VzdG9tZXJzTGlzdCgpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoKSB7XG4gICAgYXdhaXQgdGhpcy5zZXRDdXN0b21lcnNMaXN0KCk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrTmV4dChlKSB7XG4gICAgdGhpcy5uZXh0U3RlcC5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0RGF0ZShkKSB7XG4gICAgY29uc3QgZGF0ZSA9IGQgPyBuZXcgRGF0ZShkKSA6IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIGxldCBtb250aDogbnVtYmVyIHwgc3RyaW5nID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICBsZXQgZGF5OiBudW1iZXIgfCBzdHJpbmcgPSBkYXRlLmdldERhdGUoKTtcbiAgICBpZiAobW9udGggPCAxMCkgbW9udGggPSAnMCcgKyBtb250aDtcbiAgICBpZiAoZGF5IDwgMTApIGRheSA9ICcwJyArIGRheTtcblxuICAgIGNvbnN0IHRvZGF5ID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDtcbiAgICByZXR1cm4gdG9kYXk7XG4gIH1cblxuICBhc3luYyBwbG90TWFya2VycyhjdXN0b21lcnMpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRhc2hib2FyZD8uaXNQbG90Q29tcGxldGVkVGFza01hcmtlcnMpIHtcbiAgICAgIGN1c3RvbWVycyA9IGN1c3RvbWVycy5maWx0ZXIoKGN1c3RvbWVyKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFnZW50U2VydmljZS5jYW5QbG90TWFya2VycyhjdXN0b21lci5zZXNzaW9uX3N0YXR1cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuZGFzaGJvYXJkPy5tYXBUeXBlID09ICdvcGVuLXN0cmVldCcpIHtcbiAgICAgIGN1c3RvbWVycyA9IGF3YWl0IHRoaXMub3BlblN0cmVldE1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yQWxsVGFza3MoXG4gICAgICAgIGN1c3RvbWVyc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VzdG9tZXJzID0gYXdhaXQgdGhpcy5nb29nbGVNYXBzU2VydmljZS5wbG90RGlyZWN0aW9uc0ZvckFsbFRhc2tzKFxuICAgICAgICBjdXN0b21lcnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1c3RvbWVycztcbiAgfVxuXG4gIGdldFR1aURhdGUoZXZlbnQpIHtcbiAgICBsZXQgeWVhciA9IGV2ZW50LnllYXI7XG4gICAgbGV0IG1vbnRoID0gZXZlbnQubW9udGggKyAxO1xuICAgIGxldCBkYXRlID0gZXZlbnQuZGF5O1xuICAgIG1vbnRoID0gbW9udGggPCAxMCA/ICcwJyArIG1vbnRoIDogbW9udGg7XG4gICAgZGF0ZSA9IGRhdGUgPCAxMCA/ICcwJyArIGRhdGUgOiBkYXRlO1xuICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RhdGV9YDtcbiAgfVxuXG4gIG9uRGF0ZVJhbmdlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuZ2V0VHVpRGF0ZShldmVudC52YWx1ZS5mcm9tKTtcbiAgICB0aGlzLnRvRGF0ZSA9IHRoaXMuZ2V0VHVpRGF0ZShldmVudC52YWx1ZS50byk7XG4gICAgdGhpcy5oYW5kbGVPbkZpbHRlclRhc2tMaXN0KHtcbiAgICAgIGZyb21fZGF0ZTogdGhpcy5mcm9tRGF0ZSxcbiAgICAgIHRvX2RhdGU6IHRoaXMudG9EYXRlXG4gICAgfSk7XG4gIH1cblxuICBvblNlYXJjaEZpbHRlcihldmVudCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IGV2ZW50LnZhbHVlO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1JlbW92ZVRhc2sodGFzaykge1xuICAgIHRoaXMucmVtb3ZlVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25GaWx0ZXJUYXNrTGlzdChmaWx0ZXIpIHtcbiAgICB0aGlzLmZpbHRlclRhc2tMaXN0LmVtaXQoZmlsdGVyKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWVyLWxpc3Qtd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItbGlzdC1maWx0ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgIDxrd2lrdWktaW5wdXQtZGF0ZS1yYW5nZVxuICAgICAgKm5nSWY9XCJjb25maWc/LmRhc2hib2FyZD8uaXNBbGxvd0RhdGVGaWx0ZXJcIlxuICAgICAgW2xhYmVsXT1cIidEYXRlIFJhbmdlJ1wiXG4gICAgICBbaWRdPVwiJ2RhdGVSYW5nZSdcIlxuICAgICAgW3NpemVdPVwiJ20nXCJcbiAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2RhdGVSYW5nZSdcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVSYW5nZUZvcm1Db250cm9sXCJcbiAgICAgIChnZXRLZXlWYWx1ZSk9XCJvbkRhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9rd2lrdWktaW5wdXQtZGF0ZS1yYW5nZT5cbiAgICA8a3dpa3VpLWlucHV0XG4gICAgICAqbmdJZj1cImNvbmZpZz8uZGFzaGJvYXJkPy5pc0FsbG93U2VhcmNoRmlsdGVyXCJcbiAgICAgIFtsYWJlbF09XCInU2VhcmNoJ1wiXG4gICAgICBbaWRdPVwiJ3NlYXJjaCdcIlxuICAgICAgaWNvbj1cInR1aUljb25TZWFyY2hcIlxuICAgICAgc2l6ZT1cIm1cIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggQW55IFRhc2tcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInc2VhcmNoJ1wiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRm9ybUNvbnRyb2xcIlxuICAgICAgKGdldEtleVZhbHVlKT1cIm9uU2VhcmNoRmlsdGVyKCRldmVudClcIlxuICAgID48L2t3aWt1aS1pbnB1dD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRhc2stbGlzdFwiPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCIxXCIgY2xhc3M9XCJjdXN0b21lci10YXNrLWxpc3Qtc2Nyb2xsXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXG4gICAgICAgICAgbGV0IGN1c3RvbWVyIG9mIGZpbHRlcmVkRGF0YSB8IGZpbHRlcjogc2VhcmNoVGV4dDtcbiAgICAgICAgICBpbmRleCBhcyBpbmRleFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y3VzdG9tZXItdGlsZVxuICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1pdGVtXCJcbiAgICAgICAgICBbY3VzdG9tZXJdPVwiY3VzdG9tZXJcIlxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgIChuZXh0U3RlcCk9XCJoYW5kbGVPbkNsaWNrTmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVtb3ZlVGFzayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgPjwvY3VzdG9tZXItdGlsZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItbGlzdC1lbXB0eVwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgIHt7Y29uZmlnPy5kYXNoYm9hcmQ/LmVtcHR5VGFza0xpc3RNZXNzYWdlID8/ICcwIFRhc2tzIGZvciB0aGUgZ2l2ZW4gRGF0ZS4nfX1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,87 +0,0 @@
1
- import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/google-maps.service";
4
- import * as i2 from "../../services/open-street-maps.service";
5
- import * as i3 from "../../services/agent.service";
6
- import * as i4 from "kwikui";
7
- import * as i5 from "./status-pill/status-pill.component";
8
- import * as i6 from "@angular/common";
9
- export class CustomerTileComponent {
10
- constructor(googleMapsService, openStreetMapsService, agentService, hostElement) {
11
- this.googleMapsService = googleMapsService;
12
- this.openStreetMapsService = openStreetMapsService;
13
- this.agentService = agentService;
14
- this.hostElement = hostElement;
15
- this.customer = {};
16
- this.index = undefined;
17
- this.isMobileView = false;
18
- this.viewTaskDetails = [];
19
- this.nextStep = new EventEmitter();
20
- this.removeTask = new EventEmitter();
21
- }
22
- windowResizeWatcher() {
23
- if (this.hostElement.nativeElement.offsetWidth < 600) {
24
- this.isMobileView = true;
25
- }
26
- else {
27
- this.isMobileView = false;
28
- }
29
- }
30
- ngOnInit() {
31
- var _a, _b, _c;
32
- this.viewTaskDetails =
33
- (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.dashboard) === null || _b === void 0 ? void 0 : _b.viewTaskDetails) !== null && _c !== void 0 ? _c : this.viewTaskDetails;
34
- }
35
- openDetails() {
36
- var _a, _b, _c, _d;
37
- const isDifferentTaskSelected = ((_a = this.agentService.currentTaskDetails) === null || _a === void 0 ? void 0 : _a.session_id) !==
38
- ((_b = this.customer) === null || _b === void 0 ? void 0 : _b.session_id);
39
- if (isDifferentTaskSelected) {
40
- this.agentService.currentTaskDetails = this.customer;
41
- }
42
- else {
43
- this.agentService.currentTaskDetails = undefined;
44
- }
45
- if (this.agentService.showMapview) {
46
- if (((_d = (_c = this.agentService.config) === null || _c === void 0 ? void 0 : _c.dashboard) === null || _d === void 0 ? void 0 : _d.mapType) == 'google-maps') {
47
- this.googleMapsService.plotDirectionsForSelectedTask(this.agentService.currentTaskDetails);
48
- }
49
- else {
50
- this.openStreetMapsService.plotDirectionsForSelectedTask(this.agentService.currentTaskDetails);
51
- }
52
- }
53
- }
54
- goToMaps(location) {
55
- window.open(`${location}`, '_blank');
56
- }
57
- handleOnClickNext(e) {
58
- this.nextStep.emit(e);
59
- }
60
- handleOnClickRemoveTask(task) {
61
- this.removeTask.emit(task);
62
- }
63
- }
64
- /** @nocollapse */ CustomerTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, deps: [{ token: i1.GoogleMapsService }, { token: i2.OpenStreetMapsService }, { token: i3.AgentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
65
- /** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n <kwikui-label-value-pair\n [data]=\"customer\"\n [field]=\"config?.dashboard?.taskIdentifier ?? {value:'$.user_id', type: 'string'} \"\n ></kwikui-label-value-pair>\n </div>\n <status-pill\n *ngIf=\"config?.dashboard?.isShowTaskStatus\"\n [status]=\"customer.session_status\"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <div\n *ngFor=\"let taskData of viewTaskDetails\"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n <kwikui-label-value-pair\n [field]=\"taskData\"\n [data]=\"customer\"\n ></kwikui-label-value-pair>\n </div>\n <!-- <div\n *ngIf=\"\n agentService.config?.dashboard?.maps?.sho &&\n agentService.config?.dashboard?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config.dashboard?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config.dashboard?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config.dashboard?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config.dashboard?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;padding:1rem;border-bottom:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions .customer-tile-secondary-container-task-buttons{display:flex;flex-direction:row;align-items:center;justify-content:flex-start}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions .customer-tile-secondary-container-journey-buttons{padding-right:.2rem;display:flex;flex-direction:row;grid-gap:.2rem;gap:.2rem;align-items:center;justify-content:flex-end}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions .customer-tile-secondary-container-journey-buttons .customer-share-link{font-size:.7rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: i4.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["field", "data"] }, { type: i5.StatusPillComponent, selector: "status-pill", inputs: ["status"] }, { type: i4.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, decorators: [{
67
- type: Component,
68
- args: [{
69
- selector: 'customer-tile',
70
- templateUrl: './customer-tile.component.html',
71
- styleUrls: ['./customer-tile.component.scss']
72
- }]
73
- }], ctorParameters: function () { return [{ type: i1.GoogleMapsService }, { type: i2.OpenStreetMapsService }, { type: i3.AgentService }, { type: i0.ElementRef }]; }, propDecorators: { windowResizeWatcher: [{
74
- type: HostListener,
75
- args: ['window:resize', ['$event']]
76
- }], customer: [{
77
- type: Input
78
- }], index: [{
79
- type: Input
80
- }], config: [{
81
- type: Input
82
- }], nextStep: [{
83
- type: Output
84
- }], removeTask: [{
85
- type: Output
86
- }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b21lci10aWxlL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9jdXN0b21lci10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVl2QixNQUFNLE9BQU8scUJBQXFCO0lBNEJoQyxZQUNTLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDNUMsWUFBMEIsRUFDekIsV0FBdUI7UUFIeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBckJqQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBR25CLFVBQUssR0FBVyxTQUFTLENBQUM7UUFLMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBR3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzlCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTzdCLENBQUM7SUEvQkosbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtZQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBMkJELFFBQVE7O1FBQ04sSUFBSSxDQUFDLGVBQWU7WUFDbEIsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsU0FBUywwQ0FBRSxlQUFlLG1DQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDcEUsQ0FBQztJQUVELFdBQVc7O1FBQ1QsTUFBTSx1QkFBdUIsR0FDM0IsQ0FBQSxNQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLDBDQUFFLFVBQVU7YUFDaEQsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxVQUFVLENBQUEsQ0FBQztRQUU1QixJQUFJLHVCQUF1QixFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7U0FDbEQ7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQ2pDLElBQUksQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLDBDQUFFLFNBQVMsMENBQUUsT0FBTyxLQUFJLGFBQWEsRUFBRTtnQkFDakUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUM1RjtpQkFBTTtnQkFDTCxJQUFJLENBQUMscUJBQXFCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2hHO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQVE7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7c0lBdEVVLHFCQUFxQjswSEFBckIscUJBQXFCLCtQQ3JCbEMsZzlJQWlJQTs0RkQ1R2EscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDOUM7Z01BR0MsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVekMsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlTWFwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlblN0cmVldE1hcHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3Blbi1zdHJlZXQtbWFwcy5zZXJ2aWNlJztcblxuZGVjbGFyZSBjb25zdCBnb29nbGU6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3VzdG9tZXItdGlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21lci10aWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tZXItdGlsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyVGlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICB3aW5kb3dSZXNpemVXYXRjaGVyKCkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBjdXN0b21lcjogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgaW5kZXg6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBjb25maWc6IGFueTtcblxuICBpc01vYmlsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmlld1Rhc2tEZXRhaWxzOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG5leHRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIG9wZW5TdHJlZXRNYXBzU2VydmljZTogT3BlblN0cmVldE1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdUYXNrRGV0YWlscyA9XG4gICAgICB0aGlzLmNvbmZpZz8uZGFzaGJvYXJkPy52aWV3VGFza0RldGFpbHMgPz8gdGhpcy52aWV3VGFza0RldGFpbHM7XG4gIH1cblxuICBvcGVuRGV0YWlscygpIHtcbiAgICBjb25zdCBpc0RpZmZlcmVudFRhc2tTZWxlY3RlZCA9XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgIT09XG4gICAgICB0aGlzLmN1c3RvbWVyPy5zZXNzaW9uX2lkO1xuXG4gICAgaWYgKGlzRGlmZmVyZW50VGFza1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHMgPSB0aGlzLmN1c3RvbWVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3KSB7XG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/Lm1hcFR5cGUgPT0gJ2dvb2dsZS1tYXBzJykge1xuICAgICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW5TdHJlZXRNYXBzU2VydmljZS5wbG90RGlyZWN0aW9uc0ZvclNlbGVjdGVkVGFzayh0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdvVG9NYXBzKGxvY2F0aW9uKSB7XG4gICAgd2luZG93Lm9wZW4oYCR7bG9jYXRpb259YCwgJ19ibGFuaycpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKHRhc2spIHtcbiAgICB0aGlzLnJlbW92ZVRhc2suZW1pdCh0YXNrKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJcbiAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkXG4gICAgICA/ICdjdXN0b21lci10aWxlLXdyYXBwZXIgY3VzdG9tZXItdGlsZS1hY3RpdmUnXG4gICAgICA6ICdjdXN0b21lci10aWxlLXdyYXBwZXInXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXByaW1hcnktY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItZGF0YVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItdXNlcmlkXCI+XG4gICAgICAgIDxrd2lrdWktbGFiZWwtdmFsdWUtcGFpclxuICAgICAgICAgIFtkYXRhXT1cImN1c3RvbWVyXCJcbiAgICAgICAgICBbZmllbGRdPVwiY29uZmlnPy5kYXNoYm9hcmQ/LnRhc2tJZGVudGlmaWVyID8/IHt2YWx1ZTonJC51c2VyX2lkJywgdHlwZTogJ3N0cmluZyd9IFwiXG4gICAgICAgID48L2t3aWt1aS1sYWJlbC12YWx1ZS1wYWlyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3RhdHVzLXBpbGxcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LmRhc2hib2FyZD8uaXNTaG93VGFza1N0YXR1c1wiXG4gICAgICAgIFtzdGF0dXNdPVwiY3VzdG9tZXIuc2Vzc2lvbl9zdGF0dXNcIlxuICAgICAgPjwvc3RhdHVzLXBpbGw+XG4gICAgPC9kaXY+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiYgIWFnZW50U2VydmljZS5zaG93TWFwdmlld1wiXG4gICAgICBbaWNvbl09XCJcbiAgICAgICAgYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCA9PSBjdXN0b21lcj8uc2Vzc2lvbl9pZFxuICAgICAgICAgID8gJ3R1aUljb25DaGV2cm9uTGVmdExhcmdlJ1xuICAgICAgICAgIDogJ3R1aUljb25DaGV2cm9uUmlnaHRMYXJnZSdcbiAgICAgIFwiXG4gICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIChvbkNsaWNrKT1cIm9wZW5EZXRhaWxzKClcIlxuICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcIlxuICAgICAgW2ljb25dPVwiXG4gICAgICAgIGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgPT0gY3VzdG9tZXI/LnNlc3Npb25faWRcbiAgICAgICAgICA/ICd0dWlJY29uQ2hldnJvblVwTGFyZ2UnXG4gICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25Eb3duTGFyZ2UnXG4gICAgICBcIlxuICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICBzaXplPVwic1wiXG4gICAgICAob25DbGljayk9XCJvcGVuRGV0YWlscygpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkICYmXG4gICAgICAoYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgIGN1c3RvbWVyPy5zZXNzaW9uX2lkID09IGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgJiZcbiAgICAgIChhZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3IHx8IGFnZW50U2VydmljZS5zaG93TWFwdmlldylcbiAgICAgICAgPyAnY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyJ1xuICAgICAgICA6ICdkYXRhLWNvbGxhc3BlZCdcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1kYXRhXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCB0YXNrRGF0YSBvZiB2aWV3VGFza0RldGFpbHNcIlxuICAgICAgICBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1jdXN0b20tZGV0YWlsc1wiXG4gICAgICA+XG4gICAgICAgIDxrd2lrdWktbGFiZWwtdmFsdWUtcGFpclxuICAgICAgICAgIFtmaWVsZF09XCJ0YXNrRGF0YVwiXG4gICAgICAgICAgW2RhdGFdPVwiY3VzdG9tZXJcIlxuICAgICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgYWdlbnRTZXJ2aWNlLmNvbmZpZz8uZGFzaGJvYXJkPy5tYXBzPy5zaG8gJiZcbiAgICAgICAgICBhZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/LmlzU2hvd0Rpc3RhbmNlQW5kVGltZSAmJlxuICAgICAgICAgIG9wZW5TdHJlZXRNYXBzU2VydmljZS5nZXRTZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWUoKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1jdXN0b20tZGV0YWlsc1wiXG4gICAgICA+XG4gICAgICAgIERpc3RhbmNlOiB7eyBvcGVuU3RyZWV0TWFwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKCk/LmRpc3RhbmNlIH19IHxcbiAgICAgICAgVGltZToge3sgb3BlblN0cmVldE1hcHNTZXJ2aWNlLmdldFNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZSgpPy50aW1lIH19XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1hY3Rpb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyLXRhc2stYnV0dG9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmRhc2hib2FyZD8uaXNBbGxvd1JlbW92ZVRhc2tcIlxuICAgICAgICAgIFtpY29uXT1cIid0dWlJY29uVHJhc2gyJ1wiXG4gICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzayhjdXN0b21lcilcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmRhc2hib2FyZD8uaXNTaG93Q29weUxpbmtcIlxuICAgICAgICAgIGljb249XCJ0dWlJY29uQ29weVwiXG4gICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAob25DbGljayk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tOZXh0KHtcbiAgICAgICAgICAgICAgY3VzdG9tZXI6IGN1c3RvbWVyLFxuICAgICAgICAgICAgICBzdGVwVHlwZTogJ1NIQVJFX0pPVVJORVlfTElOSydcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1qb3VybmV5LWJ1dHRvbnNcIj5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cImNvbmZpZy5kYXNoYm9hcmQ/LmlzU2hvd01hcHMgJiYgY3VzdG9tZXI/LmlzVmFsaWRMb2NhdGlvblwiXG4gICAgICAgICAgbGFiZWw9XCJTaG93IERpcmVjdGlvbnNcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgc3R5bGVzPVwiZm9udC1zaXplOjAuN3JlbTtcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImdvVG9NYXBzKGN1c3RvbWVyLmdvb2dsZU1hcHNVcmwpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29uZmlnLmRhc2hib2FyZD8uaXNBbGxvd1N0YXJ0Sm91cm5leSAmJlxuICAgICAgICAgICAgYWdlbnRTZXJ2aWNlLmNhblN0YXJ0Sm91cm5leShjdXN0b21lci5zZXNzaW9uX3N0YXR1cylcbiAgICAgICAgICBcIlxuICAgICAgICAgIGxhYmVsPVwiU3RhcnQgSm91cm5leVwiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICBzdHlsZXM9XCJmb250LXNpemU6MC43cmVtO1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiXG4gICAgICAgICAgICBoYW5kbGVPbkNsaWNrTmV4dCh7IGN1c3RvbWVyOiBjdXN0b21lciwgc3RlcFR5cGU6ICdTVEFSVF9KT1VSTkVZJyB9KVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,32 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { EStatus } from './status-pill.definitions';
3
- import { isEmptyValue } from 'kwikid-toolkit';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- export class StatusPillComponent {
7
- ngOnInit() {
8
- if (isEmptyValue(this.status)) {
9
- this.status = EStatus.WAITING;
10
- }
11
- }
12
- getStatusPillClass(status) {
13
- let newStatus = status.replace('_', '-').replace('_', '-').replace('_', '-');
14
- return `status-pill ${newStatus}`;
15
- }
16
- getStatusLabel(status) {
17
- return status.replace('_', ' ').replace('_', ' ').replace('_', ' ');
18
- }
19
- }
20
- /** @nocollapse */ StatusPillComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StatusPillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- /** @nocollapse */ StatusPillComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StatusPillComponent, selector: "status-pill", inputs: { status: "status" }, ngImport: i0, template: "<div [ngClass]=\"getStatusPillClass(status)\">{{ getStatusLabel(status) }}</div>\n", styles: [".status-pill{background-color:#555;padding:.1rem .5rem;border-radius:1rem;font-size:.7rem;color:#fff}.complete,.kyc-request-accepted,.kyc-result-approved{background-color:var(--tui-positive)}.rejected,.kyc-request-rejected,.kyc-result-rejected,.kyc-rejected{background-color:var(--tui-negative)}.auditing,.on-going,.kyc-result-partial-update,.kyc-resut-partial-update{background-color:var(--tui-primary)}.after-audit,.waiting,.kyc-result-under-review{background-color:var(--tui-warning-fill);color:#222}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StatusPillComponent, decorators: [{
23
- type: Component,
24
- args: [{
25
- selector: 'status-pill',
26
- templateUrl: './status-pill.component.html',
27
- styleUrls: ['./status-pill.component.css']
28
- }]
29
- }], propDecorators: { status: [{
30
- type: Input
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXBpbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9zdGF0dXMtcGlsbC9zdGF0dXMtcGlsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b21lci10aWxlL3N0YXR1cy1waWxsL3N0YXR1cy1waWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQVcsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU85QyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFFBQVE7UUFDTixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQU07UUFDdkIsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sZUFBZSxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQU07UUFDbkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7b0lBakJVLG1CQUFtQjt3SEFBbkIsbUJBQW1CLGlGQ1RoQyxvRkFDQTs0RkRRYSxtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUMzQzs4QkFHQyxNQUFNO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVTdGF0dXMsIFRTdGF0dXMgfSBmcm9tICcuL3N0YXR1cy1waWxsLmRlZmluaXRpb25zJztcbmltcG9ydCB7IGlzRW1wdHlWYWx1ZSB9IGZyb20gJ2t3aWtpZC10b29sa2l0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RhdHVzLXBpbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RhdHVzLXBpbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGF0dXMtcGlsbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RhdHVzUGlsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHN0YXR1czogVFN0YXR1cztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHRoaXMuc3RhdHVzKSkge1xuICAgICAgdGhpcy5zdGF0dXMgPSBFU3RhdHVzLldBSVRJTkc7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdHVzUGlsbENsYXNzKHN0YXR1cykge1xuICAgIGxldCBuZXdTdGF0dXMgPSBzdGF0dXMucmVwbGFjZSgnXycsICctJykucmVwbGFjZSgnXycsICctJykucmVwbGFjZSgnXycsICctJyk7XG4gICAgcmV0dXJuIGBzdGF0dXMtcGlsbCAke25ld1N0YXR1c31gO1xuICB9XG5cbiAgZ2V0U3RhdHVzTGFiZWwoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cy5yZXBsYWNlKCdfJywgJyAnKS5yZXBsYWNlKCdfJywgJyAnKS5yZXBsYWNlKCdfJywgJyAnKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJnZXRTdGF0dXNQaWxsQ2xhc3Moc3RhdHVzKVwiPnt7IGdldFN0YXR1c0xhYmVsKHN0YXR1cykgfX08L2Rpdj5cbiJdfQ==
@@ -1,36 +0,0 @@
1
- export var EStatus;
2
- (function (EStatus) {
3
- EStatus["NOT_STARTED"] = "not_started";
4
- EStatus["ON_GOING"] = "on_going";
5
- EStatus["AUDITING"] = "auditing";
6
- EStatus["REJECTED"] = "rejected";
7
- EStatus["AFTER_AUDIT"] = "after_audit";
8
- EStatus["COMPLETE"] = "complete";
9
- EStatus["WAITING"] = "waiting";
10
- EStatus["SESSION_EXPIRED"] = "session_expired";
11
- EStatus["KYC_REJECTED"] = "kyc_rejected";
12
- EStatus["KYC_REQUEST_REJECTED"] = "kyc_request_rejected";
13
- EStatus["KYC_REQUEST_ACCEPTED"] = "kyc_request_accepted";
14
- EStatus["KYC_RESULT_REJECTED"] = "kyc_result_rejected";
15
- EStatus["KYC_RESULT_APPROVED"] = "kyc_result_approved";
16
- EStatus["KYC_RESULT_PARTIAL_UPDATE"] = "kyc_result_partial_update";
17
- EStatus["KYC_RESULT_UNDER_REVIEW"] = "kyc_result_under_review";
18
- })(EStatus || (EStatus = {}));
19
- export const VStatus = [
20
- EStatus.NOT_STARTED,
21
- EStatus.ON_GOING,
22
- EStatus.AUDITING,
23
- EStatus.REJECTED,
24
- EStatus.AFTER_AUDIT,
25
- EStatus.COMPLETE,
26
- EStatus.WAITING,
27
- EStatus.SESSION_EXPIRED,
28
- EStatus.KYC_REJECTED,
29
- EStatus.KYC_REQUEST_REJECTED,
30
- EStatus.KYC_REQUEST_ACCEPTED,
31
- EStatus.KYC_RESULT_REJECTED,
32
- EStatus.KYC_RESULT_APPROVED,
33
- EStatus.KYC_RESULT_PARTIAL_UPDATE,
34
- EStatus.KYC_RESULT_UNDER_REVIEW
35
- ];
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXBpbGwuZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b21lci10aWxlL3N0YXR1cy1waWxsL3N0YXR1cy1waWxsLmRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLE9BZ0JYO0FBaEJELFdBQVksT0FBTztJQUNqQixzQ0FBMkIsQ0FBQTtJQUMzQixnQ0FBcUIsQ0FBQTtJQUNyQixnQ0FBcUIsQ0FBQTtJQUNyQixnQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBMkIsQ0FBQTtJQUMzQixnQ0FBcUIsQ0FBQTtJQUNyQiw4QkFBbUIsQ0FBQTtJQUNuQiw4Q0FBbUMsQ0FBQTtJQUNuQyx3Q0FBNkIsQ0FBQTtJQUM3Qix3REFBNkMsQ0FBQTtJQUM3Qyx3REFBNkMsQ0FBQTtJQUM3QyxzREFBMkMsQ0FBQTtJQUMzQyxzREFBMkMsQ0FBQTtJQUMzQyxrRUFBdUQsQ0FBQTtJQUN2RCw4REFBbUQsQ0FBQTtBQUNyRCxDQUFDLEVBaEJXLE9BQU8sS0FBUCxPQUFPLFFBZ0JsQjtBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxlQUFlO0lBQ3ZCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxvQkFBb0I7SUFDNUIsT0FBTyxDQUFDLG9CQUFvQjtJQUM1QixPQUFPLENBQUMsbUJBQW1CO0lBQzNCLE9BQU8sQ0FBQyxtQkFBbUI7SUFDM0IsT0FBTyxDQUFDLHlCQUF5QjtJQUNqQyxPQUFPLENBQUMsdUJBQXVCO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBFU3RhdHVzIHtcbiAgTk9UX1NUQVJURUQgPSAnbm90X3N0YXJ0ZWQnLFxuICBPTl9HT0lORyA9ICdvbl9nb2luZycsXG4gIEFVRElUSU5HID0gJ2F1ZGl0aW5nJyxcbiAgUkVKRUNURUQgPSAncmVqZWN0ZWQnLFxuICBBRlRFUl9BVURJVCA9ICdhZnRlcl9hdWRpdCcsXG4gIENPTVBMRVRFID0gJ2NvbXBsZXRlJyxcbiAgV0FJVElORyA9ICd3YWl0aW5nJyxcbiAgU0VTU0lPTl9FWFBJUkVEID0gJ3Nlc3Npb25fZXhwaXJlZCcsXG4gIEtZQ19SRUpFQ1RFRCA9ICdreWNfcmVqZWN0ZWQnLFxuICBLWUNfUkVRVUVTVF9SRUpFQ1RFRCA9ICdreWNfcmVxdWVzdF9yZWplY3RlZCcsXG4gIEtZQ19SRVFVRVNUX0FDQ0VQVEVEID0gJ2t5Y19yZXF1ZXN0X2FjY2VwdGVkJyxcbiAgS1lDX1JFU1VMVF9SRUpFQ1RFRCA9ICdreWNfcmVzdWx0X3JlamVjdGVkJyxcbiAgS1lDX1JFU1VMVF9BUFBST1ZFRCA9ICdreWNfcmVzdWx0X2FwcHJvdmVkJyxcbiAgS1lDX1JFU1VMVF9QQVJUSUFMX1VQREFURSA9ICdreWNfcmVzdWx0X3BhcnRpYWxfdXBkYXRlJyxcbiAgS1lDX1JFU1VMVF9VTkRFUl9SRVZJRVcgPSAna3ljX3Jlc3VsdF91bmRlcl9yZXZpZXcnXG59XG5cbmV4cG9ydCBjb25zdCBWU3RhdHVzID0gW1xuICBFU3RhdHVzLk5PVF9TVEFSVEVELFxuICBFU3RhdHVzLk9OX0dPSU5HLFxuICBFU3RhdHVzLkFVRElUSU5HLFxuICBFU3RhdHVzLlJFSkVDVEVELFxuICBFU3RhdHVzLkFGVEVSX0FVRElULFxuICBFU3RhdHVzLkNPTVBMRVRFLFxuICBFU3RhdHVzLldBSVRJTkcsXG4gIEVTdGF0dXMuU0VTU0lPTl9FWFBJUkVELFxuICBFU3RhdHVzLktZQ19SRUpFQ1RFRCxcbiAgRVN0YXR1cy5LWUNfUkVRVUVTVF9SRUpFQ1RFRCxcbiAgRVN0YXR1cy5LWUNfUkVRVUVTVF9BQ0NFUFRFRCxcbiAgRVN0YXR1cy5LWUNfUkVTVUxUX1JFSkVDVEVELFxuICBFU3RhdHVzLktZQ19SRVNVTFRfQVBQUk9WRUQsXG4gIEVTdGF0dXMuS1lDX1JFU1VMVF9QQVJUSUFMX1VQREFURSxcbiAgRVN0YXR1cy5LWUNfUkVTVUxUX1VOREVSX1JFVklFV1xuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVFN0YXR1cyA9IHR5cGVvZiBWU3RhdHVzW251bWJlcl07XG4iXX0=
@@ -1,46 +0,0 @@
1
- import { getObjectValueFromPath } from 'kwikid-toolkit';
2
- // To Calculate Distance between two markers
3
- export const calculateDistance = (point1, point2) => {
4
- const lat1 = point1.lat;
5
- const lng1 = point1.lng;
6
- const lat2 = point2.lat;
7
- const lng2 = point2.lng;
8
- const R = 6371; // Earth radius in kilometers
9
- const dLat = (lat2 - lat1) * (Math.PI / 180);
10
- const dLng = (lng2 - lng1) * (Math.PI / 180);
11
- const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
12
- Math.cos((lat1 * Math.PI) / 180) *
13
- Math.cos((lat2 * Math.PI) / 180) *
14
- Math.sin(dLng / 2) *
15
- Math.sin(dLng / 2);
16
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
17
- const distance = R * c;
18
- return distance;
19
- };
20
- // To calculate nearest distance from marker
21
- export const nearestNeighborAlgorithm = (startingPoint, unvisitedPoints) => {
22
- let currentPoint = startingPoint;
23
- const path = [currentPoint];
24
- const visitedPoints = new Set([currentPoint]);
25
- while (unvisitedPoints.length > 0) {
26
- let nearestPoint = null;
27
- let minDistance = Number.POSITIVE_INFINITY;
28
- for (const point of unvisitedPoints) {
29
- const distance = calculateDistance(currentPoint, point);
30
- if (distance < minDistance) {
31
- minDistance = distance;
32
- nearestPoint = point;
33
- }
34
- }
35
- path.push(nearestPoint);
36
- visitedPoints.add(nearestPoint);
37
- currentPoint = nearestPoint;
38
- unvisitedPoints = unvisitedPoints.filter((point) => !visitedPoints.has(point));
39
- }
40
- return path;
41
- };
42
- export const addressConcator = (data, config) => {
43
- const address = config.reduce((accumulator, currentValue) => accumulator + ' ' + getObjectValueFromPath(data, currentValue), '');
44
- return address;
45
- };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL2hlbHBlcnMvbWFwcy5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQVcsRUFBRSxNQUFXLEVBQVUsRUFBRTtJQUNwRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUN4QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBRXhCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLDZCQUE2QjtJQUM3QyxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxHQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRiw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FDdEMsYUFBa0IsRUFDbEIsZUFBc0IsRUFDZixFQUFFO0lBQ1QsSUFBSSxZQUFZLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMsTUFBTSxhQUFhLEdBQWEsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBRXhELE9BQU8sZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDakMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUUzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEQsSUFBSSxRQUFRLEdBQUcsV0FBVyxFQUFFO2dCQUMxQixXQUFXLEdBQUcsUUFBUSxDQUFDO2dCQUN2QixZQUFZLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1NBQ0Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hCLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUU1QixlQUFlLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FDckMsQ0FBQztLQUNIO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFTLEVBQUUsTUFBVyxFQUFVLEVBQUU7SUFDaEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FDNUIsV0FBVyxHQUFHLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQ2hFLEVBQUUsQ0FDSCxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCB9IGZyb20gJ2t3aWtpZC10b29sa2l0JztcblxuLy8gVG8gQ2FsY3VsYXRlIERpc3RhbmNlIGJldHdlZW4gdHdvIG1hcmtlcnNcbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVEaXN0YW5jZSA9IChwb2ludDE6IGFueSwgcG9pbnQyOiBhbnkpOiBudW1iZXIgPT4ge1xuICBjb25zdCBsYXQxID0gcG9pbnQxLmxhdDtcbiAgY29uc3QgbG5nMSA9IHBvaW50MS5sbmc7XG4gIGNvbnN0IGxhdDIgPSBwb2ludDIubGF0O1xuICBjb25zdCBsbmcyID0gcG9pbnQyLmxuZztcblxuICBjb25zdCBSID0gNjM3MTsgLy8gRWFydGggcmFkaXVzIGluIGtpbG9tZXRlcnNcbiAgY29uc3QgZExhdCA9IChsYXQyIC0gbGF0MSkgKiAoTWF0aC5QSSAvIDE4MCk7XG4gIGNvbnN0IGRMbmcgPSAobG5nMiAtIGxuZzEpICogKE1hdGguUEkgLyAxODApO1xuICBjb25zdCBhID1cbiAgICBNYXRoLnNpbihkTGF0IC8gMikgKiBNYXRoLnNpbihkTGF0IC8gMikgK1xuICAgIE1hdGguY29zKChsYXQxICogTWF0aC5QSSkgLyAxODApICpcbiAgICAgIE1hdGguY29zKChsYXQyICogTWF0aC5QSSkgLyAxODApICpcbiAgICAgIE1hdGguc2luKGRMbmcgLyAyKSAqXG4gICAgICBNYXRoLnNpbihkTG5nIC8gMik7XG4gIGNvbnN0IGMgPSAyICogTWF0aC5hdGFuMihNYXRoLnNxcnQoYSksIE1hdGguc3FydCgxIC0gYSkpO1xuICBjb25zdCBkaXN0YW5jZSA9IFIgKiBjO1xuXG4gIHJldHVybiBkaXN0YW5jZTtcbn07XG5cbi8vIFRvIGNhbGN1bGF0ZSBuZWFyZXN0IGRpc3RhbmNlIGZyb20gbWFya2VyXG5leHBvcnQgY29uc3QgbmVhcmVzdE5laWdoYm9yQWxnb3JpdGhtID0gKFxuICBzdGFydGluZ1BvaW50OiBhbnksXG4gIHVudmlzaXRlZFBvaW50czogYW55W11cbik6IGFueVtdID0+IHtcbiAgbGV0IGN1cnJlbnRQb2ludCA9IHN0YXJ0aW5nUG9pbnQ7XG4gIGNvbnN0IHBhdGg6IGFueVtdID0gW2N1cnJlbnRQb2ludF07XG4gIGNvbnN0IHZpc2l0ZWRQb2ludHM6IFNldDxhbnk+ID0gbmV3IFNldChbY3VycmVudFBvaW50XSk7XG5cbiAgd2hpbGUgKHVudmlzaXRlZFBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IG5lYXJlc3RQb2ludCA9IG51bGw7XG4gICAgbGV0IG1pbkRpc3RhbmNlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXG4gICAgZm9yIChjb25zdCBwb2ludCBvZiB1bnZpc2l0ZWRQb2ludHMpIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gY2FsY3VsYXRlRGlzdGFuY2UoY3VycmVudFBvaW50LCBwb2ludCk7XG4gICAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICBuZWFyZXN0UG9pbnQgPSBwb2ludDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoLnB1c2gobmVhcmVzdFBvaW50KTtcbiAgICB2aXNpdGVkUG9pbnRzLmFkZChuZWFyZXN0UG9pbnQpO1xuICAgIGN1cnJlbnRQb2ludCA9IG5lYXJlc3RQb2ludDtcblxuICAgIHVudmlzaXRlZFBvaW50cyA9IHVudmlzaXRlZFBvaW50cy5maWx0ZXIoXG4gICAgICAocG9pbnQpID0+ICF2aXNpdGVkUG9pbnRzLmhhcyhwb2ludClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkcmVzc0NvbmNhdG9yID0gKGRhdGE6IGFueSwgY29uZmlnOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBhZGRyZXNzID0gY29uZmlnLnJlZHVjZShcbiAgICAoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT5cbiAgICAgIGFjY3VtdWxhdG9yICsgJyAnICsgZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChkYXRhLCBjdXJyZW50VmFsdWUpLFxuICAgICcnXG4gICk7XG4gIHJldHVybiBhZGRyZXNzO1xufTtcbiJdfQ==
@@ -1,62 +0,0 @@
1
- import { Pipe, Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class Ng2SearchPipe {
4
- /**
5
- * @param items object from array
6
- * @param term term's search
7
- * @param excludes array of strings which will ignored during search
8
- */
9
- transform(items, term, excludes = []) {
10
- if (!term || !items)
11
- return items;
12
- return Ng2SearchPipe.filter(items, term, excludes);
13
- }
14
- /**
15
- *
16
- * @param items List of items to filter
17
- * @param term a string term to compare with every property of the list
18
- * @param excludes List of keys which will be ignored during search
19
- *
20
- */
21
- static filter(items, term, excludes) {
22
- const toCompare = term.toLowerCase();
23
- function checkInside(item, term) {
24
- if (typeof item === 'string' &&
25
- item.toString().toLowerCase().includes(toCompare)) {
26
- return true;
27
- }
28
- for (let property in item) {
29
- if (item[property] === null ||
30
- item[property] == undefined ||
31
- excludes.includes(property)) {
32
- continue;
33
- }
34
- if (typeof item[property] === 'object') {
35
- if (checkInside(item[property], term)) {
36
- return true;
37
- }
38
- }
39
- else if (item[property].toString().toLowerCase().includes(toCompare)) {
40
- return true;
41
- }
42
- }
43
- return false;
44
- }
45
- return items.filter(function (item) {
46
- return checkInside(item, term);
47
- });
48
- }
49
- }
50
- /** @nocollapse */ Ng2SearchPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
51
- /** @nocollapse */ Ng2SearchPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe, name: "filter", pure: false });
52
- /** @nocollapse */ Ng2SearchPipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe, decorators: [{
54
- type: Pipe,
55
- args: [{
56
- name: 'filter',
57
- pure: false
58
- }]
59
- }, {
60
- type: Injectable
61
- }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3BpcGVzL3NlYXJjaC1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT2hFLE1BQU0sT0FBTyxhQUFhO0lBQ3hCOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxXQUFnQixFQUFFO1FBQ3BELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQ1gsS0FBb0MsRUFDcEMsSUFBWSxFQUNaLFFBQWE7UUFFYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsU0FBUyxXQUFXLENBQUMsSUFBUyxFQUFFLElBQVk7WUFDMUMsSUFDRSxPQUFPLElBQUksS0FBSyxRQUFRO2dCQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUNqRDtnQkFDQSxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsS0FBSyxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Z0JBQ3pCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7b0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTO29CQUMzQixRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUMzQjtvQkFDQSxTQUFTO2lCQUNWO2dCQUNELElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxFQUFFO29CQUN0QyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7d0JBQ3JDLE9BQU8sSUFBSSxDQUFDO3FCQUNiO2lCQUNGO3FCQUFNLElBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDM0Q7b0JBQ0EsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDRjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUk7WUFDaEMsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEhBMURVLGFBQWE7NEhBQWIsYUFBYTtrSUFBYixhQUFhOzRGQUFiLGFBQWE7a0JBTHpCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLEtBQUs7aUJBQ1o7O2tCQUNBLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2ZpbHRlcicsXG4gIHB1cmU6IGZhbHNlXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nMlNlYXJjaFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtcyBvYmplY3QgZnJvbSBhcnJheVxuICAgKiBAcGFyYW0gdGVybSB0ZXJtJ3Mgc2VhcmNoXG4gICAqIEBwYXJhbSBleGNsdWRlcyBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIHdpbGwgaWdub3JlZCBkdXJpbmcgc2VhcmNoXG4gICAqL1xuICB0cmFuc2Zvcm0oaXRlbXM6IGFueSwgdGVybTogc3RyaW5nLCBleGNsdWRlczogYW55ID0gW10pOiBhbnkge1xuICAgIGlmICghdGVybSB8fCAhaXRlbXMpIHJldHVybiBpdGVtcztcblxuICAgIHJldHVybiBOZzJTZWFyY2hQaXBlLmZpbHRlcihpdGVtcywgdGVybSwgZXhjbHVkZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtcyBMaXN0IG9mIGl0ZW1zIHRvIGZpbHRlclxuICAgKiBAcGFyYW0gdGVybSAgYSBzdHJpbmcgdGVybSB0byBjb21wYXJlIHdpdGggZXZlcnkgcHJvcGVydHkgb2YgdGhlIGxpc3RcbiAgICogQHBhcmFtIGV4Y2x1ZGVzIExpc3Qgb2Yga2V5cyB3aGljaCB3aWxsIGJlIGlnbm9yZWQgZHVyaW5nIHNlYXJjaFxuICAgKlxuICAgKi9cbiAgc3RhdGljIGZpbHRlcihcbiAgICBpdGVtczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4sXG4gICAgdGVybTogc3RyaW5nLFxuICAgIGV4Y2x1ZGVzOiBhbnlcbiAgKTogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4ge1xuICAgIGNvbnN0IHRvQ29tcGFyZSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrSW5zaWRlKGl0ZW06IGFueSwgdGVybTogc3RyaW5nKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBpdGVtLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0b0NvbXBhcmUpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IHByb3BlcnR5IGluIGl0ZW0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGl0ZW1bcHJvcGVydHldID09PSBudWxsIHx8XG4gICAgICAgICAgaXRlbVtwcm9wZXJ0eV0gPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgZXhjbHVkZXMuaW5jbHVkZXMocHJvcGVydHkpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVtwcm9wZXJ0eV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGNoZWNrSW5zaWRlKGl0ZW1bcHJvcGVydHldLCB0ZXJtKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGl0ZW1bcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0b0NvbXBhcmUpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGNoZWNrSW5zaWRlKGl0ZW0sIHRlcm0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=