@geoit/ui 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/README.md +1 -1
- package/ai/catalog.json +3 -3
- package/ai/components/geo-map-basemap-switcher.md +1 -1
- package/ai/components/geo-map.md +7 -5
- package/ai/mockup.html +2 -2
- package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +22 -33
- package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +47 -8
- package/esm2022/lib/figma/geo-map/geo-map.types.mjs +1 -1
- package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +49 -1
- package/fesm2022/geoit-ui.mjs +113 -39
- package/fesm2022/geoit-ui.mjs.map +1 -1
- package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +1 -1
- package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +7 -9
- package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +1 -1
- package/lib/figma/geo-map/geo-map.constants.d.ts +7 -1
- package/lib/figma/geo-map/geo-map.types.d.ts +20 -2
- package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +1 -0
- package/lib/figma/geo-page-title/geo-page-title.component.d.ts +1 -1
- package/lib/figma/geo-pagination/geo-pagination.component.d.ts +1 -1
- package/lib/figma/geo-table/geo-table.component.d.ts +2 -2
- package/lib/figma/geo-typography/geo-typography.component.d.ts +1 -1
- package/package.json +2 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable, inject } from '@angular/core';
|
|
2
2
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
3
|
+
import LayerGroup from 'ol/layer/Group';
|
|
3
4
|
import TileLayer from 'ol/layer/Tile';
|
|
4
5
|
import VectorLayer from 'ol/layer/Vector';
|
|
5
6
|
import OSM from 'ol/source/OSM';
|
|
@@ -10,6 +11,7 @@ import WMTS from 'ol/source/WMTS';
|
|
|
10
11
|
import WMTSTileGrid from 'ol/tilegrid/WMTS';
|
|
11
12
|
import { get as getProjection } from 'ol/proj';
|
|
12
13
|
import { getTopLeft, getWidth } from 'ol/extent';
|
|
14
|
+
import { apply as applyMapboxStyle } from 'ol-mapbox-style';
|
|
13
15
|
import { GEO_MAP_BASEMAP_LAYER_ID } from '../geo-map.constants';
|
|
14
16
|
import { GeoMapProjectionService } from './geo-map-projection.service';
|
|
15
17
|
import * as i0 from "@angular/core";
|
|
@@ -44,6 +46,22 @@ export class GeoMapLayerService {
|
|
|
44
46
|
};
|
|
45
47
|
return this.createLayer(config);
|
|
46
48
|
}
|
|
49
|
+
if (basemap.type === 'mapbox-style') {
|
|
50
|
+
const config = {
|
|
51
|
+
id: GEO_MAP_BASEMAP_LAYER_ID,
|
|
52
|
+
title: basemap.title ?? 'Mapbox style basemap',
|
|
53
|
+
type: 'mapbox-style',
|
|
54
|
+
styleJson: basemap.styleJson,
|
|
55
|
+
styleUrl: basemap.styleUrl,
|
|
56
|
+
transformRequest: basemap.transformRequest,
|
|
57
|
+
visible: true,
|
|
58
|
+
opacity: 1,
|
|
59
|
+
zIndex: 0,
|
|
60
|
+
basemap: true,
|
|
61
|
+
group: 'base-map',
|
|
62
|
+
};
|
|
63
|
+
return this.createLayer(config);
|
|
64
|
+
}
|
|
47
65
|
const config = {
|
|
48
66
|
id: GEO_MAP_BASEMAP_LAYER_ID,
|
|
49
67
|
title: basemap.title ?? 'XYZ basemap',
|
|
@@ -83,6 +101,9 @@ export class GeoMapLayerService {
|
|
|
83
101
|
case 'vector':
|
|
84
102
|
layer = this.createVectorLayer(config);
|
|
85
103
|
break;
|
|
104
|
+
case 'mapbox-style':
|
|
105
|
+
layer = this.createMapboxStyleLayer(config);
|
|
106
|
+
break;
|
|
86
107
|
default: {
|
|
87
108
|
const _exhaustive = config;
|
|
88
109
|
throw new Error(`Unsupported layer type: ${JSON.stringify(_exhaustive)}`);
|
|
@@ -138,6 +159,10 @@ export class GeoMapLayerService {
|
|
|
138
159
|
previous.dataProjection !== next.dataProjection);
|
|
139
160
|
case 'vector':
|
|
140
161
|
return previous.features !== next.features;
|
|
162
|
+
case 'mapbox-style':
|
|
163
|
+
return (previous.styleUrl !== next.styleUrl ||
|
|
164
|
+
JSON.stringify(previous.styleJson) !==
|
|
165
|
+
JSON.stringify(next.styleJson));
|
|
141
166
|
default:
|
|
142
167
|
return true;
|
|
143
168
|
}
|
|
@@ -207,6 +232,9 @@ export class GeoMapLayerService {
|
|
|
207
232
|
if (config.type === 'geojson' && config.data == null) {
|
|
208
233
|
throw new Error(`GeoJSON layer "${config.id}" is missing data.`);
|
|
209
234
|
}
|
|
235
|
+
if (config.type === 'mapbox-style' && !config.styleJson && !config.styleUrl?.trim()) {
|
|
236
|
+
throw new Error(`Mapbox-style layer "${config.id}" requires styleJson or styleUrl.`);
|
|
237
|
+
}
|
|
210
238
|
}
|
|
211
239
|
applyCommonOptions(layer, config) {
|
|
212
240
|
layer.set(LAYER_ID_KEY, config.id);
|
|
@@ -359,10 +387,30 @@ export class GeoMapLayerService {
|
|
|
359
387
|
});
|
|
360
388
|
return new VectorLayer({ source });
|
|
361
389
|
}
|
|
390
|
+
createMapboxStyleLayer(config) {
|
|
391
|
+
const group = new LayerGroup({ layers: [] });
|
|
392
|
+
const styleInput = config.styleJson ?? config.styleUrl;
|
|
393
|
+
if (!styleInput) {
|
|
394
|
+
throw new Error(`Mapbox-style layer "${config.id}" is missing styleJson/styleUrl.`);
|
|
395
|
+
}
|
|
396
|
+
applyMapboxStyle(group, styleInput, { transformRequest: config.transformRequest })
|
|
397
|
+
.then(() => {
|
|
398
|
+
this.runtime.set(config.id, { id: config.id, status: 'ready' });
|
|
399
|
+
})
|
|
400
|
+
.catch((err) => {
|
|
401
|
+
console.error(`[GeoMapLayerService] Mapbox style apply error "${config.id}"`, err);
|
|
402
|
+
this.runtime.set(config.id, {
|
|
403
|
+
id: config.id,
|
|
404
|
+
status: 'error',
|
|
405
|
+
errorMessage: 'Không áp được style bản đồ nền.',
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
return group;
|
|
409
|
+
}
|
|
362
410
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
363
411
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService });
|
|
364
412
|
}
|
|
365
413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService, decorators: [{
|
|
366
414
|
type: Injectable
|
|
367
415
|
}] });
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1sYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9zZXJ2aWNlcy9nZW8tbWFwLWxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFHeEMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFFaEMsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRXZFLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQztBQUNsQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDbkMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFRM0M7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUNaLFVBQVUs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QztZQUNILE9BQU8sSUFBSSxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNoRCxjQUFjO2dCQUNkLGlCQUFpQjthQUNsQixDQUF3QixDQUFDO1lBQzFCLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sSUFBSSxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxNQUErQjtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQztZQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFO1NBQ2hDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7d0dBL1hVLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCB0eXBlIEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IHR5cGUgQmFzZUxheWVyIGZyb20gJ29sL2xheWVyL0Jhc2UnO1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJztcbmltcG9ydCBWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IE9TTSBmcm9tICdvbC9zb3VyY2UvT1NNJztcbmltcG9ydCBUaWxlV01TIGZyb20gJ29sL3NvdXJjZS9UaWxlV01TJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgWFlaIGZyb20gJ29sL3NvdXJjZS9YWVonO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0aW9uTGlrZSB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IFdNVFMgZnJvbSAnb2wvc291cmNlL1dNVFMnO1xuaW1wb3J0IFdNVFNUaWxlR3JpZCBmcm9tICdvbC90aWxlZ3JpZC9XTVRTJztcbmltcG9ydCB7IGdldCBhcyBnZXRQcm9qZWN0aW9uIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgeyBnZXRUb3BMZWZ0LCBnZXRXaWR0aCB9IGZyb20gJ29sL2V4dGVudCc7XG5pbXBvcnQgeyBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQgfSBmcm9tICcuLi9nZW8tbWFwLmNvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEdlb01hcEJhc2VtYXBJbnB1dCxcbiAgR2VvTWFwR2VvSnNvbkxheWVyQ29uZmlnLFxuICBHZW9NYXBMYXllckNvbmZpZyxcbiAgR2VvTWFwTGF5ZXJSdW50aW1lU3RhdGUsXG4gIEdlb01hcE9zbUxheWVyQ29uZmlnLFxuICBHZW9NYXBWZWN0b3JMYXllckNvbmZpZyxcbiAgR2VvTWFwV21zTGF5ZXJDb25maWcsXG4gIEdlb01hcFdtdHNMYXllckNvbmZpZyxcbiAgR2VvTWFwWHl6TGF5ZXJDb25maWcsXG59IGZyb20gJy4uL2dlby1tYXAudHlwZXMnO1xuaW1wb3J0IHsgR2VvTWFwUHJvamVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2dlby1tYXAtcHJvamVjdGlvbi5zZXJ2aWNlJztcblxuY29uc3QgTEFZRVJfSURfS0VZID0gJ2dlb0xheWVySWQnO1xuY29uc3QgTEFZRVJfQkFTRU1BUF9LRVkgPSAnZ2VvQmFzZW1hcCc7XG5jb25zdCBMQVlFUl9HUk9VUF9LRVkgPSAnZ2VvR3JvdXAnO1xuY29uc3QgTEFZRVJfUVVFUllBQkxFX0tFWSA9ICdnZW9RdWVyeWFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZWRNYXBMYXllciB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbmZpZzogR2VvTWFwTGF5ZXJDb25maWc7XG4gIGxheWVyOiBCYXNlTGF5ZXI7XG59XG5cbi8qKlxuICogQnVpbGRzIGFuZCBpbmNyZW1lbnRhbGx5IHBhdGNoZXMgT3BlbkxheWVycyBsYXllcnMgZnJvbSB0eXBlZCBjb25maWdzLlxuICogVmlzaWJpbGl0eSAvIG9wYWNpdHkgdXBkYXRlcyBtdXN0IG5vdCByZWNyZWF0ZSBzb3VyY2VzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2VvTWFwTGF5ZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0aW9uID0gaW5qZWN0KEdlb01hcFByb2plY3Rpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBydW50aW1lID0gbmV3IE1hcDxzdHJpbmcsIEdlb01hcExheWVyUnVudGltZVN0YXRlPigpO1xuXG4gIGdldFJ1bnRpbWVTdGF0ZShsYXllcklkOiBzdHJpbmcpOiBHZW9NYXBMYXllclJ1bnRpbWVTdGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5nZXQobGF5ZXJJZCk7XG4gIH1cblxuICBnZXRBbGxSdW50aW1lU3RhdGVzKCk6IEdlb01hcExheWVyUnVudGltZVN0YXRlW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5ydW50aW1lLnZhbHVlcygpXTtcbiAgfVxuXG4gIGNyZWF0ZUZyb21CYXNlbWFwSW5wdXQoYmFzZW1hcDogR2VvTWFwQmFzZW1hcElucHV0KTogQ3JlYXRlZE1hcExheWVyIHtcbiAgICBpZiAoYmFzZW1hcCA9PT0gJ29zbScpIHtcbiAgICAgIGNvbnN0IGNvbmZpZzogR2VvTWFwT3NtTGF5ZXJDb25maWcgPSB7XG4gICAgICAgIGlkOiBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQsXG4gICAgICAgIHRpdGxlOiAnT3BlblN0cmVldE1hcCcsXG4gICAgICAgIHR5cGU6ICdvc20nLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB6SW5kZXg6IDAsXG4gICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgIGdyb3VwOiAnYmFzZS1tYXAnLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUxheWVyKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnOiBHZW9NYXBYeXpMYXllckNvbmZpZyA9IHtcbiAgICAgIGlkOiBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQsXG4gICAgICB0aXRsZTogYmFzZW1hcC50aXRsZSA/PyAnWFlaIGJhc2VtYXAnLFxuICAgICAgdHlwZTogJ3h5eicsXG4gICAgICB1cmw6IGJhc2VtYXAudXJsLFxuICAgICAgYXR0cmlidXRpb25zOiBiYXNlbWFwLmF0dHJpYnV0aW9ucyxcbiAgICAgIG1heFpvb206IGJhc2VtYXAubWF4Wm9vbSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICBvcGFjaXR5OiAxLFxuICAgICAgekluZGV4OiAwLFxuICAgICAgYmFzZW1hcDogdHJ1ZSxcbiAgICAgIGdyb3VwOiAnYmFzZS1tYXAnLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlTGF5ZXIoY29uZmlnKTtcbiAgfVxuXG4gIGNyZWF0ZUxheWVyKGNvbmZpZzogR2VvTWFwTGF5ZXJDb25maWcpOiBDcmVhdGVkTWFwTGF5ZXIge1xuICAgIHRoaXMucnVudGltZS5zZXQoY29uZmlnLmlkLCB7IGlkOiBjb25maWcuaWQsIHN0YXR1czogJ2xvYWRpbmcnIH0pO1xuXG4gICAgbGV0IGxheWVyOiBCYXNlTGF5ZXI7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKTtcbiAgICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnb3NtJzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlT3NtTGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlWHl6TGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd21zJzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlV21zTGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd210cyc6XG4gICAgICAgICAgbGF5ZXIgPSB0aGlzLmNyZWF0ZVdtdHNMYXllcihjb25maWcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnZW9qc29uJzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlR2VvSnNvbkxheWVyKGNvbmZpZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3ZlY3Rvcic6XG4gICAgICAgICAgbGF5ZXIgPSB0aGlzLmNyZWF0ZVZlY3RvckxheWVyKGNvbmZpZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBjb25maWc7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBsYXllciB0eXBlOiAke0pTT04uc3RyaW5naWZ5KF9leGhhdXN0aXZlKX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBseUNvbW1vbk9wdGlvbnMobGF5ZXIsIGNvbmZpZyk7XG4gICAgICB0aGlzLndpcmVTb3VyY2VTdGF0dXMoY29uZmlnLmlkLCBsYXllcik7XG4gICAgICB0aGlzLnJ1bnRpbWUuc2V0KGNvbmZpZy5pZCwgeyBpZDogY29uZmlnLmlkLCBzdGF0dXM6ICdyZWFkeScgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuICAgICAgY29uc29sZS5lcnJvcihgW0dlb01hcExheWVyU2VydmljZV0gRmFpbGVkIHRvIGNyZWF0ZSBsYXllciBcIiR7Y29uZmlnLmlkfVwiYCwgZXJyKTtcbiAgICAgIHRoaXMucnVudGltZS5zZXQoY29uZmlnLmlkLCB7XG4gICAgICAgIGlkOiBjb25maWcuaWQsXG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgfSk7XG4gICAgICAvLyBQbGFjZWhvbGRlciBpbnZpc2libGUgbGF5ZXIgc28gY2FsbGVycyBjYW4gc3RpbGwgdHJhY2sgaWRcbiAgICAgIGxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKCksXG4gICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFwcGx5Q29tbW9uT3B0aW9ucyhsYXllciwgeyAuLi5jb25maWcsIHZpc2libGU6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7IGlkOiBjb25maWcuaWQsIGNvbmZpZywgbGF5ZXIgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB2aXNpYmlsaXR5L29wYWNpdHkvekluZGV4IHdpdGhvdXQgcmVjcmVhdGluZyB0aGUgT0wgbGF5ZXIuXG4gICAqIFJldHVybnMgdHJ1ZSB3aGVuIHN0cnVjdHVyYWwgZmllbGRzIGNoYW5nZWQgYW5kIHRoZSBsYXllciBzaG91bGQgYmUgcmVjcmVhdGVkLlxuICAgKi9cbiAgbmVlZHNSZWNyZWF0ZShwcmV2aW91czogR2VvTWFwTGF5ZXJDb25maWcsIG5leHQ6IEdlb01hcExheWVyQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgaWYgKHByZXZpb3VzLnR5cGUgIT09IG5leHQudHlwZSB8fCBwcmV2aW91cy5pZCAhPT0gbmV4dC5pZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHN3aXRjaCAobmV4dC50eXBlKSB7XG4gICAgICBjYXNlICdvc20nOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICd4eXonOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChwcmV2aW91cyBhcyBHZW9NYXBYeXpMYXllckNvbmZpZykudXJsICE9PSBuZXh0LnVybCB8fFxuICAgICAgICAgIChwcmV2aW91cyBhcyBHZW9NYXBYeXpMYXllckNvbmZpZykubWF4Wm9vbSAhPT0gbmV4dC5tYXhab29tXG4gICAgICAgICk7XG4gICAgICBjYXNlICd3bXMnOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChwcmV2aW91cyBhcyBHZW9NYXBXbXNMYXllckNvbmZpZykudXJsICE9PSBuZXh0LnVybCB8fFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KChwcmV2aW91cyBhcyBHZW9NYXBXbXNMYXllckNvbmZpZykucGFyYW1zKSAhPT1cbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5leHQucGFyYW1zKSB8fFxuICAgICAgICAgIChwcmV2aW91cyBhcyBHZW9NYXBXbXNMYXllckNvbmZpZykubGF5ZXJOYW1lICE9PSBuZXh0LmxheWVyTmFtZVxuICAgICAgICApO1xuICAgICAgY2FzZSAnd210cyc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFdtdHNMYXllckNvbmZpZykudXJsICE9PSBuZXh0LnVybCB8fFxuICAgICAgICAgIChwcmV2aW91cyBhcyBHZW9NYXBXbXRzTGF5ZXJDb25maWcpLmxheWVyICE9PSBuZXh0LmxheWVyIHx8XG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFdtdHNMYXllckNvbmZpZykubWF0cml4U2V0ICE9PSBuZXh0Lm1hdHJpeFNldFxuICAgICAgICApO1xuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoKHByZXZpb3VzIGFzIEdlb01hcEdlb0pzb25MYXllckNvbmZpZykuZGF0YSkgIT09XG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShuZXh0LmRhdGEpIHx8XG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcEdlb0pzb25MYXllckNvbmZpZykuZGF0YVByb2plY3Rpb24gIT09IG5leHQuZGF0YVByb2plY3Rpb25cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ3ZlY3Rvcic6XG4gICAgICAgIHJldHVybiAocHJldmlvdXMgYXMgR2VvTWFwVmVjdG9yTGF5ZXJDb25maWcpLmZlYXR1cmVzICE9PSBuZXh0LmZlYXR1cmVzO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcGF0Y2hMYXllcihsYXllcjogQmFzZUxheWVyLCBjb25maWc6IEdlb01hcExheWVyQ29uZmlnKTogdm9pZCB7XG4gICAgbGF5ZXIuc2V0VmlzaWJsZShjb25maWcudmlzaWJsZSA/PyB0cnVlKTtcbiAgICBsYXllci5zZXRPcGFjaXR5KGNvbmZpZy5vcGFjaXR5ID8/IDEpO1xuICAgIGlmIChjb25maWcuekluZGV4ICE9IG51bGwpIHtcbiAgICAgIGxheWVyLnNldFpJbmRleChjb25maWcuekluZGV4KTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5taW5ab29tICE9IG51bGwpIHtcbiAgICAgIGxheWVyLnNldE1pblpvb20oY29uZmlnLm1pblpvb20pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm1heFpvb20gIT0gbnVsbCkge1xuICAgICAgbGF5ZXIuc2V0TWF4Wm9vbShjb25maWcubWF4Wm9vbSk7XG4gICAgfVxuICAgIGxheWVyLnNldChMQVlFUl9CQVNFTUFQX0tFWSwgISFjb25maWcuYmFzZW1hcCk7XG4gICAgbGF5ZXIuc2V0KExBWUVSX0dST1VQX0tFWSwgY29uZmlnLmdyb3VwID8/ICcnKTtcbiAgICBsYXllci5zZXQoTEFZRVJfUVVFUllBQkxFX0tFWSwgISFjb25maWcucXVlcnlhYmxlKTtcbiAgfVxuXG4gIHNldFZpc2libGUobGF5ZXI6IEJhc2VMYXllciwgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGxheWVyLnNldFZpc2libGUodmlzaWJsZSk7XG4gIH1cblxuICBzZXRPcGFjaXR5KGxheWVyOiBCYXNlTGF5ZXIsIG9wYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBvcGFjaXR5KSk7XG4gICAgbGF5ZXIuc2V0T3BhY2l0eShjbGFtcGVkKTtcbiAgfVxuXG4gIGdldExheWVySWQobGF5ZXI6IEJhc2VMYXllcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaWQgPSBsYXllci5nZXQoTEFZRVJfSURfS0VZKTtcbiAgICByZXR1cm4gdHlwZW9mIGlkID09PSAnc3RyaW5nJyA/IGlkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNCYXNlbWFwKGxheWVyOiBCYXNlTGF5ZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFsYXllci5nZXQoTEFZRVJfQkFTRU1BUF9LRVkpO1xuICB9XG5cbiAgcmVzb2x2ZUJhc2VtYXBFeGNsdXNpdmUoXG4gICAgbGF5ZXJzOiBDcmVhdGVkTWFwTGF5ZXJbXSxcbiAgICBhY3RpdmVCYXNlbWFwSWQ6IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxheWVycykge1xuICAgICAgaWYgKCFpdGVtLmNvbmZpZy5iYXNlbWFwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmlzaWJsZSA9IGl0ZW0uaWQgPT09IGFjdGl2ZUJhc2VtYXBJZDtcbiAgICAgIGl0ZW0ubGF5ZXIuc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgIGl0ZW0uY29uZmlnID0geyAuLi5pdGVtLmNvbmZpZywgdmlzaWJsZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDb25maWcoY29uZmlnOiBHZW9NYXBMYXllckNvbmZpZyk6IHZvaWQge1xuICAgIGlmICghY29uZmlnLmlkPy50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGF5ZXIgY29uZmlnIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGlkLicpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnR5cGUgPT09ICd4eXonICYmICFjb25maWcudXJsPy50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWFlaIGxheWVyIFwiJHtjb25maWcuaWR9XCIgaXMgbWlzc2luZyB1cmwuYCk7XG4gICAgfVxuICAgIGlmIChjb25maWcudHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIGlmICghY29uZmlnLnVybD8udHJpbSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgV01TIGxheWVyIFwiJHtjb25maWcuaWR9XCIgaXMgbWlzc2luZyB1cmwuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsYXllcnNQYXJhbSA9XG4gICAgICAgIGNvbmZpZy5sYXllck5hbWUgPz9cbiAgICAgICAgKGNvbmZpZy5wYXJhbXNbJ0xBWUVSUyddICE9IG51bGwgPyBTdHJpbmcoY29uZmlnLnBhcmFtc1snTEFZRVJTJ10pIDogJycpO1xuICAgICAgaWYgKCFsYXllcnNQYXJhbSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFdNUyBsYXllciBcIiR7Y29uZmlnLmlkfVwiIG5lZWRzIGxheWVyTmFtZSBvciBwYXJhbXMuTEFZRVJTLmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcudHlwZSA9PT0gJ3dtdHMnKSB7XG4gICAgICBpZiAoIWNvbmZpZy51cmw/LnRyaW0oKSB8fCAhY29uZmlnLmxheWVyPy50cmltKCkgfHwgIWNvbmZpZy5tYXRyaXhTZXQ/LnRyaW0oKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFdNVFMgbGF5ZXIgXCIke2NvbmZpZy5pZH1cIiByZXF1aXJlcyB1cmwsIGxheWVyLCBhbmQgbWF0cml4U2V0LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcudHlwZSA9PT0gJ2dlb2pzb24nICYmIGNvbmZpZy5kYXRhID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR2VvSlNPTiBsYXllciBcIiR7Y29uZmlnLmlkfVwiIGlzIG1pc3NpbmcgZGF0YS5gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29tbW9uT3B0aW9ucyhsYXllcjogQmFzZUxheWVyLCBjb25maWc6IEdlb01hcExheWVyQ29uZmlnKTogdm9pZCB7XG4gICAgbGF5ZXIuc2V0KExBWUVSX0lEX0tFWSwgY29uZmlnLmlkKTtcbiAgICBsYXllci5zZXQoTEFZRVJfQkFTRU1BUF9LRVksICEhY29uZmlnLmJhc2VtYXApO1xuICAgIGxheWVyLnNldChMQVlFUl9HUk9VUF9LRVksIGNvbmZpZy5ncm91cCA/PyAnJyk7XG4gICAgbGF5ZXIuc2V0KExBWUVSX1FVRVJZQUJMRV9LRVksICEhY29uZmlnLnF1ZXJ5YWJsZSk7XG4gICAgbGF5ZXIuc2V0VmlzaWJsZShjb25maWcudmlzaWJsZSA/PyB0cnVlKTtcbiAgICBsYXllci5zZXRPcGFjaXR5KGNvbmZpZy5vcGFjaXR5ID8/IDEpO1xuICAgIGlmIChjb25maWcuekluZGV4ICE9IG51bGwpIHtcbiAgICAgIGxheWVyLnNldFpJbmRleChjb25maWcuekluZGV4KTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5taW5ab29tICE9IG51bGwpIHtcbiAgICAgIGxheWVyLnNldE1pblpvb20oY29uZmlnLm1pblpvb20pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm1heFpvb20gIT0gbnVsbCkge1xuICAgICAgbGF5ZXIuc2V0TWF4Wm9vbShjb25maWcubWF4Wm9vbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3aXJlU291cmNlU3RhdHVzKGxheWVySWQ6IHN0cmluZywgbGF5ZXI6IEJhc2VMYXllcik6IHZvaWQge1xuICAgIGlmICghKGxheWVyIGluc3RhbmNlb2YgVGlsZUxheWVyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3VyY2UgPSBsYXllci5nZXRTb3VyY2UoKTtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNvdXJjZS5vbigndGlsZWxvYWRlcnJvcicsICgpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybihgW0dlb01hcExheWVyU2VydmljZV0gVGlsZSBlcnJvciBvbiBsYXllciBcIiR7bGF5ZXJJZH1cImApO1xuICAgICAgdGhpcy5ydW50aW1lLnNldChsYXllcklkLCB7XG4gICAgICAgIGlkOiBsYXllcklkLFxuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0tow7RuZyB04bqjaSDEkcaw4bujYyBk4buvIGxp4buHdSBs4bubcCBi4bqjbiDEkeG7ky4nLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzb3VyY2Uub24oJ3RpbGVsb2FkZW5kJywgKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMucnVudGltZS5nZXQobGF5ZXJJZCk7XG4gICAgICBpZiAoY3VycmVudD8uc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucnVudGltZS5zZXQobGF5ZXJJZCwgeyBpZDogbGF5ZXJJZCwgc3RhdHVzOiAncmVhZHknIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPc21MYXllcihfY29uZmlnOiBHZW9NYXBPc21MYXllckNvbmZpZyk6IFRpbGVMYXllcjxPU00+IHtcbiAgICByZXR1cm4gbmV3IFRpbGVMYXllcih7XG4gICAgICBzb3VyY2U6IG5ldyBPU00oKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlWHl6TGF5ZXIoY29uZmlnOiBHZW9NYXBYeXpMYXllckNvbmZpZyk6IFRpbGVMYXllcjxYWVo+IHtcbiAgICByZXR1cm4gbmV3IFRpbGVMYXllcih7XG4gICAgICBzb3VyY2U6IG5ldyBYWVooe1xuICAgICAgICB1cmw6IGNvbmZpZy51cmwsXG4gICAgICAgIGF0dHJpYnV0aW9uczogY29uZmlnLmF0dHJpYnV0aW9ucyxcbiAgICAgICAgbWF4Wm9vbTogY29uZmlnLm1heFpvb20sXG4gICAgICAgIGNyb3NzT3JpZ2luOiBjb25maWcuY3Jvc3NPcmlnaW4gPz8gJ2Fub255bW91cycsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV21zTGF5ZXIoY29uZmlnOiBHZW9NYXBXbXNMYXllckNvbmZpZyk6IFRpbGVMYXllcjxUaWxlV01TPiB7XG4gICAgY29uc3QgbGF5ZXJzID1cbiAgICAgIGNvbmZpZy5sYXllck5hbWUgPz9cbiAgICAgIChjb25maWcucGFyYW1zWydMQVlFUlMnXSAhPSBudWxsID8gU3RyaW5nKGNvbmZpZy5wYXJhbXNbJ0xBWUVSUyddKSA6ICcnKTtcbiAgICBjb25zdCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+ID0ge1xuICAgICAgLi4uY29uZmlnLnBhcmFtcyxcbiAgICAgIExBWUVSUzogbGF5ZXJzLFxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgc291cmNlOiBuZXcgVGlsZVdNUyh7XG4gICAgICAgIHVybDogY29uZmlnLnVybCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBzZXJ2ZXJUeXBlOiBjb25maWcuc2VydmVyVHlwZSxcbiAgICAgICAgY3Jvc3NPcmlnaW46IGNvbmZpZy5jcm9zc09yaWdpbiA/PyAnYW5vbnltb3VzJyxcbiAgICAgICAgcHJvamVjdGlvbjogY29uZmlnLnByb2plY3Rpb24gYXMgUHJvamVjdGlvbkxpa2UgfCB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV210c0xheWVyKGNvbmZpZzogR2VvTWFwV210c0xheWVyQ29uZmlnKTogVGlsZUxheWVyPFdNVFM+IHtcbiAgICBjb25zdCBwcm9qZWN0aW9uQ29kZSA9IGNvbmZpZy5wcm9qZWN0aW9uID8/ICdFUFNHOjM4NTcnO1xuICAgIHRoaXMucHJvamVjdGlvbi5lbnN1cmVSZWdpc3RlcmVkKHByb2plY3Rpb25Db2RlKTtcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gZ2V0UHJvamVjdGlvbihwcm9qZWN0aW9uQ29kZSk7XG4gICAgaWYgKCFwcm9qZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdNVFMgcHJvamVjdGlvbiBcIiR7cHJvamVjdGlvbkNvZGV9XCIgaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICB9XG4gICAgY29uc3QgcHJvamVjdGlvbkV4dGVudCA9IHByb2plY3Rpb24uZ2V0RXh0ZW50KCk7XG4gICAgaWYgKCFwcm9qZWN0aW9uRXh0ZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBXTVRTIHByb2plY3Rpb24gXCIke3Byb2plY3Rpb25Db2RlfVwiIGhhcyBubyBleHRlbnQ7IHByb3ZpZGUgYSBjdXN0b20gdGlsZSBncmlkIGluIGEgbGF0ZXIgcGhhc2UuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHNpemUgPSBnZXRXaWR0aChwcm9qZWN0aW9uRXh0ZW50KSAvIDI1NjtcbiAgICBjb25zdCByZXNvbHV0aW9uczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBtYXRyaXhJZHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgeiA9IDA7IHogPCAyMDsgeiArPSAxKSB7XG4gICAgICByZXNvbHV0aW9uc1t6XSA9IHNpemUgLyBNYXRoLnBvdygyLCB6KTtcbiAgICAgIG1hdHJpeElkc1t6XSA9IFN0cmluZyh6KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFRpbGVMYXllcih7XG4gICAgICBzb3VyY2U6IG5ldyBXTVRTKHtcbiAgICAgICAgdXJsOiBjb25maWcudXJsLFxuICAgICAgICBsYXllcjogY29uZmlnLmxheWVyLFxuICAgICAgICBtYXRyaXhTZXQ6IGNvbmZpZy5tYXRyaXhTZXQsXG4gICAgICAgIGZvcm1hdDogY29uZmlnLmZvcm1hdCA/PyAnaW1hZ2UvcG5nJyxcbiAgICAgICAgc3R5bGU6IGNvbmZpZy5zdHlsZSA/PyAnJyxcbiAgICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbkNvZGUsXG4gICAgICAgIGNyb3NzT3JpZ2luOiBjb25maWcuY3Jvc3NPcmlnaW4gPz8gJ2Fub255bW91cycsXG4gICAgICAgIHRpbGVHcmlkOiBuZXcgV01UU1RpbGVHcmlkKHtcbiAgICAgICAgICBvcmlnaW46IGdldFRvcExlZnQocHJvamVjdGlvbkV4dGVudCksXG4gICAgICAgICAgcmVzb2x1dGlvbnMsXG4gICAgICAgICAgbWF0cml4SWRzLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVHZW9Kc29uTGF5ZXIoY29uZmlnOiBHZW9NYXBHZW9Kc29uTGF5ZXJDb25maWcpOiBWZWN0b3JMYXllcjxWZWN0b3JTb3VyY2U+IHtcbiAgICBjb25zdCBmb3JtYXQgPSBuZXcgR2VvSlNPTigpO1xuICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBWZWN0b3JTb3VyY2UoKTtcbiAgICBjb25zdCBmZWF0dXJlUHJvamVjdGlvbiA9IGNvbmZpZy5mZWF0dXJlUHJvamVjdGlvbiA/PyAnRVBTRzozODU3JztcbiAgICBjb25zdCBkYXRhUHJvamVjdGlvbiA9IGNvbmZpZy5kYXRhUHJvamVjdGlvbiA/PyAnRVBTRzo0MzI2JztcblxuICAgIGlmICh0eXBlb2YgY29uZmlnLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBVUkwg4oCUIGxldCBWZWN0b3JTb3VyY2UgbG9hZCBhc3luY2hyb25vdXNseVxuICAgICAgY29uc3QgdXJsU291cmNlID0gbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgIHVybDogY29uZmlnLmRhdGEsXG4gICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oe1xuICAgICAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgdXJsU291cmNlLm9uKCdmZWF0dXJlc2xvYWRlcnJvcicsICgpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW0dlb01hcExheWVyU2VydmljZV0gR2VvSlNPTiBsb2FkIGVycm9yIFwiJHtjb25maWcuaWR9XCJgKTtcbiAgICAgICAgdGhpcy5ydW50aW1lLnNldChjb25maWcuaWQsIHtcbiAgICAgICAgICBpZDogY29uZmlnLmlkLFxuICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6ICdLaMO0bmcgdOG6o2kgxJHGsOG7o2MgR2VvSlNPTi4nLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7IHNvdXJjZTogdXJsU291cmNlIH0pO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IGZvcm1hdC5yZWFkRmVhdHVyZXMoY29uZmlnLmRhdGEsIHtcbiAgICAgICAgZGF0YVByb2plY3Rpb24sXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uLFxuICAgICAgfSkgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXTtcbiAgICAgIHNvdXJjZS5hZGRGZWF0dXJlcyhmZWF0dXJlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbR2VvTWFwTGF5ZXJTZXJ2aWNlXSBJbnZhbGlkIEdlb0pTT04gZm9yIFwiJHtjb25maWcuaWR9XCJgLCBlcnIpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZW9KU09OIGtow7RuZyBo4bujcCBs4buHIGNobyBs4bubcCBcIiR7Y29uZmlnLmlkfVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoeyBzb3VyY2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZlY3RvckxheWVyKGNvbmZpZzogR2VvTWFwVmVjdG9yTGF5ZXJDb25maWcpOiBWZWN0b3JMYXllcjxWZWN0b3JTb3VyY2U+IHtcbiAgICBjb25zdCBzb3VyY2UgPSBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgIGZlYXR1cmVzOiBjb25maWcuZmVhdHVyZXMgPz8gW10sXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7IHNvdXJjZSB9KTtcbiAgfVxufVxuIl19
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1sYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9zZXJ2aWNlcy9nZW8tbWFwLWxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFHeEMsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFFaEMsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBYWhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUV2RSxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUM7QUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcs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aEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsTUFBTSxDQUFDLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFVBQW9CLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN6RixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0RBQWtELE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO2dCQUMxQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2IsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsWUFBWSxFQUFFLGlDQUFpQzthQUNoRCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FqYlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IHR5cGUgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgdHlwZSBCYXNlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvQmFzZSc7XG5pbXBvcnQgTGF5ZXJHcm91cCBmcm9tICdvbC9sYXllci9Hcm91cCc7XG5pbXBvcnQgVGlsZUxheWVyIGZyb20gJ29sL2xheWVyL1RpbGUnO1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgT1NNIGZyb20gJ29sL3NvdXJjZS9PU00nO1xuaW1wb3J0IFRpbGVXTVMgZnJvbSAnb2wvc291cmNlL1RpbGVXTVMnO1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCBYWVogZnJvbSAnb2wvc291cmNlL1hZWic7XG5pbXBvcnQgdHlwZSB7IFByb2plY3Rpb25MaWtlIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgV01UUyBmcm9tICdvbC9zb3VyY2UvV01UUyc7XG5pbXBvcnQgV01UU1RpbGVHcmlkIGZyb20gJ29sL3RpbGVncmlkL1dNVFMnO1xuaW1wb3J0IHsgZ2V0IGFzIGdldFByb2plY3Rpb24gfSBmcm9tICdvbC9wcm9qJztcbmltcG9ydCB7IGdldFRvcExlZnQsIGdldFdpZHRoIH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCB7IGFwcGx5IGFzIGFwcGx5TWFwYm94U3R5bGUgfSBmcm9tICdvbC1tYXBib3gtc3R5bGUnO1xuaW1wb3J0IHsgR0VPX01BUF9CQVNFTUFQX0xBWUVSX0lEIH0gZnJvbSAnLi4vZ2VvLW1hcC5jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1xuICBHZW9NYXBCYXNlbWFwSW5wdXQsXG4gIEdlb01hcEdlb0pzb25MYXllckNvbmZpZyxcbiAgR2VvTWFwTGF5ZXJDb25maWcsXG4gIEdlb01hcExheWVyUnVudGltZVN0YXRlLFxuICBHZW9NYXBNYXBib3hTdHlsZUxheWVyQ29uZmlnLFxuICBHZW9NYXBPc21MYXllckNvbmZpZyxcbiAgR2VvTWFwVmVjdG9yTGF5ZXJDb25maWcsXG4gIEdlb01hcFdtc0xheWVyQ29uZmlnLFxuICBHZW9NYXBXbXRzTGF5ZXJDb25maWcsXG4gIEdlb01hcFh5ekxheWVyQ29uZmlnLFxufSBmcm9tICcuLi9nZW8tbWFwLnR5cGVzJztcbmltcG9ydCB7IEdlb01hcFByb2plY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9nZW8tbWFwLXByb2plY3Rpb24uc2VydmljZSc7XG5cbmNvbnN0IExBWUVSX0lEX0tFWSA9ICdnZW9MYXllcklkJztcbmNvbnN0IExBWUVSX0JBU0VNQVBfS0VZID0gJ2dlb0Jhc2VtYXAnO1xuY29uc3QgTEFZRVJfR1JPVVBfS0VZID0gJ2dlb0dyb3VwJztcbmNvbnN0IExBWUVSX1FVRVJZQUJMRV9LRVkgPSAnZ2VvUXVlcnlhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVkTWFwTGF5ZXIge1xuICBpZDogc3RyaW5nO1xuICBjb25maWc6IEdlb01hcExheWVyQ29uZmlnO1xuICBsYXllcjogQmFzZUxheWVyO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbmQgaW5jcmVtZW50YWxseSBwYXRjaGVzIE9wZW5MYXllcnMgbGF5ZXJzIGZyb20gdHlwZWQgY29uZmlncy5cbiAqIFZpc2liaWxpdHkgLyBvcGFjaXR5IHVwZGF0ZXMgbXVzdCBub3QgcmVjcmVhdGUgc291cmNlcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdlb01hcExheWVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdGlvbiA9IGluamVjdChHZW9NYXBQcm9qZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZSA9IG5ldyBNYXA8c3RyaW5nLCBHZW9NYXBMYXllclJ1bnRpbWVTdGF0ZT4oKTtcblxuICBnZXRSdW50aW1lU3RhdGUobGF5ZXJJZDogc3RyaW5nKTogR2VvTWFwTGF5ZXJSdW50aW1lU3RhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUuZ2V0KGxheWVySWQpO1xuICB9XG5cbiAgZ2V0QWxsUnVudGltZVN0YXRlcygpOiBHZW9NYXBMYXllclJ1bnRpbWVTdGF0ZVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMucnVudGltZS52YWx1ZXMoKV07XG4gIH1cblxuICBjcmVhdGVGcm9tQmFzZW1hcElucHV0KGJhc2VtYXA6IEdlb01hcEJhc2VtYXBJbnB1dCk6IENyZWF0ZWRNYXBMYXllciB7XG4gICAgaWYgKGJhc2VtYXAgPT09ICdvc20nKSB7XG4gICAgICBjb25zdCBjb25maWc6IEdlb01hcE9zbUxheWVyQ29uZmlnID0ge1xuICAgICAgICBpZDogR0VPX01BUF9CQVNFTUFQX0xBWUVSX0lELFxuICAgICAgICB0aXRsZTogJ09wZW5TdHJlZXRNYXAnLFxuICAgICAgICB0eXBlOiAnb3NtJyxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgekluZGV4OiAwLFxuICAgICAgICBiYXNlbWFwOiB0cnVlLFxuICAgICAgICBncm91cDogJ2Jhc2UtbWFwJyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYXllcihjb25maWcpO1xuICAgIH1cblxuICAgIGlmIChiYXNlbWFwLnR5cGUgPT09ICdtYXBib3gtc3R5bGUnKSB7XG4gICAgICBjb25zdCBjb25maWc6IEdlb01hcE1hcGJveFN0eWxlTGF5ZXJDb25maWcgPSB7XG4gICAgICAgIGlkOiBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQsXG4gICAgICAgIHRpdGxlOiBiYXNlbWFwLnRpdGxlID8/ICdNYXBib3ggc3R5bGUgYmFzZW1hcCcsXG4gICAgICAgIHR5cGU6ICdtYXBib3gtc3R5bGUnLFxuICAgICAgICBzdHlsZUpzb246IGJhc2VtYXAuc3R5bGVKc29uLFxuICAgICAgICBzdHlsZVVybDogYmFzZW1hcC5zdHlsZVVybCxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdDogYmFzZW1hcC50cmFuc2Zvcm1SZXF1ZXN0LFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB6SW5kZXg6IDAsXG4gICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgIGdyb3VwOiAnYmFzZS1tYXAnLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUxheWVyKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnOiBHZW9NYXBYeXpMYXllckNvbmZpZyA9IHtcbiAgICAgIGlkOiBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQsXG4gICAgICB0aXRsZTogYmFzZW1hcC50aXRsZSA/PyAnWFlaIGJhc2VtYXAnLFxuICAgICAgdHlwZTogJ3h5eicsXG4gICAgICB1cmw6IGJhc2VtYXAudXJsLFxuICAgICAgYXR0cmlidXRpb25zOiBiYXNlbWFwLmF0dHJpYnV0aW9ucyxcbiAgICAgIG1heFpvb206IGJhc2VtYXAubWF4Wm9vbSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICBvcGFjaXR5OiAxLFxuICAgICAgekluZGV4OiAwLFxuICAgICAgYmFzZW1hcDogdHJ1ZSxcbiAgICAgIGdyb3VwOiAnYmFzZS1tYXAnLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlTGF5ZXIoY29uZmlnKTtcbiAgfVxuXG4gIGNyZWF0ZUxheWVyKGNvbmZpZzogR2VvTWFwTGF5ZXJDb25maWcpOiBDcmVhdGVkTWFwTGF5ZXIge1xuICAgIHRoaXMucnVudGltZS5zZXQoY29uZmlnLmlkLCB7IGlkOiBjb25maWcuaWQsIHN0YXR1czogJ2xvYWRpbmcnIH0pO1xuXG4gICAgbGV0IGxheWVyOiBCYXNlTGF5ZXI7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKTtcbiAgICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnb3NtJzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlT3NtTGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlWHl6TGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd21zJzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlV21zTGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd210cyc6XG4gICAgICAgICAgbGF5ZXIgPSB0aGlzLmNyZWF0ZVdtdHNMYXllcihjb25maWcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnZW9qc29uJzpcbiAgICAgICAgICBsYXllciA9IHRoaXMuY3JlYXRlR2VvSnNvbkxheWVyKGNvbmZpZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3ZlY3Rvcic6XG4gICAgICAgICAgbGF5ZXIgPSB0aGlzLmNyZWF0ZVZlY3RvckxheWVyKGNvbmZpZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21hcGJveC1zdHlsZSc6XG4gICAgICAgICAgbGF5ZXIgPSB0aGlzLmNyZWF0ZU1hcGJveFN0eWxlTGF5ZXIoY29uZmlnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IGNvbmZpZztcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGxheWVyIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoX2V4aGF1c3RpdmUpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmFwcGx5Q29tbW9uT3B0aW9ucyhsYXllciwgY29uZmlnKTtcbiAgICAgIHRoaXMud2lyZVNvdXJjZVN0YXR1cyhjb25maWcuaWQsIGxheWVyKTtcbiAgICAgIHRoaXMucnVudGltZS5zZXQoY29uZmlnLmlkLCB7IGlkOiBjb25maWcuaWQsIHN0YXR1czogJ3JlYWR5JyB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG4gICAgICBjb25zb2xlLmVycm9yKGBbR2VvTWFwTGF5ZXJTZXJ2aWNlXSBGYWlsZWQgdG8gY3JlYXRlIGxheWVyIFwiJHtjb25maWcuaWR9XCJgLCBlcnIpO1xuICAgICAgdGhpcy5ydW50aW1lLnNldChjb25maWcuaWQsIHtcbiAgICAgICAgaWQ6IGNvbmZpZy5pZCxcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICAgIC8vIFBsYWNlaG9sZGVyIGludmlzaWJsZSBsYXllciBzbyBjYWxsZXJzIGNhbiBzdGlsbCB0cmFjayBpZFxuICAgICAgbGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2UoKSxcbiAgICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXBwbHlDb21tb25PcHRpb25zKGxheWVyLCB7IC4uLmNvbmZpZywgdmlzaWJsZTogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgaWQ6IGNvbmZpZy5pZCwgY29uZmlnLCBsYXllciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHZpc2liaWxpdHkvb3BhY2l0eS96SW5kZXggd2l0aG91dCByZWNyZWF0aW5nIHRoZSBPTCBsYXllci5cbiAgICogUmV0dXJucyB0cnVlIHdoZW4gc3RydWN0dXJhbCBmaWVsZHMgY2hhbmdlZCBhbmQgdGhlIGxheWVyIHNob3VsZCBiZSByZWNyZWF0ZWQuXG4gICAqL1xuICBuZWVkc1JlY3JlYXRlKHByZXZpb3VzOiBHZW9NYXBMYXllckNvbmZpZywgbmV4dDogR2VvTWFwTGF5ZXJDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAocHJldmlvdXMudHlwZSAhPT0gbmV4dC50eXBlIHx8IHByZXZpb3VzLmlkICE9PSBuZXh0LmlkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgc3dpdGNoIChuZXh0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ29zbSc6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ3h5eic6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFh5ekxheWVyQ29uZmlnKS51cmwgIT09IG5leHQudXJsIHx8XG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFh5ekxheWVyQ29uZmlnKS5tYXhab29tICE9PSBuZXh0Lm1heFpvb21cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFdtc0xheWVyQ29uZmlnKS51cmwgIT09IG5leHQudXJsIHx8XG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoKHByZXZpb3VzIGFzIEdlb01hcFdtc0xheWVyQ29uZmlnKS5wYXJhbXMpICE9PVxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobmV4dC5wYXJhbXMpIHx8XG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFdtc0xheWVyQ29uZmlnKS5sYXllck5hbWUgIT09IG5leHQubGF5ZXJOYW1lXG4gICAgICAgICk7XG4gICAgICBjYXNlICd3bXRzJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAocHJldmlvdXMgYXMgR2VvTWFwV210c0xheWVyQ29uZmlnKS51cmwgIT09IG5leHQudXJsIHx8XG4gICAgICAgICAgKHByZXZpb3VzIGFzIEdlb01hcFdtdHNMYXllckNvbmZpZykubGF5ZXIgIT09IG5leHQubGF5ZXIgfHxcbiAgICAgICAgICAocHJldmlvdXMgYXMgR2VvTWFwV210c0xheWVyQ29uZmlnKS5tYXRyaXhTZXQgIT09IG5leHQubWF0cml4U2V0XG4gICAgICAgICk7XG4gICAgICBjYXNlICdnZW9qc29uJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSgocHJldmlvdXMgYXMgR2VvTWFwR2VvSnNvbkxheWVyQ29uZmlnKS5kYXRhKSAhPT1cbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5leHQuZGF0YSkgfHxcbiAgICAgICAgICAocHJldmlvdXMgYXMgR2VvTWFwR2VvSnNvbkxheWVyQ29uZmlnKS5kYXRhUHJvamVjdGlvbiAhPT0gbmV4dC5kYXRhUHJvamVjdGlvblxuICAgICAgICApO1xuICAgICAgY2FzZSAndmVjdG9yJzpcbiAgICAgICAgcmV0dXJuIChwcmV2aW91cyBhcyBHZW9NYXBWZWN0b3JMYXllckNvbmZpZykuZmVhdHVyZXMgIT09IG5leHQuZmVhdHVyZXM7XG4gICAgICBjYXNlICdtYXBib3gtc3R5bGUnOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChwcmV2aW91cyBhcyBHZW9NYXBNYXBib3hTdHlsZUxheWVyQ29uZmlnKS5zdHlsZVVybCAhPT0gbmV4dC5zdHlsZVVybCB8fFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KChwcmV2aW91cyBhcyBHZW9NYXBNYXBib3hTdHlsZUxheWVyQ29uZmlnKS5zdHlsZUpzb24pICE9PVxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobmV4dC5zdHlsZUpzb24pXG4gICAgICAgICk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwYXRjaExheWVyKGxheWVyOiBCYXNlTGF5ZXIsIGNvbmZpZzogR2VvTWFwTGF5ZXJDb25maWcpOiB2b2lkIHtcbiAgICBsYXllci5zZXRWaXNpYmxlKGNvbmZpZy52aXNpYmxlID8/IHRydWUpO1xuICAgIGxheWVyLnNldE9wYWNpdHkoY29uZmlnLm9wYWNpdHkgPz8gMSk7XG4gICAgaWYgKGNvbmZpZy56SW5kZXggIT0gbnVsbCkge1xuICAgICAgbGF5ZXIuc2V0WkluZGV4KGNvbmZpZy56SW5kZXgpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm1pblpvb20gIT0gbnVsbCkge1xuICAgICAgbGF5ZXIuc2V0TWluWm9vbShjb25maWcubWluWm9vbSk7XG4gICAgfVxuICAgIGlmIChjb25maWcubWF4Wm9vbSAhPSBudWxsKSB7XG4gICAgICBsYXllci5zZXRNYXhab29tKGNvbmZpZy5tYXhab29tKTtcbiAgICB9XG4gICAgbGF5ZXIuc2V0KExBWUVSX0JBU0VNQVBfS0VZLCAhIWNvbmZpZy5iYXNlbWFwKTtcbiAgICBsYXllci5zZXQoTEFZRVJfR1JPVVBfS0VZLCBjb25maWcuZ3JvdXAgPz8gJycpO1xuICAgIGxheWVyLnNldChMQVlFUl9RVUVSWUFCTEVfS0VZLCAhIWNvbmZpZy5xdWVyeWFibGUpO1xuICB9XG5cbiAgc2V0VmlzaWJsZShsYXllcjogQmFzZUxheWVyLCB2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgbGF5ZXIuc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgfVxuXG4gIHNldE9wYWNpdHkobGF5ZXI6IEJhc2VMYXllciwgb3BhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIG9wYWNpdHkpKTtcbiAgICBsYXllci5zZXRPcGFjaXR5KGNsYW1wZWQpO1xuICB9XG5cbiAgZ2V0TGF5ZXJJZChsYXllcjogQmFzZUxheWVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpZCA9IGxheWVyLmdldChMQVlFUl9JRF9LRVkpO1xuICAgIHJldHVybiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnID8gaWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpc0Jhc2VtYXAobGF5ZXI6IEJhc2VMYXllcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWxheWVyLmdldChMQVlFUl9CQVNFTUFQX0tFWSk7XG4gIH1cblxuICByZXNvbHZlQmFzZW1hcEV4Y2x1c2l2ZShcbiAgICBsYXllcnM6IENyZWF0ZWRNYXBMYXllcltdLFxuICAgIGFjdGl2ZUJhc2VtYXBJZDogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGF5ZXJzKSB7XG4gICAgICBpZiAoIWl0ZW0uY29uZmlnLmJhc2VtYXApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB2aXNpYmxlID0gaXRlbS5pZCA9PT0gYWN0aXZlQmFzZW1hcElkO1xuICAgICAgaXRlbS5sYXllci5zZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgaXRlbS5jb25maWcgPSB7IC4uLml0ZW0uY29uZmlnLCB2aXNpYmxlIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IEdlb01hcExheWVyQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKCFjb25maWcuaWQ/LnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMYXllciBjb25maWcgcmVxdWlyZXMgYSBub24tZW1wdHkgaWQuJyk7XG4gICAgfVxuICAgIGlmIChjb25maWcudHlwZSA9PT0gJ3h5eicgJiYgIWNvbmZpZy51cmw/LnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBYWVogbGF5ZXIgXCIke2NvbmZpZy5pZH1cIiBpcyBtaXNzaW5nIHVybC5gKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50eXBlID09PSAnd21zJykge1xuICAgICAgaWYgKCFjb25maWcudXJsPy50cmltKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXTVMgbGF5ZXIgXCIke2NvbmZpZy5pZH1cIiBpcyBtaXNzaW5nIHVybC5gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVyc1BhcmFtID1cbiAgICAgICAgY29uZmlnLmxheWVyTmFtZSA/P1xuICAgICAgICAoY29uZmlnLnBhcmFtc1snTEFZRVJTJ10gIT0gbnVsbCA/IFN0cmluZyhjb25maWcucGFyYW1zWydMQVlFUlMnXSkgOiAnJyk7XG4gICAgICBpZiAoIWxheWVyc1BhcmFtKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgV01TIGxheWVyIFwiJHtjb25maWcuaWR9XCIgbmVlZHMgbGF5ZXJOYW1lIG9yIHBhcmFtcy5MQVlFUlMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy50eXBlID09PSAnd210cycpIHtcbiAgICAgIGlmICghY29uZmlnLnVybD8udHJpbSgpIHx8ICFjb25maWcubGF5ZXI/LnRyaW0oKSB8fCAhY29uZmlnLm1hdHJpeFNldD8udHJpbSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgV01UUyBsYXllciBcIiR7Y29uZmlnLmlkfVwiIHJlcXVpcmVzIHVybCwgbGF5ZXIsIGFuZCBtYXRyaXhTZXQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy50eXBlID09PSAnZ2VvanNvbicgJiYgY29uZmlnLmRhdGEgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZW9KU09OIGxheWVyIFwiJHtjb25maWcuaWR9XCIgaXMgbWlzc2luZyBkYXRhLmApO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnR5cGUgPT09ICdtYXBib3gtc3R5bGUnICYmICFjb25maWcuc3R5bGVKc29uICYmICFjb25maWcuc3R5bGVVcmw/LnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXBib3gtc3R5bGUgbGF5ZXIgXCIke2NvbmZpZy5pZH1cIiByZXF1aXJlcyBzdHlsZUpzb24gb3Igc3R5bGVVcmwuYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbW1vbk9wdGlvbnMobGF5ZXI6IEJhc2VMYXllciwgY29uZmlnOiBHZW9NYXBMYXllckNvbmZpZyk6IHZvaWQge1xuICAgIGxheWVyLnNldChMQVlFUl9JRF9LRVksIGNvbmZpZy5pZCk7XG4gICAgbGF5ZXIuc2V0KExBWUVSX0JBU0VNQVBfS0VZLCAhIWNvbmZpZy5iYXNlbWFwKTtcbiAgICBsYXllci5zZXQoTEFZRVJfR1JPVVBfS0VZLCBjb25maWcuZ3JvdXAgPz8gJycpO1xuICAgIGxheWVyLnNldChMQVlFUl9RVUVSWUFCTEVfS0VZLCAhIWNvbmZpZy5xdWVyeWFibGUpO1xuICAgIGxheWVyLnNldFZpc2libGUoY29uZmlnLnZpc2libGUgPz8gdHJ1ZSk7XG4gICAgbGF5ZXIuc2V0T3BhY2l0eShjb25maWcub3BhY2l0eSA/PyAxKTtcbiAgICBpZiAoY29uZmlnLnpJbmRleCAhPSBudWxsKSB7XG4gICAgICBsYXllci5zZXRaSW5kZXgoY29uZmlnLnpJbmRleCk7XG4gICAgfVxuICAgIGlmIChjb25maWcubWluWm9vbSAhPSBudWxsKSB7XG4gICAgICBsYXllci5zZXRNaW5ab29tKGNvbmZpZy5taW5ab29tKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5tYXhab29tICE9IG51bGwpIHtcbiAgICAgIGxheWVyLnNldE1heFpvb20oY29uZmlnLm1heFpvb20pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2lyZVNvdXJjZVN0YXR1cyhsYXllcklkOiBzdHJpbmcsIGxheWVyOiBCYXNlTGF5ZXIpOiB2b2lkIHtcbiAgICBpZiAoIShsYXllciBpbnN0YW5jZW9mIFRpbGVMYXllcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlID0gbGF5ZXIuZ2V0U291cmNlKCk7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzb3VyY2Uub24oJ3RpbGVsb2FkZXJyb3InLCAoKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oYFtHZW9NYXBMYXllclNlcnZpY2VdIFRpbGUgZXJyb3Igb24gbGF5ZXIgXCIke2xheWVySWR9XCJgKTtcbiAgICAgIHRoaXMucnVudGltZS5zZXQobGF5ZXJJZCwge1xuICAgICAgICBpZDogbGF5ZXJJZCxcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdLaMO0bmcgdOG6o2kgxJHGsOG7o2MgZOG7ryBsaeG7h3UgbOG7m3AgYuG6o24gxJHhu5MuJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc291cmNlLm9uKCd0aWxlbG9hZGVuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnJ1bnRpbWUuZ2V0KGxheWVySWQpO1xuICAgICAgaWYgKGN1cnJlbnQ/LnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJ1bnRpbWUuc2V0KGxheWVySWQsIHsgaWQ6IGxheWVySWQsIHN0YXR1czogJ3JlYWR5JyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3NtTGF5ZXIoX2NvbmZpZzogR2VvTWFwT3NtTGF5ZXJDb25maWcpOiBUaWxlTGF5ZXI8T1NNPiB7XG4gICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgc291cmNlOiBuZXcgT1NNKCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVh5ekxheWVyKGNvbmZpZzogR2VvTWFwWHl6TGF5ZXJDb25maWcpOiBUaWxlTGF5ZXI8WFlaPiB7XG4gICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgc291cmNlOiBuZXcgWFlaKHtcbiAgICAgICAgdXJsOiBjb25maWcudXJsLFxuICAgICAgICBhdHRyaWJ1dGlvbnM6IGNvbmZpZy5hdHRyaWJ1dGlvbnMsXG4gICAgICAgIG1heFpvb206IGNvbmZpZy5tYXhab29tLFxuICAgICAgICBjcm9zc09yaWdpbjogY29uZmlnLmNyb3NzT3JpZ2luID8/ICdhbm9ueW1vdXMnLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdtc0xheWVyKGNvbmZpZzogR2VvTWFwV21zTGF5ZXJDb25maWcpOiBUaWxlTGF5ZXI8VGlsZVdNUz4ge1xuICAgIGNvbnN0IGxheWVycyA9XG4gICAgICBjb25maWcubGF5ZXJOYW1lID8/XG4gICAgICAoY29uZmlnLnBhcmFtc1snTEFZRVJTJ10gIT0gbnVsbCA/IFN0cmluZyhjb25maWcucGFyYW1zWydMQVlFUlMnXSkgOiAnJyk7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiA9IHtcbiAgICAgIC4uLmNvbmZpZy5wYXJhbXMsXG4gICAgICBMQVlFUlM6IGxheWVycyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgIHNvdXJjZTogbmV3IFRpbGVXTVMoe1xuICAgICAgICB1cmw6IGNvbmZpZy51cmwsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgc2VydmVyVHlwZTogY29uZmlnLnNlcnZlclR5cGUsXG4gICAgICAgIGNyb3NzT3JpZ2luOiBjb25maWcuY3Jvc3NPcmlnaW4gPz8gJ2Fub255bW91cycsXG4gICAgICAgIHByb2plY3Rpb246IGNvbmZpZy5wcm9qZWN0aW9uIGFzIFByb2plY3Rpb25MaWtlIHwgdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdtdHNMYXllcihjb25maWc6IEdlb01hcFdtdHNMYXllckNvbmZpZyk6IFRpbGVMYXllcjxXTVRTPiB7XG4gICAgY29uc3QgcHJvamVjdGlvbkNvZGUgPSBjb25maWcucHJvamVjdGlvbiA/PyAnRVBTRzozODU3JztcbiAgICB0aGlzLnByb2plY3Rpb24uZW5zdXJlUmVnaXN0ZXJlZChwcm9qZWN0aW9uQ29kZSk7XG4gICAgY29uc3QgcHJvamVjdGlvbiA9IGdldFByb2plY3Rpb24ocHJvamVjdGlvbkNvZGUpO1xuICAgIGlmICghcHJvamVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXTVRTIHByb2plY3Rpb24gXCIke3Byb2plY3Rpb25Db2RlfVwiIGlzIG5vdCBhdmFpbGFibGUuYCk7XG4gICAgfVxuICAgIGNvbnN0IHByb2plY3Rpb25FeHRlbnQgPSBwcm9qZWN0aW9uLmdldEV4dGVudCgpO1xuICAgIGlmICghcHJvamVjdGlvbkV4dGVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgV01UUyBwcm9qZWN0aW9uIFwiJHtwcm9qZWN0aW9uQ29kZX1cIiBoYXMgbm8gZXh0ZW50OyBwcm92aWRlIGEgY3VzdG9tIHRpbGUgZ3JpZCBpbiBhIGxhdGVyIHBoYXNlLmAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzaXplID0gZ2V0V2lkdGgocHJvamVjdGlvbkV4dGVudCkgLyAyNTY7XG4gICAgY29uc3QgcmVzb2x1dGlvbnM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgbWF0cml4SWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IHogPSAwOyB6IDwgMjA7IHogKz0gMSkge1xuICAgICAgcmVzb2x1dGlvbnNbel0gPSBzaXplIC8gTWF0aC5wb3coMiwgeik7XG4gICAgICBtYXRyaXhJZHNbel0gPSBTdHJpbmcoeik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgc291cmNlOiBuZXcgV01UUyh7XG4gICAgICAgIHVybDogY29uZmlnLnVybCxcbiAgICAgICAgbGF5ZXI6IGNvbmZpZy5sYXllcixcbiAgICAgICAgbWF0cml4U2V0OiBjb25maWcubWF0cml4U2V0LFxuICAgICAgICBmb3JtYXQ6IGNvbmZpZy5mb3JtYXQgPz8gJ2ltYWdlL3BuZycsXG4gICAgICAgIHN0eWxlOiBjb25maWcuc3R5bGUgPz8gJycsXG4gICAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb25Db2RlLFxuICAgICAgICBjcm9zc09yaWdpbjogY29uZmlnLmNyb3NzT3JpZ2luID8/ICdhbm9ueW1vdXMnLFxuICAgICAgICB0aWxlR3JpZDogbmV3IFdNVFNUaWxlR3JpZCh7XG4gICAgICAgICAgb3JpZ2luOiBnZXRUb3BMZWZ0KHByb2plY3Rpb25FeHRlbnQpLFxuICAgICAgICAgIHJlc29sdXRpb25zLFxuICAgICAgICAgIG1hdHJpeElkcyxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlR2VvSnNvbkxheWVyKGNvbmZpZzogR2VvTWFwR2VvSnNvbkxheWVyQ29uZmlnKTogVmVjdG9yTGF5ZXI8VmVjdG9yU291cmNlPiB7XG4gICAgY29uc3QgZm9ybWF0ID0gbmV3IEdlb0pTT04oKTtcbiAgICBjb25zdCBzb3VyY2UgPSBuZXcgVmVjdG9yU291cmNlKCk7XG4gICAgY29uc3QgZmVhdHVyZVByb2plY3Rpb24gPSBjb25maWcuZmVhdHVyZVByb2plY3Rpb24gPz8gJ0VQU0c6Mzg1Nyc7XG4gICAgY29uc3QgZGF0YVByb2plY3Rpb24gPSBjb25maWcuZGF0YVByb2plY3Rpb24gPz8gJ0VQU0c6NDMyNic7XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVVJMIOKAlCBsZXQgVmVjdG9yU291cmNlIGxvYWQgYXN5bmNocm9ub3VzbHlcbiAgICAgIGNvbnN0IHVybFNvdXJjZSA9IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICB1cmw6IGNvbmZpZy5kYXRhLFxuICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKHtcbiAgICAgICAgICBkYXRhUHJvamVjdGlvbixcbiAgICAgICAgICBmZWF0dXJlUHJvamVjdGlvbixcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIHVybFNvdXJjZS5vbignZmVhdHVyZXNsb2FkZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtHZW9NYXBMYXllclNlcnZpY2VdIEdlb0pTT04gbG9hZCBlcnJvciBcIiR7Y29uZmlnLmlkfVwiYCk7XG4gICAgICAgIHRoaXMucnVudGltZS5zZXQoY29uZmlnLmlkLCB7XG4gICAgICAgICAgaWQ6IGNvbmZpZy5pZCxcbiAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgICAgZXJyb3JNZXNzYWdlOiAnS2jDtG5nIHThuqNpIMSRxrDhu6NjIEdlb0pTT04uJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoeyBzb3VyY2U6IHVybFNvdXJjZSB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBmb3JtYXQucmVhZEZlYXR1cmVzKGNvbmZpZy5kYXRhLCB7XG4gICAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbixcbiAgICAgIH0pIGFzIEZlYXR1cmU8R2VvbWV0cnk+W107XG4gICAgICBzb3VyY2UuYWRkRmVhdHVyZXMoZmVhdHVyZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgW0dlb01hcExheWVyU2VydmljZV0gSW52YWxpZCBHZW9KU09OIGZvciBcIiR7Y29uZmlnLmlkfVwiYCwgZXJyKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR2VvSlNPTiBraMO0bmcgaOG7o3AgbOG7hyBjaG8gbOG7m3AgXCIke2NvbmZpZy5pZH1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHsgc291cmNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWZWN0b3JMYXllcihjb25maWc6IEdlb01hcFZlY3RvckxheWVyQ29uZmlnKTogVmVjdG9yTGF5ZXI8VmVjdG9yU291cmNlPiB7XG4gICAgY29uc3Qgc291cmNlID0gbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICBmZWF0dXJlczogY29uZmlnLmZlYXR1cmVzID8/IFtdLFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoeyBzb3VyY2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1hcGJveFN0eWxlTGF5ZXIoY29uZmlnOiBHZW9NYXBNYXBib3hTdHlsZUxheWVyQ29uZmlnKTogTGF5ZXJHcm91cCB7XG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgTGF5ZXJHcm91cCh7IGxheWVyczogW10gfSk7XG4gICAgY29uc3Qgc3R5bGVJbnB1dCA9IGNvbmZpZy5zdHlsZUpzb24gPz8gY29uZmlnLnN0eWxlVXJsO1xuICAgIGlmICghc3R5bGVJbnB1dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXBib3gtc3R5bGUgbGF5ZXIgXCIke2NvbmZpZy5pZH1cIiBpcyBtaXNzaW5nIHN0eWxlSnNvbi9zdHlsZVVybC5gKTtcbiAgICB9XG4gICAgYXBwbHlNYXBib3hTdHlsZShncm91cCwgc3R5bGVJbnB1dCBhcyBvYmplY3QsIHsgdHJhbnNmb3JtUmVxdWVzdDogY29uZmlnLnRyYW5zZm9ybVJlcXVlc3QgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5ydW50aW1lLnNldChjb25maWcuaWQsIHsgaWQ6IGNvbmZpZy5pZCwgc3RhdHVzOiAncmVhZHknIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtHZW9NYXBMYXllclNlcnZpY2VdIE1hcGJveCBzdHlsZSBhcHBseSBlcnJvciBcIiR7Y29uZmlnLmlkfVwiYCwgZXJyKTtcbiAgICAgICAgdGhpcy5ydW50aW1lLnNldChjb25maWcuaWQsIHtcbiAgICAgICAgICBpZDogY29uZmlnLmlkLFxuICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6ICdLaMO0bmcgw6FwIMSRxrDhu6NjIHN0eWxlIGLhuqNuIMSR4buTIG7hu4FuLicsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG59XG4iXX0=
|
package/fesm2022/geoit-ui.mjs
CHANGED
|
@@ -100,6 +100,7 @@ import * as i1$6 from 'ng-zorro-antd/core/transition-patch';
|
|
|
100
100
|
import { Subscription } from 'rxjs';
|
|
101
101
|
import { NzConfigService } from 'ng-zorro-antd/core/config';
|
|
102
102
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
103
|
+
import LayerGroup from 'ol/layer/Group';
|
|
103
104
|
import TileLayer from 'ol/layer/Tile';
|
|
104
105
|
import VectorLayer from 'ol/layer/Vector';
|
|
105
106
|
import OSM from 'ol/source/OSM';
|
|
@@ -110,6 +111,7 @@ import WMTS from 'ol/source/WMTS';
|
|
|
110
111
|
import WMTSTileGrid from 'ol/tilegrid/WMTS';
|
|
111
112
|
import { get, transform, transformExtent, fromLonLat } from 'ol/proj';
|
|
112
113
|
import { getWidth, getTopLeft, getCenter } from 'ol/extent';
|
|
114
|
+
import { apply } from 'ol-mapbox-style';
|
|
113
115
|
import { register } from 'ol/proj/proj4';
|
|
114
116
|
import proj4 from 'proj4';
|
|
115
117
|
import OlMap from 'ol/Map';
|
|
@@ -4065,9 +4067,48 @@ const GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326 = [107.2, 11.15, 108.75, 12.35];
|
|
|
4065
4067
|
const GEO_MAP_TRAFFIC_LAYER_ID = '__geo_traffic';
|
|
4066
4068
|
const GEO_MAP_ESRI_IMAGERY_URL = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}';
|
|
4067
4069
|
const GEO_MAP_ESRI_STREETS_URL = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}';
|
|
4070
|
+
const GEO_MAP_ESRI_LIGHT_URL = 'https://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}';
|
|
4071
|
+
const GEO_MAP_ESRI_DARK_URL = 'https://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/{z}/{y}/{x}';
|
|
4072
|
+
const GEO_MAP_ESRI_TOPO_URL = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}';
|
|
4068
4073
|
const GEO_MAP_ESRI_TRANSPORT_URL = 'https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Transportation/MapServer/tile/{z}/{y}/{x}';
|
|
4069
|
-
/**
|
|
4074
|
+
/**
|
|
4075
|
+
* Default basemap picker options (vertical dropdown design).
|
|
4076
|
+
* Order matches design: vệ tinh → sáng → 3D → đường phố → địa hình.
|
|
4077
|
+
*/
|
|
4070
4078
|
const GEO_MAP_DEFAULT_BASEMAP_OPTIONS = [
|
|
4079
|
+
{
|
|
4080
|
+
id: 'satellite',
|
|
4081
|
+
label: 'Nền vệ tinh',
|
|
4082
|
+
basemap: {
|
|
4083
|
+
type: 'xyz',
|
|
4084
|
+
url: GEO_MAP_ESRI_IMAGERY_URL,
|
|
4085
|
+
attributions: 'Esri, Maxar, Earthstar Geographics',
|
|
4086
|
+
title: 'Ảnh vệ tinh',
|
|
4087
|
+
},
|
|
4088
|
+
previewUrl: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/6/30/50',
|
|
4089
|
+
},
|
|
4090
|
+
{
|
|
4091
|
+
id: 'light',
|
|
4092
|
+
label: 'Bản đồ sáng',
|
|
4093
|
+
basemap: {
|
|
4094
|
+
type: 'xyz',
|
|
4095
|
+
url: GEO_MAP_ESRI_LIGHT_URL,
|
|
4096
|
+
attributions: 'Esri',
|
|
4097
|
+
title: 'Bản đồ sáng',
|
|
4098
|
+
},
|
|
4099
|
+
previewUrl: 'https://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/6/30/50',
|
|
4100
|
+
},
|
|
4101
|
+
{
|
|
4102
|
+
id: 'dark',
|
|
4103
|
+
label: 'Bản đồ 3D',
|
|
4104
|
+
basemap: {
|
|
4105
|
+
type: 'xyz',
|
|
4106
|
+
url: GEO_MAP_ESRI_DARK_URL,
|
|
4107
|
+
attributions: 'Esri',
|
|
4108
|
+
title: 'Bản đồ tối',
|
|
4109
|
+
},
|
|
4110
|
+
previewUrl: 'https://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/6/30/50',
|
|
4111
|
+
},
|
|
4071
4112
|
{
|
|
4072
4113
|
id: 'osm',
|
|
4073
4114
|
label: 'Đường phố',
|
|
@@ -4075,15 +4116,15 @@ const GEO_MAP_DEFAULT_BASEMAP_OPTIONS = [
|
|
|
4075
4116
|
previewUrl: 'https://tile.openstreetmap.org/6/50/30.png',
|
|
4076
4117
|
},
|
|
4077
4118
|
{
|
|
4078
|
-
id: '
|
|
4079
|
-
label: '
|
|
4119
|
+
id: 'terrain',
|
|
4120
|
+
label: 'Nền địa hình',
|
|
4080
4121
|
basemap: {
|
|
4081
4122
|
type: 'xyz',
|
|
4082
|
-
url:
|
|
4083
|
-
attributions: 'Esri
|
|
4084
|
-
title: '
|
|
4123
|
+
url: GEO_MAP_ESRI_TOPO_URL,
|
|
4124
|
+
attributions: 'Esri',
|
|
4125
|
+
title: 'Địa hình',
|
|
4085
4126
|
},
|
|
4086
|
-
previewUrl: 'https://server.arcgisonline.com/ArcGIS/rest/services/
|
|
4127
|
+
previewUrl: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/6/30/50',
|
|
4087
4128
|
},
|
|
4088
4129
|
];
|
|
4089
4130
|
/** Transportation reference overlay — toggle independently of basemap. */
|
|
@@ -4752,6 +4793,22 @@ class GeoMapLayerService {
|
|
|
4752
4793
|
};
|
|
4753
4794
|
return this.createLayer(config);
|
|
4754
4795
|
}
|
|
4796
|
+
if (basemap.type === 'mapbox-style') {
|
|
4797
|
+
const config = {
|
|
4798
|
+
id: GEO_MAP_BASEMAP_LAYER_ID,
|
|
4799
|
+
title: basemap.title ?? 'Mapbox style basemap',
|
|
4800
|
+
type: 'mapbox-style',
|
|
4801
|
+
styleJson: basemap.styleJson,
|
|
4802
|
+
styleUrl: basemap.styleUrl,
|
|
4803
|
+
transformRequest: basemap.transformRequest,
|
|
4804
|
+
visible: true,
|
|
4805
|
+
opacity: 1,
|
|
4806
|
+
zIndex: 0,
|
|
4807
|
+
basemap: true,
|
|
4808
|
+
group: 'base-map',
|
|
4809
|
+
};
|
|
4810
|
+
return this.createLayer(config);
|
|
4811
|
+
}
|
|
4755
4812
|
const config = {
|
|
4756
4813
|
id: GEO_MAP_BASEMAP_LAYER_ID,
|
|
4757
4814
|
title: basemap.title ?? 'XYZ basemap',
|
|
@@ -4791,6 +4848,9 @@ class GeoMapLayerService {
|
|
|
4791
4848
|
case 'vector':
|
|
4792
4849
|
layer = this.createVectorLayer(config);
|
|
4793
4850
|
break;
|
|
4851
|
+
case 'mapbox-style':
|
|
4852
|
+
layer = this.createMapboxStyleLayer(config);
|
|
4853
|
+
break;
|
|
4794
4854
|
default: {
|
|
4795
4855
|
const _exhaustive = config;
|
|
4796
4856
|
throw new Error(`Unsupported layer type: ${JSON.stringify(_exhaustive)}`);
|
|
@@ -4846,6 +4906,10 @@ class GeoMapLayerService {
|
|
|
4846
4906
|
previous.dataProjection !== next.dataProjection);
|
|
4847
4907
|
case 'vector':
|
|
4848
4908
|
return previous.features !== next.features;
|
|
4909
|
+
case 'mapbox-style':
|
|
4910
|
+
return (previous.styleUrl !== next.styleUrl ||
|
|
4911
|
+
JSON.stringify(previous.styleJson) !==
|
|
4912
|
+
JSON.stringify(next.styleJson));
|
|
4849
4913
|
default:
|
|
4850
4914
|
return true;
|
|
4851
4915
|
}
|
|
@@ -4915,6 +4979,9 @@ class GeoMapLayerService {
|
|
|
4915
4979
|
if (config.type === 'geojson' && config.data == null) {
|
|
4916
4980
|
throw new Error(`GeoJSON layer "${config.id}" is missing data.`);
|
|
4917
4981
|
}
|
|
4982
|
+
if (config.type === 'mapbox-style' && !config.styleJson && !config.styleUrl?.trim()) {
|
|
4983
|
+
throw new Error(`Mapbox-style layer "${config.id}" requires styleJson or styleUrl.`);
|
|
4984
|
+
}
|
|
4918
4985
|
}
|
|
4919
4986
|
applyCommonOptions(layer, config) {
|
|
4920
4987
|
layer.set(LAYER_ID_KEY, config.id);
|
|
@@ -5067,6 +5134,26 @@ class GeoMapLayerService {
|
|
|
5067
5134
|
});
|
|
5068
5135
|
return new VectorLayer({ source });
|
|
5069
5136
|
}
|
|
5137
|
+
createMapboxStyleLayer(config) {
|
|
5138
|
+
const group = new LayerGroup({ layers: [] });
|
|
5139
|
+
const styleInput = config.styleJson ?? config.styleUrl;
|
|
5140
|
+
if (!styleInput) {
|
|
5141
|
+
throw new Error(`Mapbox-style layer "${config.id}" is missing styleJson/styleUrl.`);
|
|
5142
|
+
}
|
|
5143
|
+
apply(group, styleInput, { transformRequest: config.transformRequest })
|
|
5144
|
+
.then(() => {
|
|
5145
|
+
this.runtime.set(config.id, { id: config.id, status: 'ready' });
|
|
5146
|
+
})
|
|
5147
|
+
.catch((err) => {
|
|
5148
|
+
console.error(`[GeoMapLayerService] Mapbox style apply error "${config.id}"`, err);
|
|
5149
|
+
this.runtime.set(config.id, {
|
|
5150
|
+
id: config.id,
|
|
5151
|
+
status: 'error',
|
|
5152
|
+
errorMessage: 'Không áp được style bản đồ nền.',
|
|
5153
|
+
});
|
|
5154
|
+
});
|
|
5155
|
+
return group;
|
|
5156
|
+
}
|
|
5070
5157
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5071
5158
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService });
|
|
5072
5159
|
}
|
|
@@ -6318,59 +6405,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6318
6405
|
}] });
|
|
6319
6406
|
|
|
6320
6407
|
/**
|
|
6321
|
-
* Thumbnail
|
|
6408
|
+
* Thumbnail trigger + vertical dropdown to pick the map basemap.
|
|
6322
6409
|
*
|
|
6323
|
-
* @summary
|
|
6324
|
-
* @whenToUse
|
|
6410
|
+
* @summary Pick basemap from a vertical thumbnail dropdown.
|
|
6411
|
+
* @whenToUse Bottom-right basemap picker («Lớp bản đồ»).
|
|
6325
6412
|
* @doNotUseWhen Full layer panel — use geo-map-layer-panel.
|
|
6326
6413
|
*/
|
|
6327
6414
|
class GeoMapBasemapSwitcherComponent {
|
|
6328
|
-
/** Exactly two options (street + satellite). Extra items are ignored. */
|
|
6329
6415
|
options = input(GEO_MAP_DEFAULT_BASEMAP_OPTIONS);
|
|
6330
6416
|
selectedId = model('osm');
|
|
6331
6417
|
/** Caption on the thumbnail card (design: «Lớp bản đồ»). */
|
|
6332
6418
|
label = input('Lớp bản đồ');
|
|
6333
6419
|
tooltip = input('Đổi lớp bản đồ nền');
|
|
6334
6420
|
basemapChange = output();
|
|
6335
|
-
|
|
6336
|
-
|
|
6337
|
-
|
|
6421
|
+
open = signal(false);
|
|
6422
|
+
list = computed(() => {
|
|
6423
|
+
const list = this.options();
|
|
6424
|
+
return list.length ? list : GEO_MAP_DEFAULT_BASEMAP_OPTIONS;
|
|
6338
6425
|
});
|
|
6339
6426
|
selected = computed(() => {
|
|
6340
6427
|
const id = this.selectedId();
|
|
6341
|
-
const list = this.
|
|
6428
|
+
const list = this.list();
|
|
6342
6429
|
return list.find((item) => item.id === id) ?? list[0] ?? null;
|
|
6343
6430
|
});
|
|
6344
|
-
|
|
6345
|
-
|
|
6346
|
-
|
|
6347
|
-
|
|
6348
|
-
|
|
6349
|
-
|
|
6350
|
-
const currentId = this.selected()?.id;
|
|
6351
|
-
return list.find((item) => item.id !== currentId) ?? list[0] ?? null;
|
|
6352
|
-
});
|
|
6353
|
-
tooltipText = computed(() => {
|
|
6354
|
-
const next = this.next();
|
|
6355
|
-
if (!next) {
|
|
6356
|
-
return this.tooltip();
|
|
6357
|
-
}
|
|
6358
|
-
return `Chuyển sang ${next.label}`;
|
|
6359
|
-
});
|
|
6360
|
-
toggle() {
|
|
6361
|
-
const next = this.next();
|
|
6362
|
-
if (!next) {
|
|
6431
|
+
onVisible(visible) {
|
|
6432
|
+
this.open.set(visible);
|
|
6433
|
+
}
|
|
6434
|
+
pick(option) {
|
|
6435
|
+
this.open.set(false);
|
|
6436
|
+
if (option.id === this.selectedId()) {
|
|
6363
6437
|
return;
|
|
6364
6438
|
}
|
|
6365
|
-
this.selectedId.set(
|
|
6366
|
-
this.basemapChange.emit(
|
|
6439
|
+
this.selectedId.set(option.id);
|
|
6440
|
+
this.basemapChange.emit(option.basemap);
|
|
6367
6441
|
}
|
|
6368
6442
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapBasemapSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6369
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapBasemapSwitcherComponent, isStandalone: true, selector: "geo-map-basemap-switcher", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedId: { classPropertyName: "selectedId", publicName: "selectedId", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedId: "selectedIdChange", basemapChange: "basemapChange" }, host: { classAttribute: "geo-map-basemap-switcher-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n [nz-tooltip]=\"
|
|
6443
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapBasemapSwitcherComponent, isStandalone: true, selector: "geo-map-basemap-switcher", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedId: { classPropertyName: "selectedId", publicName: "selectedId", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedId: "selectedIdChange", basemapChange: "basemapChange" }, host: { classAttribute: "geo-map-basemap-switcher-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"topCenter\"\n nzOverlayClassName=\"geo-map-basemap-switcher-overlay\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"open()\"\n (nzVisibleChange)=\"onVisible($event)\"\n [nz-tooltip]=\"open() ? '' : tooltip()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"tooltip()\"\n [attr.aria-expanded]=\"open()\"\n>\n @if (selected(); as option) {\n @if (option.previewUrl; as url) {\n <img class=\"geo-map-basemap-switcher__preview\" [src]=\"url\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__bar\" aria-hidden=\"true\">\n <span class=\"geo-map-basemap-switcher__icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4.2 3 8.7l9 4.5 9-4.5-9-4.5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 15.3 12 19.8l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 12 12 16.5l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"geo-map-basemap-switcher__caption\">{{ label() }}</span>\n </span>\n</button>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div\n class=\"geo-map-basemap-switcher__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"tooltip()\"\n >\n <ul class=\"geo-map-basemap-switcher__list\">\n @for (option of list(); track option.id) {\n <li>\n <button\n type=\"button\"\n role=\"option\"\n class=\"geo-map-basemap-switcher__option\"\n [class.geo-map-basemap-switcher__option--active]=\"option.id === selectedId()\"\n [attr.aria-selected]=\"option.id === selectedId()\"\n (click)=\"pick(option)\"\n >\n @if (option.previewUrl; as url) {\n <img\n class=\"geo-map-basemap-switcher__option-thumb\"\n [src]=\"url\"\n alt=\"\"\n />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__option-thumb geo-map-basemap-switcher__option-thumb--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__option-label\">{{ option.label }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n</nz-dropdown-menu>\n", styles: ["@charset \"UTF-8\";.geo-map-basemap-switcher-host{display:block;width:90px}.geo-map-basemap-switcher__trigger{position:relative;display:block;width:90px;height:90px;padding:0;overflow:hidden;border:3px solid var(--geo-color-neutral-white, #fff);border-radius:var(--geo-radius-2xl);background:var(--geo-color-neutral-800);box-shadow:var(--geo-shadow-md);cursor:pointer;transition:box-shadow .15s ease,transform .15s ease}.geo-map-basemap-switcher__trigger:hover{box-shadow:var(--geo-shadow-lg, var(--geo-shadow-md));transform:translateY(-1px)}.geo-map-basemap-switcher__trigger:focus-visible{outline:2px solid var(--geo-color-info-default);outline-offset:2px}.geo-map-basemap-switcher__preview{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.geo-map-basemap-switcher__preview--empty{background:linear-gradient(145deg,var(--geo-color-neutral-600),var(--geo-color-neutral-800))}.geo-map-basemap-switcher__bar{position:absolute;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;gap:4px;min-height:28px;padding:4px 6px;color:var(--geo-color-neutral-white, #fff);background:color-mix(in srgb,var(--geo-color-neutral-900) 72%,transparent);pointer-events:none}.geo-map-basemap-switcher__icon{display:inline-flex;flex-shrink:0;width:14px;height:14px;color:inherit}.geo-map-basemap-switcher__icon svg{width:100%;height:100%}.geo-map-basemap-switcher__caption{min-width:0;overflow:hidden;font-size:var(--geo-font-size-tiny, 10px);font-weight:var(--geo-font-weight-semibold, 600);line-height:1.2;text-align:left;text-overflow:ellipsis;white-space:nowrap}.geo-map-basemap-switcher-overlay .ant-dropdown-menu{padding:0;margin-bottom:8px;border:0;background:transparent;box-shadow:none}.geo-map-basemap-switcher__panel{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:104px;min-width:104px;max-width:104px;padding:10px 8px;border-radius:var(--geo-radius-xl, 14px);background:var(--geo-color-neutral-white, #fff);box-shadow:var(--geo-shadow-md)}.geo-map-basemap-switcher__list{display:flex;flex-direction:column;align-items:center;gap:10px;margin:0;padding:0;list-style:none}.geo-map-basemap-switcher__option{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;padding:0;border:0;background:transparent;color:var(--geo-color-neutral-900);font:inherit;cursor:pointer}.geo-map-basemap-switcher__option:hover .geo-map-basemap-switcher__option-thumb{box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-info-default) 35%,transparent)}.geo-map-basemap-switcher__option:focus-visible .geo-map-basemap-switcher__option-thumb{outline:2px solid var(--geo-color-info-default);outline-offset:2px}.geo-map-basemap-switcher__option--active .geo-map-basemap-switcher__option-thumb{box-shadow:0 0 0 2px var(--geo-color-info-default)}.geo-map-basemap-switcher__option--active .geo-map-basemap-switcher__option-label{color:var(--geo-color-info-default);font-weight:var(--geo-font-weight-semibold, 600)}.geo-map-basemap-switcher__option-thumb{display:block;width:72px;height:72px;border-radius:var(--geo-radius-lg, 12px);object-fit:cover;background:var(--geo-color-neutral-200);transition:box-shadow .15s ease}.geo-map-basemap-switcher__option-thumb--empty{background:linear-gradient(145deg,var(--geo-color-neutral-500),var(--geo-color-neutral-700))}.geo-map-basemap-switcher__option-label{max-width:100%;padding:0 2px;overflow:hidden;color:inherit;font-size:var(--geo-font-size-tiny, 10px);font-weight:var(--geo-font-weight-medium, 500);line-height:1.25;text-align:center;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$6.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6370
6444
|
}
|
|
6371
6445
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapBasemapSwitcherComponent, decorators: [{
|
|
6372
6446
|
type: Component,
|
|
6373
|
-
args: [{ selector: 'geo-map-basemap-switcher', standalone: true, imports: [NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-basemap-switcher-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n [nz-tooltip]=\"
|
|
6447
|
+
args: [{ selector: 'geo-map-basemap-switcher', standalone: true, imports: [NzToolTipModule, NzDropDownModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-basemap-switcher-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"topCenter\"\n nzOverlayClassName=\"geo-map-basemap-switcher-overlay\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"open()\"\n (nzVisibleChange)=\"onVisible($event)\"\n [nz-tooltip]=\"open() ? '' : tooltip()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"tooltip()\"\n [attr.aria-expanded]=\"open()\"\n>\n @if (selected(); as option) {\n @if (option.previewUrl; as url) {\n <img class=\"geo-map-basemap-switcher__preview\" [src]=\"url\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__bar\" aria-hidden=\"true\">\n <span class=\"geo-map-basemap-switcher__icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4.2 3 8.7l9 4.5 9-4.5-9-4.5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 15.3 12 19.8l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 12 12 16.5l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"geo-map-basemap-switcher__caption\">{{ label() }}</span>\n </span>\n</button>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div\n class=\"geo-map-basemap-switcher__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"tooltip()\"\n >\n <ul class=\"geo-map-basemap-switcher__list\">\n @for (option of list(); track option.id) {\n <li>\n <button\n type=\"button\"\n role=\"option\"\n class=\"geo-map-basemap-switcher__option\"\n [class.geo-map-basemap-switcher__option--active]=\"option.id === selectedId()\"\n [attr.aria-selected]=\"option.id === selectedId()\"\n (click)=\"pick(option)\"\n >\n @if (option.previewUrl; as url) {\n <img\n class=\"geo-map-basemap-switcher__option-thumb\"\n [src]=\"url\"\n alt=\"\"\n />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__option-thumb geo-map-basemap-switcher__option-thumb--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__option-label\">{{ option.label }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n</nz-dropdown-menu>\n", styles: ["@charset \"UTF-8\";.geo-map-basemap-switcher-host{display:block;width:90px}.geo-map-basemap-switcher__trigger{position:relative;display:block;width:90px;height:90px;padding:0;overflow:hidden;border:3px solid var(--geo-color-neutral-white, #fff);border-radius:var(--geo-radius-2xl);background:var(--geo-color-neutral-800);box-shadow:var(--geo-shadow-md);cursor:pointer;transition:box-shadow .15s ease,transform .15s ease}.geo-map-basemap-switcher__trigger:hover{box-shadow:var(--geo-shadow-lg, var(--geo-shadow-md));transform:translateY(-1px)}.geo-map-basemap-switcher__trigger:focus-visible{outline:2px solid var(--geo-color-info-default);outline-offset:2px}.geo-map-basemap-switcher__preview{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.geo-map-basemap-switcher__preview--empty{background:linear-gradient(145deg,var(--geo-color-neutral-600),var(--geo-color-neutral-800))}.geo-map-basemap-switcher__bar{position:absolute;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;gap:4px;min-height:28px;padding:4px 6px;color:var(--geo-color-neutral-white, #fff);background:color-mix(in srgb,var(--geo-color-neutral-900) 72%,transparent);pointer-events:none}.geo-map-basemap-switcher__icon{display:inline-flex;flex-shrink:0;width:14px;height:14px;color:inherit}.geo-map-basemap-switcher__icon svg{width:100%;height:100%}.geo-map-basemap-switcher__caption{min-width:0;overflow:hidden;font-size:var(--geo-font-size-tiny, 10px);font-weight:var(--geo-font-weight-semibold, 600);line-height:1.2;text-align:left;text-overflow:ellipsis;white-space:nowrap}.geo-map-basemap-switcher-overlay .ant-dropdown-menu{padding:0;margin-bottom:8px;border:0;background:transparent;box-shadow:none}.geo-map-basemap-switcher__panel{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:104px;min-width:104px;max-width:104px;padding:10px 8px;border-radius:var(--geo-radius-xl, 14px);background:var(--geo-color-neutral-white, #fff);box-shadow:var(--geo-shadow-md)}.geo-map-basemap-switcher__list{display:flex;flex-direction:column;align-items:center;gap:10px;margin:0;padding:0;list-style:none}.geo-map-basemap-switcher__option{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;padding:0;border:0;background:transparent;color:var(--geo-color-neutral-900);font:inherit;cursor:pointer}.geo-map-basemap-switcher__option:hover .geo-map-basemap-switcher__option-thumb{box-shadow:0 0 0 2px color-mix(in srgb,var(--geo-color-info-default) 35%,transparent)}.geo-map-basemap-switcher__option:focus-visible .geo-map-basemap-switcher__option-thumb{outline:2px solid var(--geo-color-info-default);outline-offset:2px}.geo-map-basemap-switcher__option--active .geo-map-basemap-switcher__option-thumb{box-shadow:0 0 0 2px var(--geo-color-info-default)}.geo-map-basemap-switcher__option--active .geo-map-basemap-switcher__option-label{color:var(--geo-color-info-default);font-weight:var(--geo-font-weight-semibold, 600)}.geo-map-basemap-switcher__option-thumb{display:block;width:72px;height:72px;border-radius:var(--geo-radius-lg, 12px);object-fit:cover;background:var(--geo-color-neutral-200);transition:box-shadow .15s ease}.geo-map-basemap-switcher__option-thumb--empty{background:linear-gradient(145deg,var(--geo-color-neutral-500),var(--geo-color-neutral-700))}.geo-map-basemap-switcher__option-label{max-width:100%;padding:0 2px;overflow:hidden;color:inherit;font-size:var(--geo-font-size-tiny, 10px);font-weight:var(--geo-font-weight-medium, 500);line-height:1.25;text-align:center;text-overflow:ellipsis;white-space:nowrap}\n"] }]
|
|
6374
6448
|
}] });
|
|
6375
6449
|
|
|
6376
6450
|
/**
|
|
@@ -8148,5 +8222,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8148
8222
|
* Generated bundle index. Do not edit.
|
|
8149
8223
|
*/
|
|
8150
8224
|
|
|
8151
|
-
export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_LOCATE_TOOLBAR_ACTION, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
|
|
8225
|
+
export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_DARK_URL, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_LIGHT_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TOPO_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_LOCATE_TOOLBAR_ACTION, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
|
|
8152
8226
|
//# sourceMappingURL=geoit-ui.mjs.map
|