bbj-screen-widget 2.4.67 → 2.4.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/bbj-screen-widget.d.ts +16 -12
  2. package/bbj-screen-widget.metadata.json +1 -1
  3. package/bundles/bbj-screen-widget-core.umd.js +147 -4
  4. package/bundles/bbj-screen-widget-core.umd.js.map +1 -1
  5. package/bundles/bbj-screen-widget-core.umd.min.js +1 -1
  6. package/bundles/bbj-screen-widget-core.umd.min.js.map +1 -1
  7. package/bundles/bbj-screen-widget.umd.js +1309 -201
  8. package/bundles/bbj-screen-widget.umd.js.map +1 -1
  9. package/bundles/bbj-screen-widget.umd.min.js +1 -1
  10. package/bundles/bbj-screen-widget.umd.min.js.map +1 -1
  11. package/core/bbj-screen-widget-core.metadata.json +1 -1
  12. package/core/public_api.d.ts +2 -0
  13. package/core/util/map.util.d.ts +23 -0
  14. package/core/util/scale.util.d.ts +4 -0
  15. package/esm2015/bbj-screen-widget.js +17 -13
  16. package/esm2015/core/public_api.js +3 -1
  17. package/esm2015/core/util/map.util.js +104 -0
  18. package/esm2015/core/util/scale.util.js +33 -0
  19. package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +4 -42
  20. package/esm2015/lib/screen-widget.module.js +7 -1
  21. package/esm2015/lib/tianditu/base-layer.js +80 -0
  22. package/esm2015/lib/tianditu/tianditu-marker/tianditu-marker.component.js +666 -0
  23. package/esm2015/lib/tianditu/tianditu.component.js +399 -0
  24. package/esm2015/lib/tianditu/tianditu.module.js +21 -0
  25. package/fesm2015/bbj-screen-widget-core.js +138 -1
  26. package/fesm2015/bbj-screen-widget-core.js.map +1 -1
  27. package/fesm2015/bbj-screen-widget.js +1193 -86
  28. package/fesm2015/bbj-screen-widget.js.map +1 -1
  29. package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +1 -1
  30. package/lib/tianditu/base-layer.d.ts +20 -0
  31. package/lib/tianditu/tianditu-marker/tianditu-marker.component.d.ts +63 -0
  32. package/lib/tianditu/tianditu.component.d.ts +53 -0
  33. package/lib/tianditu/tianditu.module.d.ts +4 -0
  34. package/package.json +1 -1
