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.
- package/bundles/kwikid-agent-dashboard.umd.js +3655 -1317
- package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
- package/esm2015/lib/kwikid-agent-dashboard.component.js +39 -120
- package/esm2015/lib/kwikid-agent-dashboard.module.js +26 -35
- package/esm2015/lib/v1/components/action-button/action-button.component.js +91 -0
- package/esm2015/lib/v1/components/customer-details/customer-details.component.js +139 -0
- package/esm2015/lib/v1/components/customer-list/customer-list.component.js +201 -0
- package/esm2015/lib/v1/components/customer-tile/customer-tile.component.js +137 -0
- package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.component.js +54 -0
- package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.definitions.js +36 -0
- package/esm2015/lib/v1/helpers/maps.helpers.js +46 -0
- package/esm2015/lib/v1/kwikid-agent-dashboard.component.js +177 -0
- package/esm2015/lib/v1/kwikid-agent-dashboard.module.js +120 -0
- package/esm2015/lib/v1/pipes/search-filter.pipe.js +62 -0
- package/esm2015/lib/v1/services/agent.service.js +149 -0
- package/esm2015/lib/v1/services/google-maps.service.js +201 -0
- package/esm2015/lib/v1/services/open-street-maps.service.js +252 -0
- package/esm2015/lib/v2/components/agent-info/agent-info.component.js +20 -0
- package/esm2015/lib/v2/components/agent-info/agent-info.module.js +37 -0
- package/esm2015/lib/v2/components/bottom-sheet/bottom-sheet.component.js +111 -0
- package/esm2015/lib/v2/components/bottom-sheet/bottom-sheet.module.js +41 -0
- package/esm2015/lib/v2/components/components.module.js +79 -0
- package/esm2015/lib/v2/components/map-view/map-view.component.js +39 -0
- package/esm2015/lib/v2/components/map-view/map-view.module.js +37 -0
- package/esm2015/lib/v2/components/primary-actions/primary-actions.component.js +65 -0
- package/esm2015/lib/v2/components/primary-actions/primary-actions.module.js +54 -0
- package/esm2015/lib/v2/components/task-detail/task-detail.component.js +82 -0
- package/esm2015/lib/v2/components/task-detail/task-detail.module.js +41 -0
- package/esm2015/lib/v2/components/task-item/task-item.component.js +107 -0
- package/esm2015/lib/v2/components/task-item/task-item.constant.js +12 -0
- package/esm2015/lib/v2/components/task-item/task-item.module.js +45 -0
- package/esm2015/lib/v2/components/task-item-status/task-item-status.component.js +51 -0
- package/esm2015/lib/v2/components/task-item-status/task-item-status.module.js +19 -0
- package/esm2015/lib/v2/components/task-list/task-list.component.js +186 -0
- package/esm2015/lib/v2/components/task-list/task-list.module.js +57 -0
- package/esm2015/lib/v2/components/task-list-search/task-list-search.component.js +118 -0
- package/esm2015/lib/v2/components/task-list-search/task-list-search.module.js +41 -0
- package/esm2015/lib/v2/components/task-preview/task-preview.component.js +30 -0
- package/esm2015/lib/v2/components/task-preview/task-preview.module.js +37 -0
- package/esm2015/lib/v2/helpers/array.helper.js +10 -0
- package/esm2015/lib/v2/helpers/date.helplers.js +17 -0
- package/esm2015/lib/v2/kwikid-agent-dashboard.component.js +61 -0
- package/esm2015/lib/v2/kwikid-agent-dashboard.module.js +45 -0
- package/esm2015/lib/v2/layout/layout-body/layout-body.component.js +274 -0
- package/esm2015/lib/v2/layout/layout-body/layout-body.module.js +55 -0
- package/esm2015/lib/v2/layout/layout-header/layout-header.component.js +60 -0
- package/esm2015/lib/v2/layout/layout-header/layout-header.module.js +48 -0
- package/esm2015/lib/v2/layout/layout.module.js +18 -0
- package/esm2015/lib/v2/pipes/search-filter.pipe.js +62 -0
- package/fesm2015/kwikid-agent-dashboard.js +3255 -1100
- package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
- package/lib/kwikid-agent-dashboard.component.d.ts +11 -36
- package/lib/kwikid-agent-dashboard.module.d.ts +13 -16
- package/lib/v1/components/action-button/action-button.component.d.ts +18 -0
- package/lib/{components → v1/components}/customer-details/customer-details.component.d.ts +13 -6
- package/lib/{components → v1/components}/customer-list/customer-list.component.d.ts +25 -15
- package/lib/{components → v1/components}/customer-tile/customer-tile.component.d.ts +12 -5
- package/lib/{components → v1/components}/customer-tile/status-pill/status-pill.component.d.ts +6 -2
- package/lib/{components → v1/components}/customer-tile/status-pill/status-pill.definitions.d.ts +1 -1
- package/lib/v1/kwikid-agent-dashboard.component.d.ts +54 -0
- package/lib/v1/kwikid-agent-dashboard.module.d.ts +23 -0
- package/lib/{pipes → v1/pipes}/search-filter.pipe.d.ts +1 -1
- package/lib/{services → v1/services}/agent.service.d.ts +1 -1
- package/lib/{services → v1/services}/google-maps.service.d.ts +4 -4
- package/lib/{services → v1/services}/open-street-maps.service.d.ts +5 -5
- package/lib/v2/components/agent-info/agent-info.component.d.ts +8 -0
- package/lib/v2/components/agent-info/agent-info.module.d.ts +11 -0
- package/lib/v2/components/bottom-sheet/bottom-sheet.component.d.ts +24 -0
- package/lib/v2/components/bottom-sheet/bottom-sheet.module.d.ts +12 -0
- package/lib/v2/components/components.module.d.ts +15 -0
- package/lib/v2/components/map-view/map-view.component.d.ts +10 -0
- package/lib/v2/components/map-view/map-view.module.d.ts +11 -0
- package/lib/v2/components/primary-actions/primary-actions.component.d.ts +14 -0
- package/lib/v2/components/primary-actions/primary-actions.module.d.ts +13 -0
- package/lib/v2/components/task-detail/task-detail.component.d.ts +23 -0
- package/lib/v2/components/task-detail/task-detail.module.d.ts +12 -0
- package/lib/v2/components/task-item/task-item.component.d.ts +23 -0
- package/lib/v2/components/task-item/task-item.constant.d.ts +11 -0
- package/lib/v2/components/task-item/task-item.module.d.ts +13 -0
- package/lib/v2/components/task-item-status/task-item-status.component.d.ts +14 -0
- package/lib/v2/components/task-item-status/task-item-status.module.d.ts +9 -0
- package/lib/v2/components/task-list/task-list.component.d.ts +45 -0
- package/lib/v2/components/task-list/task-list.module.d.ts +16 -0
- package/lib/v2/components/task-list-search/task-list-search.component.d.ts +34 -0
- package/lib/v2/components/task-list-search/task-list-search.module.d.ts +12 -0
- package/lib/v2/components/task-preview/task-preview.component.d.ts +11 -0
- package/lib/v2/components/task-preview/task-preview.module.d.ts +11 -0
- package/lib/v2/helpers/array.helper.d.ts +1 -0
- package/lib/v2/helpers/date.helplers.d.ts +3 -0
- package/lib/v2/kwikid-agent-dashboard.component.d.ts +17 -0
- package/lib/v2/kwikid-agent-dashboard.module.d.ts +13 -0
- package/lib/v2/layout/layout-body/layout-body.component.d.ts +42 -0
- package/lib/v2/layout/layout-body/layout-body.module.d.ts +14 -0
- package/lib/v2/layout/layout-header/layout-header.component.d.ts +20 -0
- package/lib/v2/layout/layout-header/layout-header.module.d.ts +13 -0
- package/lib/v2/layout/layout.module.d.ts +8 -0
- package/lib/v2/pipes/search-filter.pipe.d.ts +25 -0
- package/package.json +2 -2
- package/esm2015/lib/components/customer-details/customer-details.component.js +0 -90
- package/esm2015/lib/components/customer-list/customer-list.component.js +0 -165
- package/esm2015/lib/components/customer-tile/customer-tile.component.js +0 -87
- package/esm2015/lib/components/customer-tile/status-pill/status-pill.component.js +0 -32
- package/esm2015/lib/components/customer-tile/status-pill/status-pill.definitions.js +0 -36
- package/esm2015/lib/helpers/maps.helpers.js +0 -46
- package/esm2015/lib/pipes/search-filter.pipe.js +0 -62
- package/esm2015/lib/services/agent.service.js +0 -153
- package/esm2015/lib/services/google-maps.service.js +0 -201
- package/esm2015/lib/services/open-street-maps.service.js +0 -252
- /package/lib/{helpers → v1/helpers}/maps.helpers.d.ts +0 -0
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable, ViewChildren } from '@angular/core';
|
|
3
|
-
import * as L from 'leaflet';
|
|
4
|
-
import 'leaflet-routing-machine';
|
|
5
|
-
import { checkObjectPathExists, getObjectValueFromPath, isNotEmptyArray } from 'kwikid-toolkit';
|
|
6
|
-
import { addressConcator, nearestNeighborAlgorithm } from '../helpers/maps.helpers';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./agent.service";
|
|
9
|
-
import * as i2 from "@angular/google-maps";
|
|
10
|
-
import * as i3 from "@angular/common/http";
|
|
11
|
-
export class OpenStreetMapsService {
|
|
12
|
-
constructor(agentService, mapDirectionsService, httpClient) {
|
|
13
|
-
this.agentService = agentService;
|
|
14
|
-
this.mapDirectionsService = mapDirectionsService;
|
|
15
|
-
this.httpClient = httpClient;
|
|
16
|
-
this.allMarkers = [];
|
|
17
|
-
}
|
|
18
|
-
// To get Current Position
|
|
19
|
-
getPosition() {
|
|
20
|
-
return new Promise((resolve, reject) => {
|
|
21
|
-
navigator.geolocation.watchPosition((resp) => {
|
|
22
|
-
resolve({
|
|
23
|
-
lng: resp.coords.longitude,
|
|
24
|
-
lat: resp.coords.latitude
|
|
25
|
-
});
|
|
26
|
-
}, (err) => {
|
|
27
|
-
reject(err);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
// To extract Location from the Task Details
|
|
32
|
-
getLocation(task) {
|
|
33
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
36
|
-
let encodedAddres;
|
|
37
|
-
// If Fetch Address from Multiple Paths
|
|
38
|
-
if (checkObjectPathExists(this.agentService.config, 'dashboard.taskLocationPaths')) {
|
|
39
|
-
// Get address string from multiple paths
|
|
40
|
-
const config = this.agentService.config.dashboard.taskLocationPaths;
|
|
41
|
-
const address = addressConcator(task, config);
|
|
42
|
-
// Encode the Address in URI
|
|
43
|
-
encodedAddres = encodeURI(address);
|
|
44
|
-
}
|
|
45
|
-
// If Fetch Address from Single Path
|
|
46
|
-
else if (checkObjectPathExists(this.agentService.config, 'dashboard.taskLocationPath')) {
|
|
47
|
-
// Get Address from Single Path
|
|
48
|
-
const config = this.agentService.config.dashboard.taskLocationPath;
|
|
49
|
-
const address = getObjectValueFromPath(task, config);
|
|
50
|
-
// Encode the Address in URI
|
|
51
|
-
encodedAddres = encodeURI(address);
|
|
52
|
-
}
|
|
53
|
-
// Default Address Paths Avaiable
|
|
54
|
-
else {
|
|
55
|
-
const address = (_k = (_j = (_g = (_d = (_c = (_b = (_a = task === null || task === void 0 ? void 0 : task.extras) === null || _a === void 0 ? void 0 : _a.task_details) === null || _b === void 0 ? void 0 : _b.customer_details) === null || _c === void 0 ? void 0 : _c.address) !== null && _d !== void 0 ? _d : (_f = (_e = task === null || task === void 0 ? void 0 : task.task_details) === null || _e === void 0 ? void 0 : _e.customer_details) === null || _f === void 0 ? void 0 : _f.address) !== null && _g !== void 0 ? _g : (_h = task === null || task === void 0 ? void 0 : task.extras) === null || _h === void 0 ? void 0 : _h.address) !== null && _j !== void 0 ? _j : task === null || task === void 0 ? void 0 : task.address) !== null && _k !== void 0 ? _k : '';
|
|
56
|
-
// Encode the Address in URI
|
|
57
|
-
encodedAddres = encodeURI(address);
|
|
58
|
-
}
|
|
59
|
-
// URL to geocode Address String to Latitude & Longitude
|
|
60
|
-
const url = `https://nominatim.openstreetmap.org/search?q=${encodedAddres}&format=json`;
|
|
61
|
-
const response = yield fetch(url);
|
|
62
|
-
const data = yield response.json();
|
|
63
|
-
// Set Location {lat: LAT, lng: LNG} from address geocoded
|
|
64
|
-
const isValidLocation = isNotEmptyArray(data) && ((_l = data[0]) === null || _l === void 0 ? void 0 : _l.lat) & ((_m = data[0]) === null || _m === void 0 ? void 0 : _m.lon);
|
|
65
|
-
const location = isValidLocation
|
|
66
|
-
? { lat: (_o = data[0]) === null || _o === void 0 ? void 0 : _o.lat, lng: (_p = data[0]) === null || _p === void 0 ? void 0 : _p.lon }
|
|
67
|
-
: { lat: null, lng: null };
|
|
68
|
-
// Set Location validation & Google Maps URL
|
|
69
|
-
location['isValidLocation'] = isValidLocation;
|
|
70
|
-
location['color'] = isValidLocation ? 'blue' : 'red';
|
|
71
|
-
location['googleMapsUrl'] = `https://www.google.com/maps/place/${location === null || location === void 0 ? void 0 : location.lat},${location === null || location === void 0 ? void 0 : location.lng}`;
|
|
72
|
-
resolve(location);
|
|
73
|
-
}));
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
// Get Tasks | Markers Location Co Ordinates
|
|
77
|
-
getMarkersLocation(myMarker, tasks) {
|
|
78
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
let markers = [];
|
|
81
|
-
markers.push(myMarker);
|
|
82
|
-
const promises = tasks.map((task) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
const marker = yield this.getLocation(task);
|
|
84
|
-
task = Object.assign(Object.assign({}, task), marker);
|
|
85
|
-
markers.push(task);
|
|
86
|
-
}));
|
|
87
|
-
yield Promise.all(promises);
|
|
88
|
-
resolve(markers);
|
|
89
|
-
}));
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
// To Initialize Open Street Map
|
|
93
|
-
initializeMap() {
|
|
94
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
console.log('Running Init Open Street Maps');
|
|
96
|
-
this.myPosition = yield this.getPosition();
|
|
97
|
-
this.map = L.map('map', {
|
|
98
|
-
center: [this.myPosition.lat, this.myPosition.lng],
|
|
99
|
-
zoom: 11
|
|
100
|
-
});
|
|
101
|
-
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(this.map);
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
// To Add Open Street Marker in Map
|
|
105
|
-
addMarker({ lat, lng, title, color }) {
|
|
106
|
-
L.marker([lat, lng], {
|
|
107
|
-
icon: L.icon({
|
|
108
|
-
iconUrl: color == 'red'
|
|
109
|
-
? 'https://kwikid.s3.ap-south-1.amazonaws.com/CONFIG/USER/assets/map-marker-0.png'
|
|
110
|
-
: 'https://kwikid.s3.ap-south-1.amazonaws.com/CONFIG/USER/assets/map-marker-1.png'
|
|
111
|
-
})
|
|
112
|
-
})
|
|
113
|
-
.addTo(this.map)
|
|
114
|
-
.bindPopup(title);
|
|
115
|
-
}
|
|
116
|
-
// To Plot Open Street Directions for All Tasks
|
|
117
|
-
plotDirectionsForAllTasks(tasks) {
|
|
118
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
if (this.map) {
|
|
120
|
-
this.allMarkers = [];
|
|
121
|
-
// Create Agent Marker & Plot It.
|
|
122
|
-
const myMarker = {
|
|
123
|
-
lat: this.myPosition.lat,
|
|
124
|
-
lng: this.myPosition.lng,
|
|
125
|
-
title: 0,
|
|
126
|
-
color: 'red'
|
|
127
|
-
};
|
|
128
|
-
this.addMarker(myMarker);
|
|
129
|
-
this.allMarkers.push(myMarker);
|
|
130
|
-
// Create Markers for all Tasks
|
|
131
|
-
this.allMarkers = yield this.getMarkersLocation(myMarker, tasks);
|
|
132
|
-
// Run Algorithm to get optimized Routes
|
|
133
|
-
const startingPoint = this.allMarkers[0];
|
|
134
|
-
const unvisitedWaypoints = this.allMarkers.slice(1);
|
|
135
|
-
const optimizedRoute = nearestNeighborAlgorithm(startingPoint, unvisitedWaypoints);
|
|
136
|
-
// Sort All Markers as per optimized routes
|
|
137
|
-
this.allMarkers = this.sortTasksAsPerDistance(optimizedRoute, this.allMarkers, true);
|
|
138
|
-
// Sort All Tasks as per optimized routes
|
|
139
|
-
tasks = this.sortTasksAsPerDistance(optimizedRoute.slice(1), tasks, false);
|
|
140
|
-
// Plot Markers for All Tasks
|
|
141
|
-
tasks.map((task) => {
|
|
142
|
-
if (task === null || task === void 0 ? void 0 : task.isValidLocation) {
|
|
143
|
-
const marker = this.getLocation(task);
|
|
144
|
-
this.addMarker(marker);
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
// Set Styles for all Task Routes
|
|
148
|
-
const styles = [
|
|
149
|
-
{ color: 'blue', opacity: 1, weight: 8 },
|
|
150
|
-
{ color: 'white', opacity: 0.6, weight: 12 }
|
|
151
|
-
];
|
|
152
|
-
// Set Routes for all Tasks
|
|
153
|
-
this.allTasksRoutes = this.setRoutes(this.allMarkers, styles);
|
|
154
|
-
this.fitMapBounds();
|
|
155
|
-
}
|
|
156
|
-
return tasks;
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
// To plot Open Street Direction for selected Task
|
|
160
|
-
plotDirectionsForSelectedTask(task) {
|
|
161
|
-
if (task !== null) {
|
|
162
|
-
// Remove Previously Selected Task Route
|
|
163
|
-
if (this.selectedTaskRoutes) {
|
|
164
|
-
this.map.removeControl(this.selectedTaskRoutes);
|
|
165
|
-
}
|
|
166
|
-
// Remove All Tasks Routes
|
|
167
|
-
if (this.allTasksRoutes) {
|
|
168
|
-
this.map.removeControl(this.allTasksRoutes);
|
|
169
|
-
}
|
|
170
|
-
const taskMarker = task;
|
|
171
|
-
// If Location is Available in Task Details
|
|
172
|
-
if (taskMarker.color != 'red') {
|
|
173
|
-
const markers = [this.allMarkers[0], taskMarker];
|
|
174
|
-
const styles = [
|
|
175
|
-
{ color: 'green', opacity: 1, weight: 8 },
|
|
176
|
-
{ color: 'white', opacity: 0.4, weight: 12 }
|
|
177
|
-
];
|
|
178
|
-
this.selectedTaskRoutes = this.setRoutes(markers, styles);
|
|
179
|
-
this.setSelectedTaskDistanceAndTime();
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
alert('No Location Available');
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
// Set All Tasks Routes Again & Remove Selected Tasks route
|
|
186
|
-
else {
|
|
187
|
-
if (this.selectedTaskRoutes) {
|
|
188
|
-
this.map.removeControl(this.selectedTaskRoutes);
|
|
189
|
-
}
|
|
190
|
-
this.map.addControl(this.allTasksRoutes);
|
|
191
|
-
this.selectedTaskRoutes = undefined;
|
|
192
|
-
}
|
|
193
|
-
this.fitMapBounds();
|
|
194
|
-
}
|
|
195
|
-
// Get Distance & Time of Selected Task
|
|
196
|
-
getSelectedTaskDistanceAndTime() {
|
|
197
|
-
return this.selectedTaskDistanceAndTime;
|
|
198
|
-
}
|
|
199
|
-
// Set Distance & Time of Selected Task
|
|
200
|
-
setSelectedTaskDistanceAndTime() {
|
|
201
|
-
this.selectedTaskRoutes.on('routesfound', function (e) {
|
|
202
|
-
let routes = e.routes;
|
|
203
|
-
let summary = routes[0].summary;
|
|
204
|
-
const distance = summary.totalDistance / 1000;
|
|
205
|
-
const time = Math.round((summary.totalTime % 3600) / 60);
|
|
206
|
-
this.selectedTaskDistanceAndTime = {
|
|
207
|
-
distance: distance,
|
|
208
|
-
time: time
|
|
209
|
-
};
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
// To sort Open Street Maps Task as per nearest distance
|
|
213
|
-
sortTasksAsPerDistance(order, tasks, isMarker) {
|
|
214
|
-
let sortedTasks = [];
|
|
215
|
-
for (let i = 0; i < tasks.length; i++) {
|
|
216
|
-
const title = isMarker ? order[i].title : order[i].title - 1;
|
|
217
|
-
let task = tasks[title];
|
|
218
|
-
sortedTasks.push(task);
|
|
219
|
-
}
|
|
220
|
-
return sortedTasks;
|
|
221
|
-
}
|
|
222
|
-
// To set Open Street routes in the maps
|
|
223
|
-
setRoutes(markers, styles) {
|
|
224
|
-
return L.Routing.control({
|
|
225
|
-
waypoints: markers,
|
|
226
|
-
lineOptions: {
|
|
227
|
-
styles: styles
|
|
228
|
-
},
|
|
229
|
-
createMarker: function () {
|
|
230
|
-
return null;
|
|
231
|
-
},
|
|
232
|
-
routeWhileDragging: true
|
|
233
|
-
}).addTo(this.map);
|
|
234
|
-
}
|
|
235
|
-
// To set Open Street view point on the map
|
|
236
|
-
fitMapBounds() {
|
|
237
|
-
const markerLatLngs = this.allMarkers.map((marker) => L.latLng(marker.lat, marker.lng));
|
|
238
|
-
this.map.fitBounds(markerLatLngs);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
/** @nocollapse */ OpenStreetMapsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OpenStreetMapsService, deps: [{ token: i1.AgentService }, { token: i2.MapDirectionsService }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
242
|
-
/** @nocollapse */ OpenStreetMapsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OpenStreetMapsService, providedIn: 'root' });
|
|
243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OpenStreetMapsService, decorators: [{
|
|
244
|
-
type: Injectable,
|
|
245
|
-
args: [{
|
|
246
|
-
providedIn: 'root'
|
|
247
|
-
}]
|
|
248
|
-
}], ctorParameters: function () { return [{ type: i1.AgentService }, { type: i2.MapDirectionsService }, { type: i3.HttpClient }]; }, propDecorators: { directionsRenders: [{
|
|
249
|
-
type: ViewChildren,
|
|
250
|
-
args: ['directionsRender']
|
|
251
|
-
}] } });
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1zdHJlZXQtbWFwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3NlcnZpY2VzL29wZW4tc3RyZWV0LW1hcHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxLQUFLLENBQUMsTUFBTSxTQUFTLENBQUM7QUFDN0IsT0FBTyx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUNMLGVBQWUsRUFDZix3QkFBd0IsRUFDekIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFLakMsTUFBTSxPQUFPLHFCQUFxQjtJQWFoQyxZQUNVLFlBQTBCLEVBQzNCLG9CQUEwQyxFQUMxQyxVQUFzQjtRQUZyQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFiL0IsZUFBVSxHQUFRLEVBQUUsQ0FBQztJQWNsQixDQUFDO0lBRUosMEJBQTBCO0lBQzFCLFdBQVc7UUFDVCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUNqQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNQLE9BQU8sQ0FBQztvQkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUMxQixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2lCQUMxQixDQUFDLENBQUM7WUFDTCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVB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RSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ2pDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDOztzSUFoVFUscUJBQXFCOzBJQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COytKQVVtQyxpQkFBaUI7c0JBQWxELFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ2xlYWZsZXQtcm91dGluZy1tYWNoaW5lJztcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gJy4vYWdlbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBjaGVja09iamVjdFBhdGhFeGlzdHMsXG4gIGdldE9iamVjdFZhbHVlRnJvbVBhdGgsXG4gIGlzTm90RW1wdHlBcnJheVxufSBmcm9tICdrd2lraWQtdG9vbGtpdCc7XG5cbmltcG9ydCB7IE1hcERpcmVjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIGFkZHJlc3NDb25jYXRvcixcbiAgbmVhcmVzdE5laWdoYm9yQWxnb3JpdGhtXG59IGZyb20gJy4uL2hlbHBlcnMvbWFwcy5oZWxwZXJzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3BlblN0cmVldE1hcHNTZXJ2aWNlIHtcbiAgbXlQb3NpdGlvbjtcbiAgbWFwOiBhbnk7XG4gIGFsbE1hcmtlcnM6IGFueSA9IFtdO1xuXG4gIGFsbFRhc2tzUm91dGVzOiBhbnk7XG4gIHNlbGVjdGVkVGFza1JvdXRlczogYW55O1xuICBzZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWU6IGFueTtcblxuICBAVmlld0NoaWxkcmVuKCdkaXJlY3Rpb25zUmVuZGVyJykgZGlyZWN0aW9uc1JlbmRlcnM6IFF1ZXJ5TGlzdDxcbiAgICBFbGVtZW50UmVmPGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZW5kZXJlcj5cbiAgPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBtYXBEaXJlY3Rpb25zU2VydmljZTogTWFwRGlyZWN0aW9uc1NlcnZpY2UsXG4gICAgcHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIC8vIFRvIGdldCBDdXJyZW50IFBvc2l0aW9uXG4gIGdldFBvc2l0aW9uKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKFxuICAgICAgICAocmVzcCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgbG5nOiByZXNwLmNvb3Jkcy5sb25naXR1ZGUsXG4gICAgICAgICAgICBsYXQ6IHJlc3AuY29vcmRzLmxhdGl0dWRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRvIGV4dHJhY3QgTG9jYXRpb24gZnJvbSB0aGUgVGFzayBEZXRhaWxzXG4gIGFzeW5jIGdldExvY2F0aW9uKHRhc2spIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGxldCBlbmNvZGVkQWRkcmVzO1xuXG4gICAgICAvLyBJZiBGZXRjaCBBZGRyZXNzIGZyb20gTXVsdGlwbGUgUGF0aHNcbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKFxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZyxcbiAgICAgICAgICAnZGFzaGJvYXJkLnRhc2tMb2NhdGlvblBhdGhzJ1xuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgLy8gR2V0IGFkZHJlc3Mgc3RyaW5nIGZyb20gbXVsdGlwbGUgcGF0aHNcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5hZ2VudFNlcnZpY2UuY29uZmlnLmRhc2hib2FyZC50YXNrTG9jYXRpb25QYXRocztcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFkZHJlc3NDb25jYXRvcih0YXNrLCBjb25maWcpO1xuXG4gICAgICAgIC8vIEVuY29kZSB0aGUgQWRkcmVzcyBpbiBVUklcbiAgICAgICAgZW5jb2RlZEFkZHJlcyA9IGVuY29kZVVSSShhZGRyZXNzKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgRmV0Y2ggQWRkcmVzcyBmcm9tIFNpbmdsZSBQYXRoXG4gICAgICBlbHNlIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKFxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZyxcbiAgICAgICAgICAnZGFzaGJvYXJkLnRhc2tMb2NhdGlvblBhdGgnXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICAvLyBHZXQgQWRkcmVzcyBmcm9tIFNpbmdsZSBQYXRoXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZy5kYXNoYm9hcmQudGFza0xvY2F0aW9uUGF0aDtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgodGFzaywgY29uZmlnKTtcblxuICAgICAgICAvLyBFbmNvZGUgdGhlIEFkZHJlc3MgaW4gVVJJXG4gICAgICAgIGVuY29kZWRBZGRyZXMgPSBlbmNvZGVVUkkoYWRkcmVzcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlZmF1bHQgQWRkcmVzcyBQYXRocyBBdmFpYWJsZVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPVxuICAgICAgICAgIHRhc2s/LmV4dHJhcz8udGFza19kZXRhaWxzPy5jdXN0b21lcl9kZXRhaWxzPy5hZGRyZXNzID8/XG4gICAgICAgICAgdGFzaz8udGFza19kZXRhaWxzPy5jdXN0b21lcl9kZXRhaWxzPy5hZGRyZXNzID8/XG4gICAgICAgICAgdGFzaz8uZXh0cmFzPy5hZGRyZXNzID8/XG4gICAgICAgICAgdGFzaz8uYWRkcmVzcyA/P1xuICAgICAgICAgICcnO1xuXG4gICAgICAgIC8vIEVuY29kZSB0aGUgQWRkcmVzcyBpbiBVUklcbiAgICAgICAgZW5jb2RlZEFkZHJlcyA9IGVuY29kZVVSSShhZGRyZXNzKTtcbiAgICAgIH1cblxuICAgICAgLy8gVVJMIHRvIGdlb2NvZGUgQWRkcmVzcyBTdHJpbmcgdG8gTGF0aXR1ZGUgJiBMb25naXR1ZGVcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/cT0ke2VuY29kZWRBZGRyZXN9JmZvcm1hdD1qc29uYDtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpO1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICAvLyBTZXQgTG9jYXRpb24ge2xhdDogTEFULCBsbmc6IExOR30gZnJvbSBhZGRyZXNzIGdlb2NvZGVkXG4gICAgICBjb25zdCBpc1ZhbGlkTG9jYXRpb24gPVxuICAgICAgICBpc05vdEVtcHR5QXJyYXkoZGF0YSkgJiYgZGF0YVswXT8ubGF0ICYgZGF0YVswXT8ubG9uO1xuICAgICAgY29uc3QgbG9jYXRpb24gPSBpc1ZhbGlkTG9jYXRpb25cbiAgICAgICAgPyB7IGxhdDogZGF0YVswXT8ubGF0LCBsbmc6IGRhdGFbMF0/LmxvbiB9XG4gICAgICAgIDoge2xhdDogbnVsbCwgbG5nOiBudWxsfTtcblxuICAgICAgLy8gU2V0IExvY2F0aW9uIHZhbGlkYXRpb24gJiBHb29nbGUgTWFwcyBVUkxcbiAgICAgIGxvY2F0aW9uWydpc1ZhbGlkTG9jYXRpb24nXSA9IGlzVmFsaWRMb2NhdGlvbjtcbiAgICAgIGxvY2F0aW9uWydjb2xvciddID0gaXNWYWxpZExvY2F0aW9uID8gJ2JsdWUnIDogJ3JlZCc7XG4gICAgICBsb2NhdGlvbltcbiAgICAgICAgJ2dvb2dsZU1hcHNVcmwnXG4gICAgICBdID0gYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9wbGFjZS8ke2xvY2F0aW9uPy5sYXR9LCR7bG9jYXRpb24/LmxuZ31gO1xuXG4gICAgICByZXNvbHZlKGxvY2F0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEdldCBUYXNrcyB8IE1hcmtlcnMgTG9jYXRpb24gQ28gT3JkaW5hdGVzXG4gIGFzeW5jIGdldE1hcmtlcnNMb2NhdGlvbihteU1hcmtlciwgdGFza3MpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGxldCBtYXJrZXJzID0gW107XG4gICAgICBtYXJrZXJzLnB1c2gobXlNYXJrZXIpO1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSB0YXNrcy5tYXAoYXN5bmMgKHRhc2spID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyOiBhbnkgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uKHRhc2spO1xuICAgICAgICB0YXNrID0geyAuLi50YXNrLCAuLi5tYXJrZXIgfTtcbiAgICAgICAgbWFya2Vycy5wdXNoKHRhc2spO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgcmVzb2x2ZShtYXJrZXJzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRvIEluaXRpYWxpemUgT3BlbiBTdHJlZXQgTWFwXG4gIGFzeW5jIGluaXRpYWxpemVNYXAoKSB7XG4gICAgY29uc29sZS5sb2coJ1J1bm5pbmcgSW5pdCBPcGVuIFN0cmVldCBNYXBzJyk7XG4gICAgdGhpcy5teVBvc2l0aW9uID0gYXdhaXQgdGhpcy5nZXRQb3NpdGlvbigpO1xuICAgIHRoaXMubWFwID0gTC5tYXAoJ21hcCcsIHtcbiAgICAgIGNlbnRlcjogW3RoaXMubXlQb3NpdGlvbi5sYXQsIHRoaXMubXlQb3NpdGlvbi5sbmddLFxuICAgICAgem9vbTogMTFcbiAgICB9KTtcbiAgICBMLnRpbGVMYXllcignaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnKS5hZGRUbyhcbiAgICAgIHRoaXMubWFwXG4gICAgKTtcbiAgfVxuXG4gIC8vIFRvIEFkZCBPcGVuIFN0cmVldCBNYXJrZXIgaW4gTWFwXG4gIGFkZE1hcmtlcih7IGxhdCwgbG5nLCB0aXRsZSwgY29sb3IgfSkge1xuICAgIEwubWFya2VyKFtsYXQsIGxuZ10sIHtcbiAgICAgIGljb246IEwuaWNvbih7XG4gICAgICAgIGljb25Vcmw6XG4gICAgICAgICAgY29sb3IgPT0gJ3JlZCdcbiAgICAgICAgICAgID8gJ2h0dHBzOi8va3dpa2lkLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9DT05GSUcvVVNFUi9hc3NldHMvbWFwLW1hcmtlci0wLnBuZydcbiAgICAgICAgICAgIDogJ2h0dHBzOi8va3dpa2lkLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9DT05GSUcvVVNFUi9hc3NldHMvbWFwLW1hcmtlci0xLnBuZydcbiAgICAgIH0pXG4gICAgfSlcbiAgICAgIC5hZGRUbyh0aGlzLm1hcClcbiAgICAgIC5iaW5kUG9wdXAodGl0bGUpO1xuICB9XG5cbiAgLy8gVG8gUGxvdCBPcGVuIFN0cmVldCBEaXJlY3Rpb25zIGZvciBBbGwgVGFza3NcbiAgYXN5bmMgcGxvdERpcmVjdGlvbnNGb3JBbGxUYXNrcyh0YXNrcykge1xuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgdGhpcy5hbGxNYXJrZXJzID0gW107XG5cbiAgICAgIC8vIENyZWF0ZSBBZ2VudCBNYXJrZXIgJiBQbG90IEl0LlxuICAgICAgY29uc3QgbXlNYXJrZXIgPSB7XG4gICAgICAgIGxhdDogdGhpcy5teVBvc2l0aW9uLmxhdCxcbiAgICAgICAgbG5nOiB0aGlzLm15UG9zaXRpb24ubG5nLFxuICAgICAgICB0aXRsZTogMCxcbiAgICAgICAgY29sb3I6ICdyZWQnXG4gICAgICB9O1xuICAgICAgdGhpcy5hZGRNYXJrZXIobXlNYXJrZXIpO1xuICAgICAgdGhpcy5hbGxNYXJrZXJzLnB1c2gobXlNYXJrZXIpO1xuXG4gICAgICAvLyBDcmVhdGUgTWFya2VycyBmb3IgYWxsIFRhc2tzXG4gICAgICB0aGlzLmFsbE1hcmtlcnMgPSBhd2FpdCB0aGlzLmdldE1hcmtlcnNMb2NhdGlvbihteU1hcmtlciwgdGFza3MpO1xuXG4gICAgICAvLyBSdW4gQWxnb3JpdGhtIHRvIGdldCBvcHRpbWl6ZWQgUm91dGVzXG4gICAgICBjb25zdCBzdGFydGluZ1BvaW50ID0gdGhpcy5hbGxNYXJrZXJzWzBdO1xuICAgICAgY29uc3QgdW52aXNpdGVkV2F5cG9pbnRzID0gdGhpcy5hbGxNYXJrZXJzLnNsaWNlKDEpO1xuICAgICAgY29uc3Qgb3B0aW1pemVkUm91dGUgPSBuZWFyZXN0TmVpZ2hib3JBbGdvcml0aG0oXG4gICAgICAgIHN0YXJ0aW5nUG9pbnQsXG4gICAgICAgIHVudmlzaXRlZFdheXBvaW50c1xuICAgICAgKTtcblxuICAgICAgLy8gU29ydCBBbGwgTWFya2VycyBhcyBwZXIgb3B0aW1pemVkIHJvdXRlc1xuICAgICAgdGhpcy5hbGxNYXJrZXJzID0gdGhpcy5zb3J0VGFza3NBc1BlckRpc3RhbmNlKFxuICAgICAgICBvcHRpbWl6ZWRSb3V0ZSxcbiAgICAgICAgdGhpcy5hbGxNYXJrZXJzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICAvLyBTb3J0IEFsbCBUYXNrcyBhcyBwZXIgb3B0aW1pemVkIHJvdXRlc1xuICAgICAgdGFza3MgPSB0aGlzLnNvcnRUYXNrc0FzUGVyRGlzdGFuY2UoXG4gICAgICAgIG9wdGltaXplZFJvdXRlLnNsaWNlKDEpLFxuICAgICAgICB0YXNrcyxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG5cbiAgICAgIC8vIFBsb3QgTWFya2VycyBmb3IgQWxsIFRhc2tzXG4gICAgICB0YXNrcy5tYXAoKHRhc2spID0+IHtcbiAgICAgICAgaWYgKHRhc2s/LmlzVmFsaWRMb2NhdGlvbikge1xuICAgICAgICAgIGNvbnN0IG1hcmtlcjogYW55ID0gdGhpcy5nZXRMb2NhdGlvbih0YXNrKTtcbiAgICAgICAgICB0aGlzLmFkZE1hcmtlcihtYXJrZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gU2V0IFN0eWxlcyBmb3IgYWxsIFRhc2sgUm91dGVzXG4gICAgICBjb25zdCBzdHlsZXMgPSBbXG4gICAgICAgIHsgY29sb3I6ICdibHVlJywgb3BhY2l0eTogMSwgd2VpZ2h0OiA4IH0sXG4gICAgICAgIHsgY29sb3I6ICd3aGl0ZScsIG9wYWNpdHk6IDAuNiwgd2VpZ2h0OiAxMiB9XG4gICAgICBdO1xuXG4gICAgICAvLyBTZXQgUm91dGVzIGZvciBhbGwgVGFza3NcbiAgICAgIHRoaXMuYWxsVGFza3NSb3V0ZXMgPSB0aGlzLnNldFJvdXRlcyh0aGlzLmFsbE1hcmtlcnMsIHN0eWxlcyk7XG4gICAgICB0aGlzLmZpdE1hcEJvdW5kcygpO1xuICAgIH1cbiAgICByZXR1cm4gdGFza3M7XG4gIH1cblxuICAvLyBUbyBwbG90IE9wZW4gU3RyZWV0IERpcmVjdGlvbiBmb3Igc2VsZWN0ZWQgVGFza1xuICBwbG90RGlyZWN0aW9uc0ZvclNlbGVjdGVkVGFzayh0YXNrKSB7XG4gICAgaWYgKHRhc2sgIT09IG51bGwpIHtcbiAgICAgIC8vIFJlbW92ZSBQcmV2aW91c2x5IFNlbGVjdGVkIFRhc2sgUm91dGVcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGFza1JvdXRlcykge1xuICAgICAgICB0aGlzLm1hcC5yZW1vdmVDb250cm9sKHRoaXMuc2VsZWN0ZWRUYXNrUm91dGVzKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIEFsbCBUYXNrcyBSb3V0ZXNcbiAgICAgIGlmICh0aGlzLmFsbFRhc2tzUm91dGVzKSB7XG4gICAgICAgIHRoaXMubWFwLnJlbW92ZUNvbnRyb2wodGhpcy5hbGxUYXNrc1JvdXRlcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tNYXJrZXIgPSB0YXNrO1xuXG4gICAgICAvLyBJZiBMb2NhdGlvbiBpcyBBdmFpbGFibGUgaW4gVGFzayBEZXRhaWxzXG4gICAgICBpZiAodGFza01hcmtlci5jb2xvciAhPSAncmVkJykge1xuICAgICAgICBjb25zdCBtYXJrZXJzID0gW3RoaXMuYWxsTWFya2Vyc1swXSwgdGFza01hcmtlcl07XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IFtcbiAgICAgICAgICB7IGNvbG9yOiAnZ3JlZW4nLCBvcGFjaXR5OiAxLCB3ZWlnaHQ6IDggfSxcbiAgICAgICAgICB7IGNvbG9yOiAnd2hpdGUnLCBvcGFjaXR5OiAwLjQsIHdlaWdodDogMTIgfVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFza1JvdXRlcyA9IHRoaXMuc2V0Um91dGVzKG1hcmtlcnMsIHN0eWxlcyk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGVydCgnTm8gTG9jYXRpb24gQXZhaWxhYmxlJyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFNldCBBbGwgVGFza3MgUm91dGVzIEFnYWluICYgUmVtb3ZlIFNlbGVjdGVkIFRhc2tzIHJvdXRlXG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFRhc2tSb3V0ZXMpIHtcbiAgICAgICAgdGhpcy5tYXAucmVtb3ZlQ29udHJvbCh0aGlzLnNlbGVjdGVkVGFza1JvdXRlcyk7XG4gICAgICB9XG4gICAgICB0aGlzLm1hcC5hZGRDb250cm9sKHRoaXMuYWxsVGFza3NSb3V0ZXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhc2tSb3V0ZXMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuZml0TWFwQm91bmRzKCk7XG4gIH1cblxuICAvLyBHZXQgRGlzdGFuY2UgJiBUaW1lIG9mIFNlbGVjdGVkIFRhc2tcbiAgZ2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZTtcbiAgfVxuXG4gIC8vIFNldCBEaXN0YW5jZSAmIFRpbWUgb2YgU2VsZWN0ZWQgVGFza1xuICBzZXRTZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhc2tSb3V0ZXMub24oJ3JvdXRlc2ZvdW5kJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGxldCByb3V0ZXMgPSBlLnJvdXRlcztcbiAgICAgIGxldCBzdW1tYXJ5ID0gcm91dGVzWzBdLnN1bW1hcnk7XG5cbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gc3VtbWFyeS50b3RhbERpc3RhbmNlIC8gMTAwMDtcbiAgICAgIGNvbnN0IHRpbWUgPSBNYXRoLnJvdW5kKChzdW1tYXJ5LnRvdGFsVGltZSAlIDM2MDApIC8gNjApO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZSA9IHtcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RhbmNlLFxuICAgICAgICB0aW1lOiB0aW1lXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVG8gc29ydCBPcGVuIFN0cmVldCBNYXBzIFRhc2sgYXMgcGVyIG5lYXJlc3QgZGlzdGFuY2VcbiAgc29ydFRhc2tzQXNQZXJEaXN0YW5jZShvcmRlciwgdGFza3MsIGlzTWFya2VyKSB7XG4gICAgbGV0IHNvcnRlZFRhc2tzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGl0bGUgPSBpc01hcmtlciA/IG9yZGVyW2ldLnRpdGxlIDogb3JkZXJbaV0udGl0bGUgLSAxO1xuICAgICAgbGV0IHRhc2sgPSB0YXNrc1t0aXRsZV07XG4gICAgICBzb3J0ZWRUYXNrcy5wdXNoKHRhc2spO1xuICAgIH1cbiAgICByZXR1cm4gc29ydGVkVGFza3M7XG4gIH1cblxuICAvLyBUbyBzZXQgT3BlbiBTdHJlZXQgcm91dGVzIGluIHRoZSBtYXBzXG4gIHNldFJvdXRlcyhtYXJrZXJzLCBzdHlsZXMpIHtcbiAgICByZXR1cm4gTC5Sb3V0aW5nLmNvbnRyb2woe1xuICAgICAgd2F5cG9pbnRzOiBtYXJrZXJzLFxuICAgICAgbGluZU9wdGlvbnM6IHtcbiAgICAgICAgc3R5bGVzOiBzdHlsZXNcbiAgICAgIH0sXG4gICAgICBjcmVhdGVNYXJrZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LFxuICAgICAgcm91dGVXaGlsZURyYWdnaW5nOiB0cnVlXG4gICAgfSkuYWRkVG8odGhpcy5tYXApO1xuICB9XG5cbiAgLy8gVG8gc2V0IE9wZW4gU3RyZWV0IHZpZXcgcG9pbnQgb24gdGhlIG1hcFxuICBmaXRNYXBCb3VuZHMoKSB7XG4gICAgY29uc3QgbWFya2VyTGF0TG5ncyA9IHRoaXMuYWxsTWFya2Vycy5tYXAoKG1hcmtlcikgPT5cbiAgICAgIEwubGF0TG5nKG1hcmtlci5sYXQsIG1hcmtlci5sbmcpXG4gICAgKTtcbiAgICB0aGlzLm1hcC5maXRCb3VuZHMobWFya2VyTGF0TG5ncyk7XG4gIH1cbn1cbiJdfQ==
|
|
File without changes
|