@smarterplan/ngx-smarterplan-locations 0.2.21 → 0.2.22
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/esm2020/lib/components/carousel/carousel.component.mjs +27 -27
- package/esm2020/lib/components/chevron/chevron.component.mjs +17 -17
- package/esm2020/lib/components/detail-location/detail-location.component.mjs +154 -154
- package/esm2020/lib/components/form-location/form-location.component.mjs +237 -237
- package/esm2020/lib/components/images/images.component.mjs +90 -90
- package/esm2020/lib/components/locations/locations.component.mjs +141 -141
- package/esm2020/lib/components/locations/map/map-popup/map-popup.component.mjs +65 -65
- package/esm2020/lib/components/locations/map/map.component.mjs +90 -90
- package/esm2020/lib/components/plan-legend/plan-legend.component.mjs +47 -0
- package/esm2020/lib/components/plans/calibration/calibration.component.mjs +468 -468
- package/esm2020/lib/components/plans/edit-plan/edit-plan.component.mjs +324 -324
- package/esm2020/lib/components/plans/plans.component.mjs +210 -210
- package/esm2020/lib/components/tab-navigation/tab-navigation.component.mjs +41 -41
- package/esm2020/lib/components/visits/visits.component.mjs +235 -235
- package/esm2020/lib/components/zones/add-audio-zone/add-audio-zone.component.mjs +230 -230
- package/esm2020/lib/components/zones/add-zone/add-zone.component.mjs +294 -294
- package/esm2020/lib/components/zones/add-zone/selection/selection.component.mjs +76 -76
- package/esm2020/lib/components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component.mjs +414 -413
- package/esm2020/lib/components/zones/zones.component.mjs +236 -232
- package/esm2020/lib/helper.service.mjs +134 -134
- package/esm2020/lib/ngx-smarterplan-location-routing.module.mjs +49 -49
- package/esm2020/lib/ngx-smarterplan-locations.module.mjs +125 -122
- package/esm2020/lib/ngx-smarterplan-locations.service.mjs +13 -13
- package/esm2020/lib/pipes/count-audio-sweeps.pipe.mjs +26 -26
- package/esm2020/lib/radio-button/radio-button.component.mjs +26 -26
- package/esm2020/public-api.mjs +8 -8
- package/esm2020/smarterplan-ngx-smarterplan-locations.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +3676 -3624
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +3520 -3472
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/lib/components/carousel/carousel.component.d.ts +12 -12
- package/lib/components/chevron/chevron.component.d.ts +9 -9
- package/lib/components/detail-location/detail-location.component.d.ts +51 -51
- package/lib/components/form-location/form-location.component.d.ts +45 -45
- package/lib/components/images/images.component.d.ts +28 -28
- package/lib/components/locations/locations.component.d.ts +50 -50
- package/lib/components/locations/map/map-popup/map-popup.component.d.ts +22 -22
- package/lib/components/locations/map/map.component.d.ts +22 -22
- package/lib/components/plan-legend/plan-legend.component.d.ts +14 -0
- package/lib/components/plans/calibration/calibration.component.d.ts +140 -140
- package/lib/components/plans/edit-plan/edit-plan.component.d.ts +55 -55
- package/lib/components/plans/plans.component.d.ts +59 -59
- package/lib/components/tab-navigation/tab-navigation.component.d.ts +13 -13
- package/lib/components/visits/visits.component.d.ts +51 -51
- package/lib/components/zones/add-audio-zone/add-audio-zone.component.d.ts +63 -63
- package/lib/components/zones/add-zone/add-zone.component.d.ts +67 -67
- package/lib/components/zones/add-zone/selection/selection.component.d.ts +44 -44
- package/lib/components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component.d.ts +96 -96
- package/lib/components/zones/zones.component.d.ts +67 -67
- package/lib/helper.service.d.ts +53 -53
- package/lib/ngx-smarterplan-location-routing.module.d.ts +7 -7
- package/lib/ngx-smarterplan-locations.module.d.ts +36 -35
- package/lib/ngx-smarterplan-locations.service.d.ts +6 -6
- package/lib/pipes/count-audio-sweeps.pipe.d.ts +10 -10
- package/lib/radio-button/radio-button.component.d.ts +12 -12
- package/package.json +1 -1
- package/public-api.d.ts +4 -4
- package/smarterplan-ngx-smarterplan-locations.d.ts +5 -5
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SelectionComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
/**Emit a new selection */
|
|
6
|
-
this.onSelectionChanged = new EventEmitter();
|
|
7
|
-
this.isMousedown = false;
|
|
8
|
-
this.selection = { startX: 0, startY: 0, endX: 0, endY: 0 };
|
|
9
|
-
this.selectionRectangle = { top: 0, left: 0, width: 0, height: 0 };
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this.selectionableZone = document.querySelector(".selectZone");
|
|
13
|
-
this.selectionElement = document.querySelector("#selection");
|
|
14
|
-
this.selectionableZone.addEventListener("mousedown", this.mousedown.bind(this));
|
|
15
|
-
this.selectionableZone.addEventListener("mousemove", this.mousemove.bind(this));
|
|
16
|
-
this.selectionableZone.addEventListener("mouseup", this.mouseup.bind(this));
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Update the current selection
|
|
20
|
-
* Will update the selectionRectangle and Selection HTML element
|
|
21
|
-
* @param shouldEmit if true an event will be emitted through onSelectionChanged (true by default)
|
|
22
|
-
*/
|
|
23
|
-
updateSelectionElement(shouldEmit = true) {
|
|
24
|
-
this.selectionRectangle.width = Math.abs(this.selection.endX - this.selection.startX);
|
|
25
|
-
this.selectionRectangle.height = Math.abs(this.selection.endY - this.selection.startY);
|
|
26
|
-
this.selectionRectangle.top = Math.min(this.selection.endY, this.selection.startY);
|
|
27
|
-
this.selectionRectangle.left = Math.min(this.selection.endX, this.selection.startX);
|
|
28
|
-
this.selectionElement.style.top = `${this.selectionRectangle.top}px`;
|
|
29
|
-
this.selectionElement.style.left = `${this.selectionRectangle.left}px`;
|
|
30
|
-
this.selectionElement.style.width = `${this.selectionRectangle.width}px`;
|
|
31
|
-
this.selectionElement.style.height = `${this.selectionRectangle.height}px`;
|
|
32
|
-
if (shouldEmit) {
|
|
33
|
-
this.onSelectionChanged.emit(this.selectionRectangle);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Trigger when mouse is press down on selectionableZone
|
|
38
|
-
* @param event
|
|
39
|
-
*/
|
|
40
|
-
mousedown(event) {
|
|
41
|
-
if (event.button !== 2) { /**Selection with the right click, so ignore all other event */
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
this.isMousedown = true;
|
|
45
|
-
this.selection = { startY: event.clientY, startX: event.clientX, endX: event.clientX, endY: event.clientY };
|
|
46
|
-
this.updateSelectionElement();
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Trigger when mouse is release on selectionableZone
|
|
50
|
-
* @param event
|
|
51
|
-
*/
|
|
52
|
-
mouseup(event) {
|
|
53
|
-
this.isMousedown = false;
|
|
54
|
-
this.selection = { startX: 0, startY: 0, endX: 0, endY: 0 };
|
|
55
|
-
this.updateSelectionElement(false);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Trigger when mouse is moving on selectionableZone
|
|
59
|
-
* @param event
|
|
60
|
-
*/
|
|
61
|
-
mousemove(event) {
|
|
62
|
-
if (this.isMousedown) {
|
|
63
|
-
this.selection.endX = event.clientX;
|
|
64
|
-
this.selection.endY = event.clientY;
|
|
65
|
-
this.updateSelectionElement();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
SelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
-
SelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SelectionComponent, selector: "lib-selection", outputs: { onSelectionChanged: "onSelectionChanged" }, ngImport: i0, template: "<ng-content></ng-content>\n\n<div id=\"selection\"></div>", styles: ["#selection{will-change:top,left,width,height;top:0px;left:0px;position:fixed;display:block;margin-top:0;margin-left:0;width:0px;height:0px;background:rgba(83,182,187,.3);border-radius:.15em;border:.15em solid rgba(83,182,187,.8);pointer-events:none}\n"] });
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SelectionComponent, decorators: [{
|
|
72
|
-
type: Component,
|
|
73
|
-
args: [{ selector: 'lib-selection', template: "<ng-content></ng-content>\n\n<div id=\"selection\"></div>", styles: ["#selection{will-change:top,left,width,height;top:0px;left:0px;position:fixed;display:block;margin-top:0;margin-left:0;width:0px;height:0px;background:rgba(83,182,187,.3);border-radius:.15em;border:.15em solid rgba(83,182,187,.8);pointer-events:none}\n"] }]
|
|
74
|
-
}], ctorParameters: function () { return []; }, propDecorators: { onSelectionChanged: [{
|
|
75
|
-
type: Output
|
|
76
|
-
}] } });
|
|
1
|
+
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SelectionComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
/**Emit a new selection */
|
|
6
|
+
this.onSelectionChanged = new EventEmitter();
|
|
7
|
+
this.isMousedown = false;
|
|
8
|
+
this.selection = { startX: 0, startY: 0, endX: 0, endY: 0 };
|
|
9
|
+
this.selectionRectangle = { top: 0, left: 0, width: 0, height: 0 };
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.selectionableZone = document.querySelector(".selectZone");
|
|
13
|
+
this.selectionElement = document.querySelector("#selection");
|
|
14
|
+
this.selectionableZone.addEventListener("mousedown", this.mousedown.bind(this));
|
|
15
|
+
this.selectionableZone.addEventListener("mousemove", this.mousemove.bind(this));
|
|
16
|
+
this.selectionableZone.addEventListener("mouseup", this.mouseup.bind(this));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Update the current selection
|
|
20
|
+
* Will update the selectionRectangle and Selection HTML element
|
|
21
|
+
* @param shouldEmit if true an event will be emitted through onSelectionChanged (true by default)
|
|
22
|
+
*/
|
|
23
|
+
updateSelectionElement(shouldEmit = true) {
|
|
24
|
+
this.selectionRectangle.width = Math.abs(this.selection.endX - this.selection.startX);
|
|
25
|
+
this.selectionRectangle.height = Math.abs(this.selection.endY - this.selection.startY);
|
|
26
|
+
this.selectionRectangle.top = Math.min(this.selection.endY, this.selection.startY);
|
|
27
|
+
this.selectionRectangle.left = Math.min(this.selection.endX, this.selection.startX);
|
|
28
|
+
this.selectionElement.style.top = `${this.selectionRectangle.top}px`;
|
|
29
|
+
this.selectionElement.style.left = `${this.selectionRectangle.left}px`;
|
|
30
|
+
this.selectionElement.style.width = `${this.selectionRectangle.width}px`;
|
|
31
|
+
this.selectionElement.style.height = `${this.selectionRectangle.height}px`;
|
|
32
|
+
if (shouldEmit) {
|
|
33
|
+
this.onSelectionChanged.emit(this.selectionRectangle);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Trigger when mouse is press down on selectionableZone
|
|
38
|
+
* @param event
|
|
39
|
+
*/
|
|
40
|
+
mousedown(event) {
|
|
41
|
+
if (event.button !== 2) { /**Selection with the right click, so ignore all other event */
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.isMousedown = true;
|
|
45
|
+
this.selection = { startY: event.clientY, startX: event.clientX, endX: event.clientX, endY: event.clientY };
|
|
46
|
+
this.updateSelectionElement();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Trigger when mouse is release on selectionableZone
|
|
50
|
+
* @param event
|
|
51
|
+
*/
|
|
52
|
+
mouseup(event) {
|
|
53
|
+
this.isMousedown = false;
|
|
54
|
+
this.selection = { startX: 0, startY: 0, endX: 0, endY: 0 };
|
|
55
|
+
this.updateSelectionElement(false);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Trigger when mouse is moving on selectionableZone
|
|
59
|
+
* @param event
|
|
60
|
+
*/
|
|
61
|
+
mousemove(event) {
|
|
62
|
+
if (this.isMousedown) {
|
|
63
|
+
this.selection.endX = event.clientX;
|
|
64
|
+
this.selection.endY = event.clientY;
|
|
65
|
+
this.updateSelectionElement();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
SelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
+
SelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SelectionComponent, selector: "lib-selection", outputs: { onSelectionChanged: "onSelectionChanged" }, ngImport: i0, template: "<ng-content></ng-content>\n\n<div id=\"selection\"></div>", styles: ["#selection{will-change:top,left,width,height;top:0px;left:0px;position:fixed;display:block;margin-top:0;margin-left:0;width:0px;height:0px;background:rgba(83,182,187,.3);border-radius:.15em;border:.15em solid rgba(83,182,187,.8);pointer-events:none}\n"] });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SelectionComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'lib-selection', template: "<ng-content></ng-content>\n\n<div id=\"selection\"></div>", styles: ["#selection{will-change:top,left,width,height;top:0px;left:0px;position:fixed;display:block;margin-top:0;margin-left:0;width:0px;height:0px;background:rgba(83,182,187,.3);border-radius:.15em;border:.15em solid rgba(83,182,187,.8);pointer-events:none}\n"] }]
|
|
74
|
+
}], ctorParameters: function () { return []; }, propDecorators: { onSelectionChanged: [{
|
|
75
|
+
type: Output
|
|
76
|
+
}] } });
|
|
77
77
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL3pvbmVzL2FkZC16b25lL3NlbGVjdGlvbi9zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvYWRkLXpvbmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUXhFLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0I7UUFFQSwwQkFBMEI7UUFDaEIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQVE3RCxnQkFBVyxHQUFhLEtBQUssQ0FBQztRQUU5QixjQUFTLEdBQUcsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFFckQsdUJBQWtCLEdBQWUsRUFBQyxHQUFHLEVBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFDLENBQUM7SUFmM0QsQ0FBQztJQWlCZixRQUFRO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLGlC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QUMsRUFBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQWtCO1FBQ3hCLElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBQztZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDcEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDOzsrR0FwRlEsa0JBQWtCO21HQUFsQixrQkFBa0IsNEdDUi9CLDJEQUUwQjsyRkRNYixrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTswRUFRYixrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2hlbHBlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNlbGVjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnN0cnVjdG9yKCl7fVxuXG4gICAgLyoqRW1pdCBhIG5ldyBzZWxlY3Rpb24gKi9cbiAgICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxSZWN0YW5nbGU+KCk7XG5cbiAgICAvKipab25lIHdpY2ggeW91IGNhbiB1c2UgYSBzZWxlY3Rpb24gaW5zaWRlLCBtdXN0IGhhdmUgdGhlIGNsYXNzIFwiLnNlbGVjdFpvbmVcIiAqL1xuICAgIHNlbGVjdGlvbmFibGVab25lIDogSFRNTEVsZW1lbnQ7XG5cbiAgICAvKipIdG1sRWxlbWVudCB1c2UgdG8gZGlzcGxheSB0aGUgc2VsZWN0ZWQgem9uZSAoYmx1ZSkgKi9cbiAgICBzZWxlY3Rpb25FbGVtZW50IDogSFRNTEVsZW1lbnQ7XG5cbiAgICBpc01vdXNlZG93biA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHNlbGVjdGlvbiA9IHtzdGFydFg6IDAsIHN0YXJ0WTogMCwgZW5kWDogMCwgZW5kWTogMH07XG5cbiAgICBzZWxlY3Rpb25SZWN0YW5nbGUgOiBSZWN0YW5nbGUgPSB7dG9wIDogMCwgbGVmdDogMCwgd2lkdGg6IDAsIGhlaWdodDogMH07XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25hYmxlWm9uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2VsZWN0Wm9uZVwiKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3NlbGVjdGlvblwiKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbmFibGVab25lLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLm1vdXNlZG93bi5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbmFibGVab25lLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLm1vdXNlbW92ZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbmFibGVab25lLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsdGhpcy5tb3VzZXVwLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICogV2lsbCB1cGRhdGUgdGhlIHNlbGVjdGlvblJlY3RhbmdsZSBhbmQgU2VsZWN0aW9uIEhUTUwgZWxlbWVudFxuICAgICAqIEBwYXJhbSBzaG91bGRFbWl0IGlmIHRydWUgYW4gZXZlbnQgd2lsbCBiZSBlbWl0dGVkIHRocm91Z2ggb25TZWxlY3Rpb25DaGFuZ2VkICh0cnVlIGJ5IGRlZmF1bHQpXG4gICAgICovXG4gICAgdXBkYXRlU2VsZWN0aW9uRWxlbWVudChzaG91bGRFbWl0PXRydWUpe1xuICAgICAgICB0aGlzLnNlbGVjdGlvblJlY3RhbmdsZS53aWR0aCA9IE1hdGguYWJzKHRoaXMuc2VsZWN0aW9uLmVuZFggLSB0aGlzLnNlbGVjdGlvbi5zdGFydFgpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblJlY3RhbmdsZS5oZWlnaHQgPSBNYXRoLmFicyh0aGlzLnNlbGVjdGlvbi5lbmRZIC0gdGhpcy5zZWxlY3Rpb24uc3RhcnRZKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25SZWN0YW5nbGUudG9wID0gTWF0aC5taW4odGhpcy5zZWxlY3Rpb24uZW5kWSwgdGhpcy5zZWxlY3Rpb24uc3RhcnRZKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25SZWN0YW5nbGUubGVmdCA9IE1hdGgubWluKHRoaXMuc2VsZWN0aW9uLmVuZFgsIHRoaXMuc2VsZWN0aW9uLnN0YXJ0WCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25FbGVtZW50LnN0eWxlLnRvcCA9IGAke3RoaXMuc2VsZWN0aW9uUmVjdGFuZ2xlLnRvcH1weGA7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7dGhpcy5zZWxlY3Rpb25SZWN0YW5nbGUubGVmdH1weGA7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3RoaXMuc2VsZWN0aW9uUmVjdGFuZ2xlLndpZHRofXB4YDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25FbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3RoaXMuc2VsZWN0aW9uUmVjdGFuZ2xlLmhlaWdodH1weGA7XG5cbiAgICAgICAgaWYoc2hvdWxkRW1pdCl7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0aW9uUmVjdGFuZ2xlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXIgd2hlbiBtb3VzZSBpcyBwcmVzcyBkb3duIG9uIHNlbGVjdGlvbmFibGVab25lXG4gICAgICogQHBhcmFtIGV2ZW50IFxuICAgICAqL1xuICAgIG1vdXNlZG93bihldmVudCA6IE1vdXNlRXZlbnQpe1xuICAgICAgICBpZihldmVudC5idXR0b24gIT09IDIpeyAvKipTZWxlY3Rpb24gd2l0aCB0aGUgcmlnaHQgY2xpY2ssIHNvIGlnbm9yZSBhbGwgb3RoZXIgZXZlbnQgKi9cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTW91c2Vkb3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB7c3RhcnRZIDogZXZlbnQuY2xpZW50WSwgc3RhcnRYIDogZXZlbnQuY2xpZW50WCwgZW5kWDpldmVudC5jbGllbnRYLCBlbmRZOmV2ZW50LmNsaWVudFl9O1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkVsZW1lbnQoKTsgICAgICAgIFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXIgd2hlbiBtb3VzZSBpcyByZWxlYXNlIG9uIHNlbGVjdGlvbmFibGVab25lXG4gICAgICogQHBhcmFtIGV2ZW50IFxuICAgICAqL1xuICAgIG1vdXNldXAoZXZlbnQgOiBNb3VzZUV2ZW50KXtcbiAgICAgICAgdGhpcy5pc01vdXNlZG93biA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHtzdGFydFggOjAsIHN0YXJ0WSA6IDAsIGVuZFg6MCwgZW5kWTowfTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25FbGVtZW50KGZhbHNlKTsgICAgICAgIFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXIgd2hlbiBtb3VzZSBpcyBtb3Zpbmcgb24gc2VsZWN0aW9uYWJsZVpvbmVcbiAgICAgKiBAcGFyYW0gZXZlbnQgXG4gICAgICovXG4gICAgbW91c2Vtb3ZlKGV2ZW50IDogTW91c2VFdmVudCl7XG4gICAgICAgIGlmKHRoaXMuaXNNb3VzZWRvd24pe1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZW5kWCA9IGV2ZW50LmNsaWVudFg7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5lbmRZID0gZXZlbnQuY2xpZW50WTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxkaXYgaWQ9XCJzZWxlY3Rpb25cIj48L2Rpdj4iXX0=
|