@@ -0,0 +1,399 @@
1
+ import { __awaiter, __decorate, __metadata } from "tslib";
2
+ import { Component, ElementRef, EventEmitter, NgZone, Optional, ViewChild, } from '@angular/core';
3
+ import { LazyService } from '@delon/util';
4
+ import { Data, DataOutput, Property, ScaleSubject, Widget, WidgetRef, Event } from 'bbj-widget-base';
5
+ import { scaleAdapter, bd09towgs84, gcj02towgs84, wgs84togcj02, wgs84tobd09 } from 'bbj-screen-widget/core';
6
+ import { Subject } from 'rxjs';
7
+ let TiandituComponent = class TiandituComponent {
8
+ constructor(lazy, elementRef, zone, scale$, widgetRef) {
9
+ this.lazy = lazy;
10
+ this.elementRef = elementRef;
11
+ this.zone = zone;
12
+ this.scale$ = scale$;
13
+ this.widgetRef = widgetRef;
14
+ this.coordinateType = 'BD-09';
15
+ // @Property('地图类型', {
16
+ // enum: MapTypeEnum,
17
+ // })
18
+ // mapType = 'normal';
19
+ // mapTypeValue: string;
20
+ // @Property('上传样式', { type: 'string', ui: { widget: 'myUploadAudio', visibleIf: { mapType: ['custom'] } } })
21
+ // uploadStyle: string;
22
+ // @Property('切换按钮')
23
+ // showMapTypeRadio: boolean;
24
+ // @Property('全景地图', { type: 'boolean' })
25
+ // minMapShow = false;
26
+ // @Property('显示信息', {
27
+ // ui: { widget: 'select' },
28
+ // enum: [
29
+ // { label: '点击', value: 'click' },
30
+ // { label: '悬停', value: 'mouseover' },
31
+ // ],
32
+ // })
33
+ // showType = 'click';
34
+ // @Property('信息窗背景', { ui: { widget: 'myColor' } })
35
+ // infoWindowBackground: string;
36
+ // @Property('信息窗字体', { ui: { widget: 'myColor' } })
37
+ // infoWindowColor: string;
38
+ // @Property('信息窗宽度')
39
+ // infoWindowWidth: number;
40
+ // @Property('信息窗高度')
41
+ // infoWindowHeight: number;
42
+ // @Property('信息窗模板', { ui: { widget: 'textarea' } })
43
+ // infoWindowTemplate: string;
44
+ // @Property('信息窗边框', {
45
+ // ui: { widget: 'myColor' },
46
+ // example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
47
+ // })
48
+ // infoWindowBorderColor: string;
49
+ // @Property('隐藏尖角')
50
+ // @HostBinding('class.hideInfoWindowTail')
51
+ // hideInfoWindowTail: boolean;
52
+ // @Property('隐藏关闭按钮')
53
+ // @HostBinding('class.hideInfoWindowTop')
54
+ // hideInfoWindowTop: boolean;
55
+ this.dragging = true;
56
+ // @Property('遮罩颜色', {
57
+ // ui: { widget: 'myColor' },
58
+ // example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
59
+ // })
60
+ // shadeColor = '#004395';
61
+ // @Property('背景颜色', {
62
+ // ui: { widget: 'myColor' },
63
+ // example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
64
+ // })
65
+ // mapBackColor: string;
66
+ // @Property('多边线色', {
67
+ // ui: { widget: 'myColor' },
68
+ // example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
69
+ // })
70
+ // mapCityColor = '#41b7ff';
71
+ this.zoom = 12;
72
+ // @Property('遮罩透明', { type: 'number' })
73
+ // fillOpacity = 0;
74
+ // @Property('多边线粗', { type: 'number' })
75
+ // strokesize = 2;
76
+ // @Property('黑夜模式', { type: 'boolean', ui: { hidden: true } })
77
+ // nightMode = false;
78
+ // @Property('3D视角')
79
+ // enable3D: boolean;
80
+ // @Property('定位控件')
81
+ // showLocationControl: boolean;
82
+ // @Property('初始角度', { type: 'number', ui: { visibleIf: { enable3D: [true] } } })
83
+ // tilt = 73;
84
+ // centerLng = 120.7;
85
+ // centerLat = 28;
86
+ // @Property('显示省市', {
87
+ // ui: {
88
+ // widget: 'myUrlSelect',
89
+ // allowClear: true,
90
+ // url: '/assets/mapListItem.json',
91
+ // },
92
+ // })
93
+ // cityName = null;
94
+ this.data = [{ lng: 120.7, lat: 28 }];
95
+ this.dataChange = new EventEmitter();
96
+ this.zoomChange = new EventEmitter();
97
+ this.mapClick = new EventEmitter();
98
+ this.destroy$ = new Subject();
99
+ this.init$ = new Promise((resolve) => {
100
+ this.inited = resolve;
101
+ });
102
+ }
103
+ ngOnInit() {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ scaleAdapter(this.scale$, this.destroy$, this.zone, this.elementRef.nativeElement, this.widgetRef);
106
+ this.initMap();
107
+ });
108
+ }
109
+ initMap() {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ yield this.lazy.loadScript('https://api.tianditu.gov.cn/api?v=4.0&tk=acbe009b9b9cc2c8f369b6415fc8dc99');
112
+ if (!this.destroyed) {
113
+ this.zone.runOutsideAngular(() => {
114
+ this.map = new T.Map(this.container.nativeElement, {
115
+ center: this.createLngLat(this.centerLng, this.centerLat),
116
+ zoom: this.zoom,
117
+ });
118
+ // this.mapTypeChange(this.mapTypeValue);
119
+ if (this.edit || this.dragging === false) {
120
+ this.map.disableDrag();
121
+ }
122
+ // if (this.enable3D) {
123
+ // this.map.setTilt(this.tilt == null ? 73 : this.tilt, { noAnimation: true });
124
+ // this.map.setDisplayOptions({ skyColors: ['rgba(0, 0, 0, 0)'] }); // 隐藏天空
125
+ // // const navi3DCtrl = new BMapGL.NavigationControl3D(); // 添加3D控件
126
+ // // this.map.addControl(navi3DCtrl);
127
+ // } else {
128
+ // this.map.disableTilt();
129
+ // this.map.disableRotate();
130
+ // }
131
+ // if (this.showLocationControl) {
132
+ // const options = {
133
+ // // 控件的停靠位置(可选,默认左上角)
134
+ // anchor: BMAP_ANCHOR_TOP_LEFT,
135
+ // // 控件基于停靠位置的偏移量(可选)
136
+ // offset: new BMapGL.Size(20, 20),
137
+ // };
138
+ // let locationControl = new BMapGL.LocationControl(options);
139
+ // // 将控件添加到地图上
140
+ // this.map.addControl(locationControl);
141
+ // }
142
+ // if (this.minMapShow) {
143
+ // const stCtrl = new BMapGL.PanoramaControl();
144
+ // stCtrl.setOffset(new BMapGL.Size(20, 20));
145
+ // this.map.addControl(stCtrl);
146
+ // }
147
+ // if (this.infoWindowBackground) {
148
+ // this.element.style.setProperty('--info-window-background', this.infoWindowBackground);
149
+ // }
150
+ // if (this.infoWindowColor) {
151
+ // this.element.style.setProperty('--info-window-color', this.infoWindowColor);
152
+ // }
153
+ // if (this.infoWindowBorderColor) {
154
+ // this.element.style.setProperty('--info-window-border-color', this.infoWindowBorderColor);
155
+ // }
156
+ this.map.addEventListener('moveend', (event) => {
157
+ const center = this.map.getCenter();
158
+ this.dataChange.emit(this.transferCoordinate(center));
159
+ });
160
+ this.map.addEventListener('click', (event) => {
161
+ console.log(event);
162
+ this.mapClick.emit(this.transferCoordinate(event.latlng));
163
+ });
164
+ this.map.addEventListener('zoomend', (event) => {
165
+ this.zoomChange.emit(this.map.getZoom());
166
+ this.dataChange.emit(this.transferCoordinate(this.map.getCenter()));
167
+ });
168
+ this.mapLoaded(this.map);
169
+ });
170
+ this.inited(this.map);
171
+ }
172
+ });
173
+ }
174
+ ngOnChanges(changes) {
175
+ if (changes.data && this.data[0]) {
176
+ this.centerLng = +this.data[0].lng;
177
+ this.centerLat = +this.data[0].lat;
178
+ this.setCenter(this.centerLng, this.centerLat);
179
+ }
180
+ }
181
+ ngOnDestroy() {
182
+ this.destroy$.next();
183
+ this.destroy$.complete();
184
+ this.destroyed = true;
185
+ }
186
+ createLngLat(lng, lat) {
187
+ if (this.coordinateType === 'BD-09') {
188
+ [lng, lat] = bd09towgs84(lng, lat);
189
+ }
190
+ else if (this.coordinateType === 'GCJ-02') {
191
+ [lng, lat] = gcj02towgs84(lng, lat);
192
+ }
193
+ return new T.LngLat(lng, lat);
194
+ }
195
+ transferCoordinate(latlng) {
196
+ let { lng, lat } = latlng;
197
+ if (this.coordinateType === 'BD-09') {
198
+ [lng, lat] = wgs84tobd09(lng, lat);
199
+ }
200
+ else if (this.coordinateType === 'GCJ-02') {
201
+ [lng, lat] = wgs84togcj02(lng, lat);
202
+ }
203
+ else {
204
+ return latlng;
205
+ }
206
+ return { lng, lat };
207
+ }
208
+ setCenter(lng, lat) {
209
+ if (this.map && lng && lat) {
210
+ const center = this.map.getCenter();
211
+ if (center.lng != lng || center.lat != lat) {
212
+ this.setCenterAndZoom(lng, lat, this.map.getZoom());
213
+ }
214
+ }
215
+ }
216
+ setCenterAndZoom(lng, lat, zoom) {
217
+ const center = this.map.getCenter();
218
+ const currentZoom = this.map.getZoom();
219
+ // 误差范围内不移动,防止背景抖动
220
+ if (zoom != currentZoom || Math.abs(lng - center.lng) > 1e-13 || Math.abs(lat - center.lat) > 1e-7) {
221
+ const point = this.createLngLat(lng, lat);
222
+ this.map.centerAndZoom(point, zoom);
223
+ }
224
+ }
225
+ /**
226
+ * 根据经纬度范围设置中心和缩放等级
227
+ * @param minLng
228
+ * @param maxLng
229
+ * @param minLat
230
+ * @param maxLat
231
+ */
232
+ setRectCenterAndZoom(minLng, maxLng, minLat, maxLat) {
233
+ const pointB = this.createLngLat(minLng, minLat);
234
+ const pointA = this.createLngLat(maxLng, maxLat);
235
+ this.map.setViewport([pointA, pointB]);
236
+ }
237
+ mapLoaded(map) {
238
+ return __awaiter(this, void 0, void 0, function* () {
239
+ // if (this.cityName) {
240
+ // if (this.cityName === '温州') {
241
+ // this.cityName = 'wenzhou';
242
+ // }
243
+ // const json: any = await this.http.get('assets/echarts/map/json/' + this.cityName + '.json').toPromise();
244
+ // const polygonData = [];
245
+ // let encodeScale = json.UTF8Scale || 1024;
246
+ // json.features.forEach(({ geometry }) => {
247
+ // geometry.coordinates = (geometry.coordinates as any[]).forEach((coordinate, i) => {
248
+ // if (geometry.type === 'MultiPolygon') {
249
+ // const coordinates = (coordinate as any[]).map((points, j) => {
250
+ // if (json.UTF8Encoding) {
251
+ // points = this.decodePolygon(points, geometry.encodeOffsets[i][j], encodeScale);
252
+ // }
253
+ // return points;
254
+ // });
255
+ // polygonData.push(coordinates);
256
+ // } else {
257
+ // if (json.UTF8Encoding) {
258
+ // coordinate = this.decodePolygon(coordinate, geometry.encodeOffsets[i], encodeScale);
259
+ // }
260
+ // polygonData.push([coordinate]);
261
+ // }
262
+ // });
263
+ // });
264
+ // const data = [
265
+ // {
266
+ // geometry: {
267
+ // type: 'MultiPolygon',
268
+ // coordinates: polygonData,
269
+ // },
270
+ // },
271
+ // ];
272
+ // var layer = new mapvgl.PolygonLayer({
273
+ // lineColor: this.mapCityColor,
274
+ // lineWidth: this.strokesize || 2,
275
+ // fillColor: this.shadeColor,
276
+ // data,
277
+ // renderOrder: -2,
278
+ // });
279
+ // this.view.addLayer(layer);
280
+ // if (this.mapBackColor && !this.mapBackColor.match(/rgba\(\d+,\d+,\d+,0\)/)) {
281
+ // var maskLayer = new mapvgl.MaskLayer({
282
+ // color: this.mapBackColor,
283
+ // data,
284
+ // renderOrder: -3,
285
+ // });
286
+ // this.view.addLayer(maskLayer);
287
+ // }
288
+ // }
289
+ });
290
+ }
291
+ decodePolygon(coordinate, encodeOffsets, encodeScale) {
292
+ const result = [];
293
+ let prevX = encodeOffsets[0];
294
+ let prevY = encodeOffsets[1];
295
+ for (let i = 0; i < coordinate.length; i += 2) {
296
+ var x = coordinate.charCodeAt(i) - 64;
297
+ var y = coordinate.charCodeAt(i + 1) - 64;
298
+ // ZigZag decoding
299
+ x = (x >> 1) ^ -(x & 1);
300
+ y = (y >> 1) ^ -(y & 1);
301
+ // Delta deocding
302
+ x += prevX;
303
+ y += prevY;
304
+ prevX = x;
305
+ prevY = y;
306
+ // Dequantize
307
+ result.push([x / encodeScale, y / encodeScale]);
308
+ }
309
+ return result;
310
+ }
311
+ };
312
+ TiandituComponent.decorators = [
313
+ { type: Component, args: [{
314
+ selector: 'sc-tianditu',
315
+ template: "<div #container class=\"tianditu\"></div>\n<ng-template *ngFor=\"let child of children\" widget-host [widget]=\"child\"></ng-template>\n",
316
+ styles: [":host{display:block;overflow:hidden;transform-origin:0 0;z-index:0;position:relative}.tianditu,:host{height:100%;width:100%}"]
317
+ },] }
318
+ ];
319
+ TiandituComponent.ctorParameters = () => [
320
+ { type: LazyService },
321
+ { type: ElementRef },
322
+ { type: NgZone },
323
+ { type: ScaleSubject, decorators: [{ type: Optional }] },
324
+ { type: WidgetRef }
325
+ ];
326
+ TiandituComponent.propDecorators = {
327
+ container: [{ type: ViewChild, args: ['container',] }]
328
+ };
329
+ __decorate([
330
+ Property('坐标系', {
331
+ enum: [
332
+ { label: '百度坐标', value: 'BD-09' },
333
+ { label: '高德/腾讯坐标', value: 'GCJ-02' },
334
+ { label: '天地图坐标', value: 'WGS84' },
335
+ ],
336
+ }),
337
+ __metadata("design:type", Object)
338
+ ], TiandituComponent.prototype, "coordinateType", void 0);
339
+ __decorate([
340
+ Property('地图拖动', { type: 'boolean' }),
341
+ __metadata("design:type", Object)
342
+ ], TiandituComponent.prototype, "dragging", void 0);
343
+ __decorate([
344
+ Property('地图缩放', {
345
+ ui: { widget: 'myRange', min: 1, max: 40, step: 1 },
346
+ }),
347
+ __metadata("design:type", Object)
348
+ ], TiandituComponent.prototype, "zoom", void 0);
349
+ __decorate([
350
+ Data({
351
+ properties: {
352
+ lng: { type: 'number', title: '经度' },
353
+ lat: { type: 'number', title: '纬度' },
354
+ },
355
+ }),
356
+ __metadata("design:type", Array)
357
+ ], TiandituComponent.prototype, "data", void 0);
358
+ __decorate([
359
+ DataOutput(['lng', 'lat']),
360
+ Event('中心点改变', {
361
+ params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
362
+ }),
363
+ __metadata("design:type", Object)
364
+ ], TiandituComponent.prototype, "dataChange", void 0);
365
+ __decorate([
366
+ DataOutput('缩放等级'),
367
+ Event('缩放', {
368
+ params: '缩放等级',
369
+ }),
370
+ __metadata("design:type", Object)
371
+ ], TiandituComponent.prototype, "zoomChange", void 0);
372
+ __decorate([
373
+ Event('地图点击', {
374
+ params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
375
+ }),
376
+ __metadata("design:type", Object)
377
+ ], TiandituComponent.prototype, "mapClick", void 0);
378
+ TiandituComponent = __decorate([
379
+ Widget('天地图', {
380
+ children: [
381
+ {
382
+ title: '标记层',
383
+ type: 'sc-tianditu-marker',
384
+ option: {},
385
+ hidden: true,
386
+ hideChild: true,
387
+ },
388
+ ],
389
+ childTypes: ['sc-tianditu-marker'],
390
+ description: 'hasChildItem',
391
+ }),
392
+ __metadata("design:paramtypes", [LazyService,
393
+ ElementRef,
394
+ NgZone,
395
+ ScaleSubject,
396
+ WidgetRef])
397
+ ], TiandituComponent);
398
+ export { TiandituComponent };
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlhbmRpdHUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWVuLXdpZGdldC9zcmMvbGliL3RpYW5kaXR1L3RpYW5kaXR1LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFJTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztJQXNCbEIsaUJBQWlCLFNBQWpCLGlCQUFpQjtJQW9JNUIsWUFDVSxJQUFpQixFQUNqQixVQUFzQixFQUN0QixJQUFZLEVBQ0EsTUFBb0IsRUFDaEMsU0FBb0I7UUFKcEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDQSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFqSTlCLG1CQUFjLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsT0FBTztRQUNQLHdCQUF3QjtRQUN4QiwwQkFBMEI7UUFDMUIsK0dBQStHO1FBQy9HLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIsK0JBQStCO1FBQy9C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O1FBQ2IsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtLQUN2RyxDQUFDOzttREFDaUM7QUFySHhCLGlCQUFpQjtJQWI3QixNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLElBQUk7Z0JBQ1osU0FBUyxFQUFFLElBQUk7YUFDaEI7U0FDRjtRQUNELFVBQVUsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQ2xDLFdBQVcsRUFBRSxjQUFjO0tBQzVCLENBQUM7cUNBc0lnQixXQUFXO1FBQ0wsVUFBVTtRQUNoQixNQUFNO1FBQ1EsWUFBWTtRQUNyQixTQUFTO0dBekluQixpQkFBaUIsQ0F5WDdCO1NBelhZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhenlTZXJ2aWNlIH0gZnJvbSAnQGRlbG9uL3V0aWwnO1xuaW1wb3J0IHsgRGF0YSwgRGF0YU91dHB1dCwgUHJvcGVydHksIFNjYWxlU3ViamVjdCwgV2lkZ2V0LCBXaWRnZXRSZWYsIEV2ZW50LCBEYXRhSW5wdXQgfSBmcm9tICdiYmotd2lkZ2V0LWJhc2UnO1xuaW1wb3J0IHsgc2NhbGVBZGFwdGVyLCBiZDA5dG93Z3M4NCwgZ2NqMDJ0b3dnczg0LCB3Z3M4NHRvZ2NqMDIsIHdnczg0dG9iZDA5IH0gZnJvbSAnYmJqLXNjcmVlbi13aWRnZXQvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmRlY2xhcmUgdmFyIFQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdGlhbmRpdHUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGlhbmRpdHUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aWFuZGl0dS5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+WkqeWcsOWbvicsIHtcbiAgY2hpbGRyZW46IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ+agh+iusOWxgicsXG4gICAgICB0eXBlOiAnc2MtdGlhbmRpdHUtbWFya2VyJyxcbiAgICAgIG9wdGlvbjoge30sXG4gICAgICBoaWRkZW46IHRydWUsXG4gICAgICBoaWRlQ2hpbGQ6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hpbGRUeXBlczogWydzYy10aWFuZGl0dS1tYXJrZXInXSxcbiAgZGVzY3JpcHRpb246ICdoYXNDaGlsZEl0ZW0nLFxufSlcbmV4cG9ydCBjbGFzcyBUaWFuZGl0dUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAUHJvcGVydHkoJ+WdkOagh+ezuycsIHtcbiAgICBlbnVtOiBbXG4gICAgICB7IGxhYmVsOiAn55m+5bqm5Z2Q5qCHJywgdmFsdWU6ICdCRC0wOScgfSxcbiAgICAgIHsgbGFiZWw6ICfpq5jlvrcv6IW+6K6v5Z2Q5qCHJywgdmFsdWU6ICdHQ0otMDInIH0sXG4gICAgICB7IGxhYmVsOiAn5aSp5Zyw5Zu+5Z2Q5qCHJywgdmFsdWU6ICdXR1M4NCcgfSxcbiAgICBdLFxuICB9KVxuICBjb29yZGluYXRlVHlwZSA9ICdCRC0wOSc7XG4gIC8vICBAUHJvcGVydHkoJ+WcsOWbvuexu+WeiycsIHtcbiAgLy8gICAgIGVudW06IE1hcFR5cGVFbnVtLFxuICAvLyAgIH0pXG4gIC8vICAgbWFwVHlwZSA9ICdub3JtYWwnO1xuICAvLyAgIG1hcFR5cGVWYWx1ZTogc3RyaW5nO1xuICAvLyAgIEBQcm9wZXJ0eSgn5LiK5Lyg5qC35byPJywgeyB0eXBlOiAnc3RyaW5nJywgdWk6IHsgd2lkZ2V0OiAnbXlVcGxvYWRBdWRpbycsIHZpc2libGVJZjogeyBtYXBUeXBlOiBbJ2N1c3RvbSddIH0gfSB9KVxuICAvLyAgIHVwbG9hZFN0eWxlOiBzdHJpbmc7XG4gIC8vICAgQFByb3BlcnR5KCfliIfmjaLmjInpkq4nKVxuICAvLyAgIHNob3dNYXBUeXBlUmFkaW86IGJvb2xlYW47XG4gIC8vICAgQFByb3BlcnR5KCflhajmma/lnLDlm74nLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICAvLyAgIG1pbk1hcFNob3cgPSBmYWxzZTtcbiAgLy8gICBAUHJvcGVydHkoJ+aYvuekuuS/oeaBrycsIHtcbiAgLy8gICAgIHVpOiB7IHdpZGdldDogJ3NlbGVjdCcgfSxcbiAgLy8gICAgIGVudW06IFtcbiAgLy8gICAgICAgeyBsYWJlbDogJ+eCueWHuycsIHZhbHVlOiAnY2xpY2snIH0sXG4gIC8vICAgICAgIHsgbGFiZWw6ICfmgqzlgZwnLCB2YWx1ZTogJ21vdXNlb3ZlcicgfSxcbiAgLy8gICAgIF0sXG4gIC8vICAgfSlcbiAgLy8gICBzaG93VHlwZSA9ICdjbGljayc7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpfog4zmma8nLCB7IHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0gfSlcbiAgLy8gICBpbmZvV2luZG93QmFja2dyb3VuZDogc3RyaW5nO1xuICAvLyAgIEBQcm9wZXJ0eSgn5L+h5oGv56qX5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXG4gIC8vICAgaW5mb1dpbmRvd0NvbG9yOiBzdHJpbmc7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpflrr3luqYnKVxuICAvLyAgIGluZm9XaW5kb3dXaWR0aDogbnVtYmVyO1xuICAvLyAgIEBQcm9wZXJ0eSgn5L+h5oGv56qX6auY5bqmJylcbiAgLy8gICBpbmZvV2luZG93SGVpZ2h0OiBudW1iZXI7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpfmqKHmnb8nLCB7IHVpOiB7IHdpZGdldDogJ3RleHRhcmVhJyB9IH0pXG4gIC8vICAgaW5mb1dpbmRvd1RlbXBsYXRlOiBzdHJpbmc7XG4gIC8vICAgQFByb3BlcnR5KCfkv6Hmga/nqpfovrnmoYYnLCB7XG4gIC8vICAgICB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9LFxuICAvLyAgICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vICAgfSlcbiAgLy8gICBpbmZvV2luZG93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgLy8gICBAUHJvcGVydHkoJ+makOiXj+WwluinkicpXG4gIC8vICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RhaWwnKVxuICAvLyAgIGhpZGVJbmZvV2luZG93VGFpbDogYm9vbGVhbjtcbiAgLy8gICBAUHJvcGVydHkoJ+makOiXj+WFs+mXreaMiemSricpXG4gIC8vICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RvcCcpXG4gIC8vICAgaGlkZUluZm9XaW5kb3dUb3A6IGJvb2xlYW47XG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+5ouW5YqoJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgZHJhZ2dpbmcgPSB0cnVlO1xuXG4gIC8vIEBQcm9wZXJ0eSgn6YGu572p6aKc6ImyJywge1xuICAvLyAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXG4gIC8vICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vIH0pXG4gIC8vIHNoYWRlQ29sb3IgPSAnIzAwNDM5NSc7XG4gIC8vIEBQcm9wZXJ0eSgn6IOM5pmv6aKc6ImyJywge1xuICAvLyAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXG4gIC8vICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vIH0pXG4gIC8vIG1hcEJhY2tDb2xvcjogc3RyaW5nO1xuXG4gIC8vIEBQcm9wZXJ0eSgn5aSa6L6557q/6ImyJywge1xuICAvLyAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXG4gIC8vICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXG4gIC8vIH0pXG4gIC8vIG1hcENpdHlDb2xvciA9ICcjNDFiN2ZmJztcbiAgQFByb3BlcnR5KCflnLDlm77nvKnmlL4nLCB7XG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlSYW5nZScsIG1pbjogMSwgbWF4OiA0MCwgc3RlcDogMSB9LFxuICB9KVxuICB6b29tID0gMTI7XG4gIC8vIEBQcm9wZXJ0eSgn6YGu572p6YCP5piOJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICAvLyBmaWxsT3BhY2l0eSA9IDA7XG4gIC8vIEBQcm9wZXJ0eSgn5aSa6L6557q/57KXJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICAvLyBzdHJva2VzaXplID0gMjtcbiAgLy8gQFByb3BlcnR5KCfpu5HlpJzmqKHlvI8nLCB7IHR5cGU6ICdib29sZWFuJywgdWk6IHsgaGlkZGVuOiB0cnVlIH0gfSlcbiAgLy8gbmlnaHRNb2RlID0gZmFsc2U7XG4gIC8vIEBQcm9wZXJ0eSgnM0Top4bop5InKVxuICAvLyBlbmFibGUzRDogYm9vbGVhbjtcbiAgLy8gQFByb3BlcnR5KCflrprkvY3mjqfku7YnKVxuICAvLyBzaG93TG9jYXRpb25Db250cm9sOiBib29sZWFuO1xuICAvLyBAUHJvcGVydHkoJ+WIneWni+inkuW6picsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGUzRDogW3RydWVdIH0gfSB9KVxuICAvLyB0aWx0ID0gNzM7XG5cbiAgLy8gY2VudGVyTG5nID0gMTIwLjc7XG5cbiAgLy8gY2VudGVyTGF0ID0gMjg7XG4gIC8vIEBQcm9wZXJ0eSgn5pi+56S655yB5biCJywge1xuICAvLyAgIHVpOiB7XG4gIC8vICAgICB3aWRnZXQ6ICdteVVybFNlbGVjdCcsXG4gIC8vICAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAvLyAgICAgdXJsOiAnL2Fzc2V0cy9tYXBMaXN0SXRlbS5qc29uJyxcbiAgLy8gICB9LFxuICAvLyB9KVxuICAvLyBjaXR5TmFtZSA9IG51bGw7XG4gIEBEYXRhKHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBsbmc6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57uP5bqmJyB9LFxuICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcbiAgICB9LFxuICB9KVxuICBkYXRhOiBhbnlbXSA9IFt7IGxuZzogMTIwLjcsIGxhdDogMjggfV07XG4gIEBEYXRhT3V0cHV0KFsnbG5nJywgJ2xhdCddKVxuICBARXZlbnQoJ+S4reW/g+eCueaUueWPmCcsIHtcbiAgICBwYXJhbXM6IHsgcHJvcGVydGllczogeyBsbmc6IHsgdGl0bGU6ICfnu4/luqYnLCB0eXBlOiAnbnVtYmVyJyB9LCBsYXQ6IHsgdGl0bGU6ICfnuqzluqYnLCB0eXBlOiAnbnVtYmVyJyB9IH0gfSxcbiAgfSlcbiAgZGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBEYXRhT3V0cHV0KCfnvKnmlL7nrYnnuqcnKVxuICBARXZlbnQoJ+e8qeaUvicsIHtcbiAgICBwYXJhbXM6ICfnvKnmlL7nrYnnuqcnLFxuICB9KVxuICB6b29tQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBFdmVudCgn5Zyw5Zu+54K55Ye7Jywge1xuICAgIHBhcmFtczogeyBwcm9wZXJ0aWVzOiB7IGxuZzogeyB0aXRsZTogJ+e7j+W6picsIHR5cGU6ICdudW1iZXInIH0sIGxhdDogeyB0aXRsZTogJ+e6rOW6picsIHR5cGU6ICdudW1iZXInIH0gfSB9LFxuICB9KVxuICBtYXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKVxuICBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZWRpdDogYm9vbGVhbjtcbiAgY2hpbGRyZW46IGFueVtdO1xuICBtYXA6IGFueTtcbiAgY2VudGVyTG5nOiBudW1iZXI7XG4gIGNlbnRlckxhdDogbnVtYmVyO1xuICBkZXN0cm95ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgaW5pdGVkOiAobWFwOiBhbnkpID0+IHZvaWQ7XG4gIGluaXQkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB0aGlzLmluaXRlZCA9IHJlc29sdmU7XG4gIH0pO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhenk6IExhenlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNjYWxlJDogU2NhbGVTdWJqZWN0LFxuICAgIHByaXZhdGUgd2lkZ2V0UmVmOiBXaWRnZXRSZWYsXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzY2FsZUFkYXB0ZXIodGhpcy5zY2FsZSQsIHRoaXMuZGVzdHJveSQsIHRoaXMuem9uZSwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMud2lkZ2V0UmVmKTtcbiAgICB0aGlzLmluaXRNYXAoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRNYXAoKSB7XG4gICAgYXdhaXQgdGhpcy5sYXp5LmxvYWRTY3JpcHQoJ2h0dHBzOi8vYXBpLnRpYW5kaXR1Lmdvdi5jbi9hcGk/dj00LjAmdGs9YWNiZTAwOWI5YjljYzJjOGYzNjliNjQxNWZjOGRjOTknKTtcbiAgICBpZiAoIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBULk1hcCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgY2VudGVyOiB0aGlzLmNyZWF0ZUxuZ0xhdCh0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpLFxuICAgICAgICAgIHpvb206IHRoaXMuem9vbSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRoaXMubWFwVHlwZUNoYW5nZSh0aGlzLm1hcFR5cGVWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmVkaXQgfHwgdGhpcy5kcmFnZ2luZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlRHJhZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0aGlzLmVuYWJsZTNEKSB7XG4gICAgICAgIC8vICAgdGhpcy5tYXAuc2V0VGlsdCh0aGlzLnRpbHQgPT0gbnVsbCA/IDczIDogdGhpcy50aWx0LCB7IG5vQW5pbWF0aW9uOiB0cnVlIH0pO1xuICAgICAgICAvLyAgIHRoaXMubWFwLnNldERpc3BsYXlPcHRpb25zKHsgc2t5Q29sb3JzOiBbJ3JnYmEoMCwgMCwgMCwgMCknXSB9KTsgLy8g6ZqQ6JeP5aSp56m6XG4gICAgICAgIC8vICAgLy8gY29uc3QgbmF2aTNEQ3RybCA9IG5ldyBCTWFwR0wuTmF2aWdhdGlvbkNvbnRyb2wzRCgpOyAvLyDmt7vliqAzROaOp+S7tlxuICAgICAgICAvLyAgIC8vIHRoaXMubWFwLmFkZENvbnRyb2wobmF2aTNEQ3RybCk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgdGhpcy5tYXAuZGlzYWJsZVRpbHQoKTtcbiAgICAgICAgLy8gICB0aGlzLm1hcC5kaXNhYmxlUm90YXRlKCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHRoaXMuc2hvd0xvY2F0aW9uQ29udHJvbCkge1xuICAgICAgICAvLyAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC8vICAgICAvLyDmjqfku7bnmoTlgZzpnaDkvY3nva7vvIjlj6/pgInvvIzpu5jorqTlt6bkuIrop5LvvIlcbiAgICAgICAgLy8gICAgIGFuY2hvcjogQk1BUF9BTkNIT1JfVE9QX0xFRlQsXG4gICAgICAgIC8vICAgICAvLyDmjqfku7bln7rkuo7lgZzpnaDkvY3nva7nmoTlgY/np7vph4/vvIjlj6/pgInvvIlcbiAgICAgICAgLy8gICAgIG9mZnNldDogbmV3IEJNYXBHTC5TaXplKDIwLCAyMCksXG4gICAgICAgIC8vICAgfTtcbiAgICAgICAgLy8gICBsZXQgbG9jYXRpb25Db250cm9sID0gbmV3IEJNYXBHTC5Mb2NhdGlvbkNvbnRyb2wob3B0aW9ucyk7XG4gICAgICAgIC8vICAgLy8g5bCG5o6n5Lu25re75Yqg5Yiw5Zyw5Zu+5LiKXG4gICAgICAgIC8vICAgdGhpcy5tYXAuYWRkQ29udHJvbChsb2NhdGlvbkNvbnRyb2wpO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLm1pbk1hcFNob3cpIHtcbiAgICAgICAgLy8gICBjb25zdCBzdEN0cmwgPSBuZXcgQk1hcEdMLlBhbm9yYW1hQ29udHJvbCgpO1xuICAgICAgICAvLyAgIHN0Q3RybC5zZXRPZmZzZXQobmV3IEJNYXBHTC5TaXplKDIwLCAyMCkpO1xuICAgICAgICAvLyAgIHRoaXMubWFwLmFkZENvbnRyb2woc3RDdHJsKTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBpZiAodGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCkge1xuICAgICAgICAvLyAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1iYWNrZ3JvdW5kJywgdGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHRoaXMuaW5mb1dpbmRvd0NvbG9yKSB7XG4gICAgICAgIC8vICAgdGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWluZm8td2luZG93LWNvbG9yJywgdGhpcy5pbmZvV2luZG93Q29sb3IpO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLmluZm9XaW5kb3dCb3JkZXJDb2xvcikge1xuICAgICAgICAvLyAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1ib3JkZXItY29sb3InLCB0aGlzLmluZm9XaW5kb3dCb3JkZXJDb2xvcik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignbW92ZWVuZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xuICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMudHJhbnNmZXJDb29yZGluYXRlKGNlbnRlcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgICAgdGhpcy5tYXBDbGljay5lbWl0KHRoaXMudHJhbnNmZXJDb29yZGluYXRlKGV2ZW50LmxhdGxuZykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignem9vbWVuZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuem9vbUNoYW5nZS5lbWl0KHRoaXMubWFwLmdldFpvb20oKSk7XG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy50cmFuc2ZlckNvb3JkaW5hdGUodGhpcy5tYXAuZ2V0Q2VudGVyKCkpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWFwTG9hZGVkKHRoaXMubWFwKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbml0ZWQodGhpcy5tYXApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmIHRoaXMuZGF0YVswXSkge1xuICAgICAgdGhpcy5jZW50ZXJMbmcgPSArdGhpcy5kYXRhWzBdLmxuZztcbiAgICAgIHRoaXMuY2VudGVyTGF0ID0gK3RoaXMuZGF0YVswXS5sYXQ7XG4gICAgICB0aGlzLnNldENlbnRlcih0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICBjcmVhdGVMbmdMYXQobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29vcmRpbmF0ZVR5cGUgPT09ICdCRC0wOScpIHtcbiAgICAgIFtsbmcsIGxhdF0gPSBiZDA5dG93Z3M4NChsbmcsIGxhdCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvb3JkaW5hdGVUeXBlID09PSAnR0NKLTAyJykge1xuICAgICAgW2xuZywgbGF0XSA9IGdjajAydG93Z3M4NChsbmcsIGxhdCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgVC5MbmdMYXQobG5nLCBsYXQpO1xuICB9XG5cbiAgdHJhbnNmZXJDb29yZGluYXRlKGxhdGxuZzogeyBsYXQ6IG51bWJlcjsgbG5nOiBudW1iZXIgfSkge1xuICAgIGxldCB7IGxuZywgbGF0IH0gPSBsYXRsbmc7XG4gICAgaWYgKHRoaXMuY29vcmRpbmF0ZVR5cGUgPT09ICdCRC0wOScpIHtcbiAgICAgIFtsbmcsIGxhdF0gPSB3Z3M4NHRvYmQwOShsbmcsIGxhdCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvb3JkaW5hdGVUeXBlID09PSAnR0NKLTAyJykge1xuICAgICAgW2xuZywgbGF0XSA9IHdnczg0dG9nY2owMihsbmcsIGxhdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsYXRsbmc7XG4gICAgfVxuICAgIHJldHVybiB7IGxuZywgbGF0IH07XG4gIH1cblxuICBzZXRDZW50ZXIobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubWFwICYmIGxuZyAmJiBsYXQpIHtcbiAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xuICAgICAgaWYgKGNlbnRlci5sbmcgIT0gbG5nIHx8IGNlbnRlci5sYXQgIT0gbGF0KSB7XG4gICAgICAgIHRoaXMuc2V0Q2VudGVyQW5kWm9vbShsbmcsIGxhdCwgdGhpcy5tYXAuZ2V0Wm9vbSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDZW50ZXJBbmRab29tKGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gICAgY29uc3QgY2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XG4gICAgY29uc3QgY3VycmVudFpvb20gPSB0aGlzLm1hcC5nZXRab29tKCk7XG4gICAgLy8g6K+v5beu6IyD5Zu05YaF5LiN56e75YqoLOmYsuatouiDjOaZr+aKluWKqFxuICAgIGlmICh6b29tICE9IGN1cnJlbnRab29tIHx8IE1hdGguYWJzKGxuZyAtIGNlbnRlci5sbmcpID4gMWUtMTMgfHwgTWF0aC5hYnMobGF0IC0gY2VudGVyLmxhdCkgPiAxZS03KSB7XG4gICAgICBjb25zdCBwb2ludCA9IHRoaXMuY3JlYXRlTG5nTGF0KGxuZywgbGF0KTtcbiAgICAgIHRoaXMubWFwLmNlbnRlckFuZFpvb20ocG9pbnQsIHpvb20pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLnmja7nu4/nuqzluqbojIPlm7Torr7nva7kuK3lv4PlkoznvKnmlL7nrYnnuqdcbiAgICogQHBhcmFtIG1pbkxuZ1xuICAgKiBAcGFyYW0gbWF4TG5nXG4gICAqIEBwYXJhbSBtaW5MYXRcbiAgICogQHBhcmFtIG1heExhdFxuICAgKi9cbiAgc2V0UmVjdENlbnRlckFuZFpvb20obWluTG5nOiBudW1iZXIsIG1heExuZzogbnVtYmVyLCBtaW5MYXQ6IG51bWJlciwgbWF4TGF0OiBudW1iZXIpIHtcbiAgICBjb25zdCBwb2ludEIgPSB0aGlzLmNyZWF0ZUxuZ0xhdChtaW5MbmcsIG1pbkxhdCk7XG4gICAgY29uc3QgcG9pbnRBID0gdGhpcy5jcmVhdGVMbmdMYXQobWF4TG5nLCBtYXhMYXQpO1xuICAgIHRoaXMubWFwLnNldFZpZXdwb3J0KFtwb2ludEEsIHBvaW50Ql0pO1xuICB9XG5cbiAgYXN5bmMgbWFwTG9hZGVkKG1hcDogYW55KSB7XG4gICAgLy8gaWYgKHRoaXMuY2l0eU5hbWUpIHtcbiAgICAvLyAgIGlmICh0aGlzLmNpdHlOYW1lID09PSAn5rip5beeJykge1xuICAgIC8vICAgICB0aGlzLmNpdHlOYW1lID0gJ3dlbnpob3UnO1xuICAgIC8vICAgfVxuICAgIC8vICAgY29uc3QganNvbjogYW55ID0gYXdhaXQgdGhpcy5odHRwLmdldCgnYXNzZXRzL2VjaGFydHMvbWFwL2pzb24vJyArIHRoaXMuY2l0eU5hbWUgKyAnLmpzb24nKS50b1Byb21pc2UoKTtcbiAgICAvLyAgIGNvbnN0IHBvbHlnb25EYXRhID0gW107XG4gICAgLy8gICBsZXQgZW5jb2RlU2NhbGUgPSBqc29uLlVURjhTY2FsZSB8fCAxMDI0O1xuICAgIC8vICAganNvbi5mZWF0dXJlcy5mb3JFYWNoKCh7IGdlb21ldHJ5IH0pID0+IHtcbiAgICAvLyAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMgPSAoZ2VvbWV0cnkuY29vcmRpbmF0ZXMgYXMgYW55W10pLmZvckVhY2goKGNvb3JkaW5hdGUsIGkpID0+IHtcbiAgICAvLyAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGNvb3JkaW5hdGUgYXMgYW55W10pLm1hcCgocG9pbnRzLCBqKSA9PiB7XG4gICAgLy8gICAgICAgICAgIGlmIChqc29uLlVURjhFbmNvZGluZykge1xuICAgIC8vICAgICAgICAgICAgIHBvaW50cyA9IHRoaXMuZGVjb2RlUG9seWdvbihwb2ludHMsIGdlb21ldHJ5LmVuY29kZU9mZnNldHNbaV1bal0sIGVuY29kZVNjYWxlKTtcbiAgICAvLyAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgICBwb2x5Z29uRGF0YS5wdXNoKGNvb3JkaW5hdGVzKTtcbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgaWYgKGpzb24uVVRGOEVuY29kaW5nKSB7XG4gICAgLy8gICAgICAgICAgIGNvb3JkaW5hdGUgPSB0aGlzLmRlY29kZVBvbHlnb24oY29vcmRpbmF0ZSwgZ2VvbWV0cnkuZW5jb2RlT2Zmc2V0c1tpXSwgZW5jb2RlU2NhbGUpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICAgcG9seWdvbkRhdGEucHVzaChbY29vcmRpbmF0ZV0pO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9KTtcbiAgICAvLyAgIGNvbnN0IGRhdGEgPSBbXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICBnZW9tZXRyeToge1xuICAgIC8vICAgICAgICAgdHlwZTogJ011bHRpUG9seWdvbicsXG4gICAgLy8gICAgICAgICBjb29yZGluYXRlczogcG9seWdvbkRhdGEsXG4gICAgLy8gICAgICAgfSxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIF07XG4gICAgLy8gICB2YXIgbGF5ZXIgPSBuZXcgbWFwdmdsLlBvbHlnb25MYXllcih7XG4gICAgLy8gICAgIGxpbmVDb2xvcjogdGhpcy5tYXBDaXR5Q29sb3IsXG4gICAgLy8gICAgIGxpbmVXaWR0aDogdGhpcy5zdHJva2VzaXplIHx8IDIsXG4gICAgLy8gICAgIGZpbGxDb2xvcjogdGhpcy5zaGFkZUNvbG9yLFxuICAgIC8vICAgICBkYXRhLFxuICAgIC8vICAgICByZW5kZXJPcmRlcjogLTIsXG4gICAgLy8gICB9KTtcbiAgICAvLyAgIHRoaXMudmlldy5hZGRMYXllcihsYXllcik7XG4gICAgLy8gICBpZiAodGhpcy5tYXBCYWNrQ29sb3IgJiYgIXRoaXMubWFwQmFja0NvbG9yLm1hdGNoKC9yZ2JhXFwoXFxkKyxcXGQrLFxcZCssMFxcKS8pKSB7XG4gICAgLy8gICAgIHZhciBtYXNrTGF5ZXIgPSBuZXcgbWFwdmdsLk1hc2tMYXllcih7XG4gICAgLy8gICAgICAgY29sb3I6IHRoaXMubWFwQmFja0NvbG9yLFxuICAgIC8vICAgICAgIGRhdGEsXG4gICAgLy8gICAgICAgcmVuZGVyT3JkZXI6IC0zLFxuICAgIC8vICAgICB9KTtcbiAgICAvLyAgICAgdGhpcy52aWV3LmFkZExheWVyKG1hc2tMYXllcik7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG5cbiAgZGVjb2RlUG9seWdvbihjb29yZGluYXRlOiBzdHJpbmcsIGVuY29kZU9mZnNldHM6IG51bWJlcltdLCBlbmNvZGVTY2FsZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgbGV0IHByZXZYID0gZW5jb2RlT2Zmc2V0c1swXTtcbiAgICBsZXQgcHJldlkgPSBlbmNvZGVPZmZzZXRzWzFdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgeCA9IGNvb3JkaW5hdGUuY2hhckNvZGVBdChpKSAtIDY0O1xuICAgICAgdmFyIHkgPSBjb29yZGluYXRlLmNoYXJDb2RlQXQoaSArIDEpIC0gNjQ7XG4gICAgICAvLyBaaWdaYWcgZGVjb2RpbmdcbiAgICAgIHggPSAoeCA+PiAxKSBeIC0oeCAmIDEpO1xuICAgICAgeSA9ICh5ID4+IDEpIF4gLSh5ICYgMSk7XG4gICAgICAvLyBEZWx0YSBkZW9jZGluZ1xuICAgICAgeCArPSBwcmV2WDtcbiAgICAgIHkgKz0gcHJldlk7XG5cbiAgICAgIHByZXZYID0geDtcbiAgICAgIHByZXZZID0geTtcbiAgICAgIC8vIERlcXVhbnRpemVcbiAgICAgIHJlc3VsdC5wdXNoKFt4IC8gZW5jb2RlU2NhbGUsIHkgLyBlbmNvZGVTY2FsZV0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBhc3luYyBtYXBUeXBlQ2hhbmdlKG1hcFR5cGU6IHN0cmluZykge1xuICAvLyAgIHN3aXRjaCAobWFwVHlwZSkge1xuICAvLyAgICAgY2FzZSAnZGFyayc6XG4gIC8vICAgICAgIGlmICghdGhpcy5kYXJrU3R5bGUpIHtcbiAgLy8gICAgICAgICB0aGlzLmRhcmtTdHlsZSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoJ2Fzc2V0cy9lY2hhcnRzL21hcC9qc29uL2N1c3RvbV9tYXAuanNvbicpLnRvUHJvbWlzZSgpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcbiAgLy8gICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogdGhpcy5kYXJrU3R5bGUgfSk7XG4gIC8vICAgICAgIGJyZWFrO1xuICAvLyAgICAgY2FzZSAnc2F0ZWxsaXRlJzpcbiAgLy8gICAgICAgdGhpcy5tYXAuc2V0TWFwVHlwZShCTUFQX1NBVEVMTElURV9NQVApO1xuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGNhc2UgJ2N1c3RvbSc6XG4gIC8vICAgICAgIGlmICh0aGlzLnVwbG9hZFN0eWxlKSB7XG4gIC8vICAgICAgICAgY29uc3Qgc3R5bGVKc29uID0gYXdhaXQgdGhpcy5odHRwLmdldCh0aGlzLnVwbG9hZFN0eWxlKS50b1Byb21pc2UoKTtcbiAgLy8gICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XG4gIC8vICAgICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbiB9KTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBicmVhaztcbiAgLy8gICAgIGRlZmF1bHQ6XG4gIC8vICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcbiAgLy8gICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogbnVsbCB9KTtcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TiandituComponent } from './tianditu.component';
4
+ import { WidgetBaseModule, WidgetService } from 'bbj-widget-base';
5
+ import { TiandituMarkerComponent } from './tianditu-marker/tianditu-marker.component';
6
+ export class TiandituModule {
7
+ constructor(widgetService) {
8
+ widgetService.register(TiandituComponent, { scaleContent: false });
9
+ widgetService.register(TiandituMarkerComponent);
10
+ }
11
+ }
12
+ TiandituModule.decorators = [
13
+ { type: NgModule, args: [{
14
+ declarations: [TiandituComponent, TiandituMarkerComponent],
15
+ imports: [CommonModule, WidgetBaseModule],
16
+ },] }
17
+ ];
18
+ TiandituModule.ctorParameters = () => [
19
+ { type: WidgetService }
20
+ ];
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlhbmRpdHUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWVuLXdpZGdldC9zcmMvbGliL3RpYW5kaXR1L3RpYW5kaXR1Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFNdEYsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBWSxhQUE0QjtRQUN0QyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsYUFBYSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7OztZQVJGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx1QkFBdUIsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO2FBQzFDOzs7WUFOMEIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGlhbmRpdHVDb21wb25lbnQgfSBmcm9tICcuL3RpYW5kaXR1LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRCYXNlTW9kdWxlLCBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IFRpYW5kaXR1TWFya2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aWFuZGl0dS1tYXJrZXIvdGlhbmRpdHUtbWFya2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RpYW5kaXR1Q29tcG9uZW50LCBUaWFuZGl0dU1hcmtlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdpZGdldEJhc2VNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUaWFuZGl0dU1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UpIHtcbiAgICB3aWRnZXRTZXJ2aWNlLnJlZ2lzdGVyKFRpYW5kaXR1Q29tcG9uZW50LCB7IHNjYWxlQ29udGVudDogZmFsc2UgfSk7XG4gICAgd2lkZ2V0U2VydmljZS5yZWdpc3RlcihUaWFuZGl0dU1hcmtlckNvbXBvbmVudCk7XG4gIH1cbn1cbiJdfQ==
@@ -2,6 +2,7 @@ import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Optional,
2
2
  import { __awaiter } from 'tslib';
3
3
  import { LazyService as LazyService$1 } from '@delon/util';
4
4
  import { LazyService } from '@delon/util/other';
5
+ import { takeUntil, take } from 'rxjs/operators';
5
6
 
6
7
  const SCREEN_WIDGET_CONFIG = new InjectionToken('screen-widget.config');
7
8
 
@@ -106,9 +107,145 @@ BaiduMapService.ctorParameters = () => [
106
107
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SCREEN_WIDGET_CONFIG,] }] }
107
108
  ];
108
109
 
110
+ function scaleAdapter(scale$, destroy$, zone, element, widgetRef) {
111
+ scale$.pipe(takeUntil(destroy$)).subscribe((scale) => {
112
+ const { x: sx, y: sy, scaleContent } = scale;
113
+ const style = element.style;
114
+ if (scaleContent === false) {
115
+ zone.onStable.pipe(take(1)).subscribe(() => {
116
+ const parent = element.parentNode;
117
+ if (parent) {
118
+ const match = /translate\(([-\d.]+)px, ([-\d.]+)px\)/.exec(parent.style.transform);
119
+ if (match) {
120
+ const offsetX = parseFloat(match[1]);
121
+ const offsetY = parseFloat(match[2]);
122
+ style.transform = `translate(${-offsetX}px,${-offsetY}px)`;
123
+ style.height = parent.clientHeight + offsetY + 'px';
124
+ style.width = parent.clientWidth + offsetX + 'px';
125
+ style.padding = `${offsetY}px 0 0 ${offsetX}px`;
126
+ }
127
+ }
128
+ });
129
+ }
130
+ else {
131
+ const { position, size } = widgetRef.widget;
132
+ const { x, y } = position;
133
+ const { width, height } = size;
134
+ style.transform = `translate(${-x}px,${-y}px) scale(${1 / sx},${1 / sy})`;
135
+ style.height = (y + height) * sy + 'px';
136
+ style.width = (x + width) * sx + 'px';
137
+ style.padding = `${y * sy}px 0 0 ${x * sx}px`;
138
+ }
139
+ });
140
+ }
141
+
142
+ //定义一些常量
143
+ var x_PI = (3.14159265358979324 * 3000.0) / 180.0;
144
+ var PI = 3.1415926535897932384626;
145
+ var a = 6378245.0;
146
+ var ee = 0.00669342162296594323;
147
+ /**
148
+ * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
149
+ * 即 百度 转 谷歌、高德
150
+ */
151
+ function bd09togcj02(bd_lon, bd_lat) {
152
+ var x_pi = (3.14159265358979324 * 3000.0) / 180.0;
153
+ var x = bd_lon - 0.0065;
154
+ var y = bd_lat - 0.006;
155
+ var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
156
+ var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
157
+ var gg_lng = z * Math.cos(theta);
158
+ var gg_lat = z * Math.sin(theta);
159
+ return [gg_lng, gg_lat];
160
+ }
161
+ /**
162
+ * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
163
+ * 即谷歌、高德 转 百度
164
+ */
165
+ function gcj02tobd09(lng, lat) {
166
+ var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
167
+ var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
168
+ var bd_lng = z * Math.cos(theta) + 0.0065;
169
+ var bd_lat = z * Math.sin(theta) + 0.006;
170
+ return [bd_lng, bd_lat];
171
+ }
172
+ /**
173
+ * WGS84转GCj02
174
+ */
175
+ function wgs84togcj02(lng, lat) {
176
+ if (out_of_china(lng, lat)) {
177
+ return [lng, lat];
178
+ }
179
+ else {
180
+ var dlat = transformlat(lng - 105.0, lat - 35.0);
181
+ var dlng = transformlng(lng - 105.0, lat - 35.0);
182
+ var radlat = (lat / 180.0) * PI;
183
+ var magic = Math.sin(radlat);
184
+ magic = 1 - ee * magic * magic;
185
+ var sqrtmagic = Math.sqrt(magic);
186
+ dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI);
187
+ dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI);
188
+ var mglat = lat + dlat;
189
+ var mglng = lng + dlng;
190
+ return [mglng, mglat];
191
+ }
192
+ }
193
+ /**
194
+ * GCJ02 转换为 WGS84
195
+ */
196
+ function gcj02towgs84(lng, lat) {
197
+ if (out_of_china(lng, lat)) {
198
+ return [lng, lat];
199
+ }
200
+ else {
201
+ var dlat = transformlat(lng - 105.0, lat - 35.0);
202
+ var dlng = transformlng(lng - 105.0, lat - 35.0);
203
+ var radlat = (lat / 180.0) * PI;
204
+ var magic = Math.sin(radlat);
205
+ magic = 1 - ee * magic * magic;
206
+ var sqrtmagic = Math.sqrt(magic);
207
+ dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI);
208
+ dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI);
209
+ var mglat = lat + dlat;
210
+ var mglng = lng + dlng;
211
+ return [lng * 2 - mglng, lat * 2 - mglat];
212
+ }
213
+ }
214
+ /**
215
+ * BD09 转换为 WGS84
216
+ */
217
+ function bd09towgs84(lng, lat) {
218
+ var rel = bd09togcj02(lng, lat);
219
+ return gcj02towgs84(rel[0], rel[1]);
220
+ }
221
+ function wgs84tobd09(lng, lat) {
222
+ var rel = wgs84togcj02(lng, lat);
223
+ return gcj02tobd09(rel[0], rel[1]);
224
+ }
225
+ function transformlat(lng, lat) {
226
+ var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
227
+ ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0;
228
+ ret += ((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * 2.0) / 3.0;
229
+ ret += ((160.0 * Math.sin((lat / 12.0) * PI) + 320 * Math.sin((lat * PI) / 30.0)) * 2.0) / 3.0;
230
+ return ret;
231
+ }
232
+ function transformlng(lng, lat) {
233
+ var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
234
+ ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0;
235
+ ret += ((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * 2.0) / 3.0;
236
+ ret += ((150.0 * Math.sin((lng / 12.0) * PI) + 300.0 * Math.sin((lng / 30.0) * PI)) * 2.0) / 3.0;
237
+ return ret;
238
+ }
239
+ /**
240
+ * 判断是否在国内,不在国内则不做偏移
241
+ */
242
+ function out_of_china(lng, lat) {
243
+ return lng < 72.004 || lng > 137.8347 || lat < 0.8293 || lat > 55.8271 || false;
244
+ }
245
+
109
246
  /**
110
247
  * Generated bundle index. Do not edit.
111
248
  */
112
249
 
113
- export { BaiduMapService, SCREEN_WIDGET_CONFIG };
250
+ export { BaiduMapService, SCREEN_WIDGET_CONFIG, bd09togcj02, bd09towgs84, gcj02tobd09, gcj02towgs84, scaleAdapter, wgs84tobd09, wgs84togcj02 };
114
251
  //# sourceMappingURL=bbj-screen-widget-core.js.map