@dereekb/dbx-form 9.23.15 → 9.23.17
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/mapbox/lib/field/latlng/latlng.field.component.mjs +32 -8
- package/esm2020/mapbox/lib/field/latlng/latlng.field.mjs +4 -3
- package/fesm2015/dereekb-dbx-form-mapbox.mjs +35 -9
- package/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form-mapbox.mjs +34 -9
- package/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/mapbox/esm2020/lib/field/latlng/latlng.field.component.mjs +32 -8
- package/mapbox/esm2020/lib/field/latlng/latlng.field.mjs +4 -3
- package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs +35 -9
- package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs +34 -9
- package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/mapbox/lib/field/latlng/latlng.field.component.d.ts +12 -1
- package/mapbox/lib/field/latlng/latlng.field.d.ts +1 -1
- package/mapbox/package.json +4 -4
- package/package.json +4 -4
|
@@ -27,9 +27,12 @@ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
27
27
|
this.compactClass$ = mapCompactModeObs(this.compact?.mode$, {
|
|
28
28
|
compact: 'dbx-mapbox-input-field-compact'
|
|
29
29
|
});
|
|
30
|
+
this._useCurrentLocationDisabled = new BehaviorSubject(false);
|
|
31
|
+
this.useCurrentLocationDisabled$ = this._useCurrentLocationDisabled.asObservable();
|
|
30
32
|
this._sub = new SubscriptionObject();
|
|
31
33
|
this._geoSub = new SubscriptionObject();
|
|
32
34
|
this._centerSub = new SubscriptionObject();
|
|
35
|
+
this._clickSub = new SubscriptionObject();
|
|
33
36
|
this._zoom = new BehaviorSubject(12);
|
|
34
37
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
35
38
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
@@ -65,9 +68,15 @@ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
65
68
|
get showMap() {
|
|
66
69
|
return this.field.props.showMap ?? true;
|
|
67
70
|
}
|
|
71
|
+
get selectLocationOnMapClick() {
|
|
72
|
+
return this.field.props.selectLocationOnMapClick ?? false;
|
|
73
|
+
}
|
|
68
74
|
get recenterTime() {
|
|
69
75
|
return this.field.props.recenterTime || 10 * 1000;
|
|
70
76
|
}
|
|
77
|
+
get useCurrentLocationDisabled() {
|
|
78
|
+
return this._useCurrentLocationDisabled;
|
|
79
|
+
}
|
|
71
80
|
ngOnInit() {
|
|
72
81
|
const latLngPointConfig = { ...this.field.props.latLngConfig, wrap: this.field.props.latLngConfig?.wrap || false, validate: this.field.props.latLngConfig?.validate || false, precisionRounding: this.field.props.latLngConfig?.precisionRounding ?? 'round' };
|
|
73
82
|
this._latLngStringFunction = latLngStringFunction(latLngPointConfig);
|
|
@@ -96,6 +105,13 @@ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
96
105
|
}
|
|
97
106
|
});
|
|
98
107
|
});
|
|
108
|
+
if (this.selectLocationOnMapClick) {
|
|
109
|
+
this._clickSub.subscription = this.dbxMapboxMapStore.clickEvent$.subscribe((x) => {
|
|
110
|
+
if (x?.type === 'click') {
|
|
111
|
+
this.setValue(x.lngLat);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
99
115
|
}
|
|
100
116
|
if (this.props.readonly) {
|
|
101
117
|
this.formControl.disable();
|
|
@@ -108,12 +124,18 @@ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
108
124
|
this._zoom.complete();
|
|
109
125
|
this._formControlObs.complete();
|
|
110
126
|
this._centerSub.destroy();
|
|
127
|
+
this._clickSub.destroy();
|
|
111
128
|
}
|
|
112
129
|
useCurrentLocation() {
|
|
113
|
-
this._geoSub.subscription = this.geolocation$.pipe(first()).subscribe(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
130
|
+
this._geoSub.subscription = this.geolocation$.pipe(first()).subscribe({
|
|
131
|
+
next: (position) => {
|
|
132
|
+
if (position) {
|
|
133
|
+
const { latitude: lat, longitude: lng } = position.coords;
|
|
134
|
+
this.setValue({ lat, lng });
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
error: () => {
|
|
138
|
+
this._useCurrentLocationDisabled.next(true);
|
|
117
139
|
}
|
|
118
140
|
});
|
|
119
141
|
}
|
|
@@ -135,16 +157,17 @@ DbxFormMapboxLatLngFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
|
|
|
135
157
|
</mgl-map>
|
|
136
158
|
</div>
|
|
137
159
|
<div class="dbx-mapbox-input-field-input">
|
|
138
|
-
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
|
|
160
|
+
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled || (useCurrentLocationDisabled$ | async)">
|
|
139
161
|
<mat-icon>my_location</mat-icon>
|
|
140
162
|
</button>
|
|
141
163
|
<mat-form-field class="dbx-mapbox-input-field-input-field" appearance="standard">
|
|
142
164
|
<mat-label>Coordinates</mat-label>
|
|
143
165
|
<input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
|
|
166
|
+
<mat-hint class="dbx-hint dbx-warn" *ngIf="useCurrentLocationDisabled$ | async">Could not access your current location.</mat-hint>
|
|
144
167
|
</mat-form-field>
|
|
145
168
|
</div>
|
|
146
169
|
</div>
|
|
147
|
-
`, isInline: true, styles: [".dbx-mapbox-input-field .dbx-mapbox-input-field-map{height:220px;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-input{display:flex;align-items:center}.dbx-mapbox-input-field .dbx-mapbox-input-field-input .dbx-mapbox-input-field-input-field{width:calc(100% - 40px)}.dbx-mapbox-input-field-compact .dbx-latlng-field-input{min-height:120px;height:300px;max-height:calc(var(--vh100) * .5)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.DbxMapboxMapDirective, selector: "[dbxMapboxMap]" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MapComponent, selector: "mgl-map", inputs: ["accessToken", "collectResourceTiming", "crossSourceCollisions", "customMapboxApiUrl", "fadeDuration", "hash", "refreshExpiredTiles", "failIfMajorPerformanceCaveat", "bearingSnap", "interactive", "pitchWithRotate", "clickTolerance", "attributionControl", "logoPosition", "maxTileCacheSize", "localIdeographFontFamily", "preserveDrawingBuffer", "trackResize", "transformRequest", "bounds", "antialias", "locale", "minZoom", "maxZoom", "minPitch", "maxPitch", "scrollZoom", "dragRotate", "touchPitch", "touchZoomRotate", "doubleClickZoom", "keyboard", "dragPan", "boxZoom", "style", "center", "maxBounds", "zoom", "bearing", "pitch", "fitBoundsOptions", "renderWorldCopies", "projection", "movingMethod", "movingOptions", "fitBounds", "fitScreenCoordinates", "centerWithPanTo", "panToOptions", "cursorStyle"], outputs: ["mapResize", "mapRemove", "mapMouseDown", "mapMouseUp", "mapMouseMove", "mapClick", "mapDblClick", "mapMouseOver", "mapMouseOut", "mapContextMenu", "mapTouchStart", "mapTouchEnd", "mapTouchMove", "mapTouchCancel", "mapWheel", "moveStart", "move", "moveEnd", "mapDragStart", "mapDrag", "mapDragEnd", "zoomStart", "zoomEvt", "zoomEnd", "rotateStart", "rotate", "rotateEnd", "pitchStart", "pitchEvt", "pitchEnd", "boxZoomStart", "boxZoomEnd", "boxZoomCancel", "webGlContextLost", "webGlContextRestored", "mapLoad", "idle", "render", "mapError", "data", "styleData", "sourceData", "dataLoading", "styleDataLoading", "sourceDataLoading", "styleImageMissing", "resize", "remove", "mouseDown", "mouseUp", "mouseMove", "click", "dblClick", "mouseOver", "mouseOut", "contextMenu", "touchStart", "touchEnd", "touchMove", "touchCancel", "wheel", "dragStart", "drag", "dragEnd", "load", "error"] }, { kind: "component", type: i10.MarkerComponent, selector: "mgl-marker", inputs: ["offset", "anchor", "clickTolerance", "feature", "lngLat", "draggable", "popupShown", "className", "pitchAlignment", "rotationAlignment"], outputs: ["markerDragStart", "markerDragEnd", "markerDrag", "dragStart", "dragEnd", "drag"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
170
|
+
`, isInline: true, styles: [".dbx-mapbox-input-field .dbx-mapbox-input-field-map{height:220px;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-input{display:flex;align-items:center}.dbx-mapbox-input-field .dbx-mapbox-input-field-input .dbx-mapbox-input-field-input-field{width:calc(100% - 40px)}.dbx-mapbox-input-field-compact .dbx-latlng-field-input{min-height:120px;height:300px;max-height:calc(var(--vh100) * .5)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.DbxMapboxMapDirective, selector: "[dbxMapboxMap]" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MapComponent, selector: "mgl-map", inputs: ["accessToken", "collectResourceTiming", "crossSourceCollisions", "customMapboxApiUrl", "fadeDuration", "hash", "refreshExpiredTiles", "failIfMajorPerformanceCaveat", "bearingSnap", "interactive", "pitchWithRotate", "clickTolerance", "attributionControl", "logoPosition", "maxTileCacheSize", "localIdeographFontFamily", "preserveDrawingBuffer", "trackResize", "transformRequest", "bounds", "antialias", "locale", "minZoom", "maxZoom", "minPitch", "maxPitch", "scrollZoom", "dragRotate", "touchPitch", "touchZoomRotate", "doubleClickZoom", "keyboard", "dragPan", "boxZoom", "style", "center", "maxBounds", "zoom", "bearing", "pitch", "fitBoundsOptions", "renderWorldCopies", "projection", "movingMethod", "movingOptions", "fitBounds", "fitScreenCoordinates", "centerWithPanTo", "panToOptions", "cursorStyle"], outputs: ["mapResize", "mapRemove", "mapMouseDown", "mapMouseUp", "mapMouseMove", "mapClick", "mapDblClick", "mapMouseOver", "mapMouseOut", "mapContextMenu", "mapTouchStart", "mapTouchEnd", "mapTouchMove", "mapTouchCancel", "mapWheel", "moveStart", "move", "moveEnd", "mapDragStart", "mapDrag", "mapDragEnd", "zoomStart", "zoomEvt", "zoomEnd", "rotateStart", "rotate", "rotateEnd", "pitchStart", "pitchEvt", "pitchEnd", "boxZoomStart", "boxZoomEnd", "boxZoomCancel", "webGlContextLost", "webGlContextRestored", "mapLoad", "idle", "render", "mapError", "data", "styleData", "sourceData", "dataLoading", "styleDataLoading", "sourceDataLoading", "styleImageMissing", "resize", "remove", "mouseDown", "mouseUp", "mouseMove", "click", "dblClick", "mouseOver", "mouseOut", "contextMenu", "touchStart", "touchEnd", "touchMove", "touchCancel", "wheel", "dragStart", "drag", "dragEnd", "load", "error"] }, { kind: "component", type: i10.MarkerComponent, selector: "mgl-marker", inputs: ["offset", "anchor", "clickTolerance", "feature", "lngLat", "draggable", "popupShown", "className", "pitchAlignment", "rotationAlignment"], outputs: ["markerDragStart", "markerDragEnd", "markerDrag", "dragStart", "dragEnd", "drag"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
148
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, decorators: [{
|
|
149
172
|
type: Component,
|
|
150
173
|
args: [{ template: `
|
|
@@ -155,12 +178,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
155
178
|
</mgl-map>
|
|
156
179
|
</div>
|
|
157
180
|
<div class="dbx-mapbox-input-field-input">
|
|
158
|
-
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
|
|
181
|
+
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled || (useCurrentLocationDisabled$ | async)">
|
|
159
182
|
<mat-icon>my_location</mat-icon>
|
|
160
183
|
</button>
|
|
161
184
|
<mat-form-field class="dbx-mapbox-input-field-input-field" appearance="standard">
|
|
162
185
|
<mat-label>Coordinates</mat-label>
|
|
163
186
|
<input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
|
|
187
|
+
<mat-hint class="dbx-hint dbx-warn" *ngIf="useCurrentLocationDisabled$ | async">Could not access your current location.</mat-hint>
|
|
164
188
|
</mat-form-field>
|
|
165
189
|
</div>
|
|
166
190
|
</div>
|
|
@@ -168,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
168
192
|
}], ctorParameters: function () { return [{ type: i1.CompactContextStore, decorators: [{
|
|
169
193
|
type: Optional
|
|
170
194
|
}] }, { type: i2.GeolocationService }, { type: i3.DbxMapboxMapStore }, { type: i0.NgZone }]; } });
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL2ZpZWxkL2xhdGxuZy9sYXRsbmcuZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekksT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQXVFLG9CQUFvQixFQUFnQixtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBa0QsTUFBTSxlQUFlLENBQUM7QUFDdlAsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFpQyx1Q0FBdUMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7QUE0Q3BJLE1BQU0sT0FBTyxpQ0FBNkgsU0FBUSxTQUE2QjtJQXVDN0ssWUFBaUMsT0FBNEIsRUFBbUIsWUFBZ0MsRUFBVyxpQkFBb0MsRUFBVyxNQUFjO1FBQ3RMLEtBQUssRUFBRSxDQUFDO1FBRHVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQW1CLGlCQUFZLEdBQVosWUFBWSxDQUFv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QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2pGLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBMkI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzsrSEFoSlUsaUNBQWlDO21IQUFqQyxpQ0FBaUMsdUNBSGpDLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxpREFsQjVDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDs0RkFJVSxpQ0FBaUM7a0JBdEI3QyxTQUFTOytCQUNFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCxhQUNVLENBQUMsdUNBQXVDLEVBQUUsQ0FBQzs7MEJBMEN6QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wYWN0Q29udGV4dFN0b3JlLCBtYXBDb21wYWN0TW9kZU9icyB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBza2lwLCBmaXJzdCwgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgbWFwLCBPYnNlcnZhYmxlLCB0aHJvdHRsZVRpbWUsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF5YmUsIExhdExuZ1BvaW50LCBMYXRMbmdQb2ludEZ1bmN0aW9uQ29uZmlnLCBMYXRMbmdTdHJpbmdGdW5jdGlvbiwgbGF0TG5nU3RyaW5nRnVuY3Rpb24sIE1pbGxpc2Vjb25kcywgbGF0TG5nUG9pbnRGdW5jdGlvbiwgaXNEZWZhdWx0TGF0TG5nUG9pbnQsIGlzVmFsaWRMYXRMbmdQb2ludCwgTGF0TG5nUG9pbnRGdW5jdGlvbiwgaXNEZWZhdWx0TGF0TG5nUG9pbnRWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgR2VvbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2dlb2xvY2F0aW9uJztcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gJ21hcGJveC1nbCc7XG5pbXBvcnQgeyBEYnhNYXBib3hNYXBTdG9yZSwgTWFwYm94RWFzZVRvLCBNYXBib3hab29tTGV2ZWwsIHByb3ZpZGVNYXBib3hTdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvbWFwYm94JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtTWFwYm94TGF0TG5nQ29tcG9uZW50RmllbGRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBXaGV0aGVyIG9yIG5vdCB0aGUgc2hvdyB0aGUgbWFwLiBJZiB0aGUgbWFwIGlzIG5vdCBzaG93biwgcmVsaWVzIG9uIHRoZSBjZW50ZXIgb2YgdGhlIHBhcmVudCBtYXAgdG8gZGV0ZXJtaW5lIHBvc2l0aW9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBDYXNlcyB3aGVyZSB0aGlzIHdvdWxkIGJlIHNldCBmYWxzZSBpcyBpZiBhbm90aGVyIG1hcCBpcyBiZWluZyB1c2VkLlxuICAgKi9cbiAgc2hvd01hcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFpvb20gdG8gc3RhcnQgdGhlIG1hcCBhdC4gSWdub3JlZCBpZiB0aGUgc2hvd01hcCBpcyBmYWxzZS5cbiAgICovXG4gIHpvb20/OiBNYXBib3hab29tTGV2ZWw7XG4gIC8qKlxuICAgKiBUaW1lIHVudGlsIHJlY2VudGVyaW5nIG9uIHRoZSBtYXJrZXIuIElmIHRoZSB0aW1lIGlzIDAgdGhlbiB0aGUgcmVjZW50ZXJpbmcgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWNlbnRlclRpbWU/OiBNaWxsaXNlY29uZHM7XG4gIGxhdExuZ0NvbmZpZz86IExhdExuZ1BvaW50RnVuY3Rpb25Db25maWc7XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkXCIgW25nQ2xhc3NdPVwiKGNvbXBhY3RDbGFzcyQgfCBhc3luYykgPz8gJydcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dNYXBcIiBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtbWFwXCI+XG4gICAgICAgIDxtZ2wtbWFwIGRieE1hcGJveE1hcD5cbiAgICAgICAgICA8bWdsLW1hcmtlciBbbG5nTGF0XT1cIihsYXRMbmckIHwgYXN5bmMpIHx8IFswLCAwXVwiIFtkcmFnZ2FibGVdPVwiIWlzUmVhZG9ubHlPckRpc2FibGVkXCIgKG1hcmtlckRyYWdFbmQpPVwib25NYXJrZXJEcmFnRW5kKCRldmVudClcIj48L21nbC1tYXJrZXI+XG4gICAgICAgIDwvbWdsLW1hcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtaW5wdXRcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInVzZUN1cnJlbnRMb2NhdGlvbigpXCIgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlPckRpc2FibGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPm15X2xvY2F0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtaW5wdXQtZmllbGRcIiBhcHBlYXJhbmNlPVwic3RhbmRhcmRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkNvb3JkaW5hdGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtwcm92aWRlTWFwYm94U3RvcmVJZlBhcmVudElzVW5hdmFpbGFibGUoKV0sXG4gIHN0eWxlVXJsczogWycuLi9tYXBib3guZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtTWFwYm94TGF0TG5nRmllbGRDb21wb25lbnQ8VCBleHRlbmRzIERieEZvcm1NYXBib3hMYXRMbmdDb21wb25lbnRGaWVsZFByb3BzID0gRGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHM+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2xhdExuZ1N0cmluZ0Z1bmN0aW9uITogTGF0TG5nU3RyaW5nRnVuY3Rpb247XG4gIHByaXZhdGUgX2xhdExuZ1BvaW50RnVuY3Rpb24hOiBMYXRMbmdQb2ludEZ1bmN0aW9uO1xuXG4gIHJlYWRvbmx5IGNvbXBhY3RDbGFzcyQgPSBtYXBDb21wYWN0TW9kZU9icyh0aGlzLmNvbXBhY3Q/Lm1vZGUkLCB7XG4gICAgY29tcGFjdDogJ2RieC1tYXBib3gtaW5wdXQtZmllbGQtY29tcGFjdCdcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9nZW9TdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2NlbnRlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfem9vbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwYm94Wm9vbUxldmVsPigxMik7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBsYXRMbmckOiBPYnNlcnZhYmxlPExhdExuZ1BvaW50PiA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBtYXAoKHgpID0+IHRoaXMuX2xhdExuZ1BvaW50RnVuY3Rpb24oeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY2VudGVyJDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4gPSB0aGlzLmxhdExuZyQucGlwZShcbiAgICAvKipcbiAgICAgKiBDZW50ZXIgb2JzZXJ2YWJsZSBwYXNzZWQgdG8gdGhlIHN0b3JlLiBEbyBub3QgcGFzcyBpbnZhbGlkIHBvaW50cy5cbiAgICAgKlxuICAgICAqIEFsc28gc2tpcCBhbnkgaW5pdGlhbCAwLDAgdmFsdWVzIHNvIHRoZSBjZW50ZXIgZG9lc24ndCBwb3RlbnRpYWxseSBcIndoaXBcIiBmcm9tIDAsMCB0byBhIGZpbmFsIGxvYWRlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBza2lwV2hpbGU8TGF0TG5nUG9pbnQ+KGlzRGVmYXVsdExhdExuZ1BvaW50KSxcbiAgICBmaWx0ZXIoaXNWYWxpZExhdExuZ1BvaW50KVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb20kID0gdGhpcy5fem9vbS5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSByZWFkb25seSBjb21wYWN0OiBDb21wYWN0Q29udGV4dFN0b3JlLCBwcml2YXRlIHJlYWRvbmx5IGdlb2xvY2F0aW9uJDogR2VvbG9jYXRpb25TZXJ2aWNlLCByZWFkb25seSBkYnhNYXBib3hNYXBTdG9yZTogRGJ4TWFwYm94TWFwU3RvcmUsIHJlYWRvbmx5IG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCB6b29tKCk6IE1hcGJveFpvb21MZXZlbCB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuZmllbGQucHJvcHMuem9vbSB8fCAxMiwgMTgpO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0gYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNob3dNYXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd01hcCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHJlY2VudGVyVGltZSgpOiBNaWxsaXNlY29uZHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnJlY2VudGVyVGltZSB8fCAxMCAqIDEwMDA7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXRMbmdQb2ludENvbmZpZyA9IHsgLi4udGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWcsIHdyYXA6IHRoaXMuZmllbGQucHJvcHMubGF0TG5nQ29uZmlnPy53cmFwIHx8IGZhbHNlLCB2YWxpZGF0ZTogdGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWc/LnZhbGlkYXRlIHx8IGZhbHNlLCBwcmVjaXNpb25Sb3VuZGluZzogdGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWc/LnByZWNpc2lvblJvdW5kaW5nID8/ICdyb3VuZCcgfTtcbiAgICB0aGlzLl9sYXRMbmdTdHJpbmdGdW5jdGlvbiA9IGxhdExuZ1N0cmluZ0Z1bmN0aW9uKGxhdExuZ1BvaW50Q29uZmlnKTtcbiAgICB0aGlzLl9sYXRMbmdQb2ludEZ1bmN0aW9uID0gbGF0TG5nUG9pbnRGdW5jdGlvbihsYXRMbmdQb2ludENvbmZpZyk7XG5cbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX3pvb20ubmV4dCh0aGlzLnpvb20pO1xuXG4gICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRDZW50ZXIodGhpcy5jZW50ZXIkKTtcblxuICAgIGlmICh0aGlzLnNob3dNYXApIHtcbiAgICAgIC8vIFNldCB6b29tIG9ubHkgaWYgc2hvd01hcCBpcyB0cnVlXG4gICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldFpvb20odGhpcy56b29tJCk7XG5cbiAgICAgIC8vIHJlY2VudGVyIHBlcmlvZGljYWxseVxuICAgICAgaWYgKHRoaXMucmVjZW50ZXJUaW1lID4gMCkge1xuICAgICAgICB0aGlzLl9jZW50ZXJTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5jZW50ZXIkLnBpcGUoc2tpcCgxKSwgdGhyb3R0bGVUaW1lKHRoaXMucmVjZW50ZXJUaW1lLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuZWFzZVRvKFxuICAgICAgICAgICAgdGhpcy5jZW50ZXIkLnBpcGUoXG4gICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgIG1hcCgoeCkgPT4gKHsgY2VudGVyOiB4IH0gYXMgTWFwYm94RWFzZVRvKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXNlIHRoZSBjZW50ZXIgb2YgdGhlIG1hcCB0byBzZXQgbG9jYXRpb25zXG4gICAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5jZW50ZXIkLnN1YnNjcmliZSgoY2VudGVyKSA9PiB7XG4gICAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuY2VudGVyR2l2ZW5NYXJnaW4kLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNSZWFkb25seU9yRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoY2VudGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2dlb1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fem9vbS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY2VudGVyU3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHVzZUN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICB0aGlzLl9nZW9TdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5nZW9sb2NhdGlvbiQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKHBvc2l0aW9uKSA9PiB7XG4gICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBsYXRpdHVkZTogbGF0LCBsb25naXR1ZGU6IGxuZyB9ID0gcG9zaXRpb24uY29vcmRzO1xuICAgICAgICB0aGlzLnNldFZhbHVlKHsgbGF0LCBsbmcgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbk1hcmtlckRyYWdFbmQobWFya2VyOiBNYXJrZXIpIHtcbiAgICB0aGlzLnNldFZhbHVlKG1hcmtlci5nZXRMbmdMYXQoKSk7XG4gIH1cblxuICBzZXRWYWx1ZShsYXRMbmc/OiBNYXliZTxMYXRMbmdQb2ludD4pIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGxhdExuZyA/IHRoaXMuX2xhdExuZ1N0cmluZ0Z1bmN0aW9uKGxhdExuZykgOiBsYXRMbmcpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxufVxuIl19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL2ZpZWxkL2xhdGxuZy9sYXRsbmcuZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekksT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQXVFLG9CQUFvQixFQUFnQixtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBa0QsTUFBTSxlQUFlLENBQUM7QUFDdlAsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFpQyx1Q0FBdUMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7QUFtRHBJLE1BQU0sT0FBTyxpQ0FBNkgsU0FBUSxTQUE2QjtJQTJDN0ssWUFBaUMsT0FBNEIsRUFBbUIsWUFBZ0MsRUFBVyxpQkFBb0MsRUFBVyxNQUFjO1FBQ3RMLEtBQUssRUFBRSxDQUFDO1FBRHVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQW1CLGlCQUFZLEdBQVosWUFBWSxDQUFv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QztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUEyQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OytIQTFLVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQyx1Q0FIakMsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLGlEQW5CNUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs0RkFJVSxpQ0FBaUM7a0JBdkI3QyxTQUFTOytCQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsYUFDVSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7OzBCQThDekMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcGFjdENvbnRleHRTdG9yZSwgbWFwQ29tcGFjdE1vZGVPYnMgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgc2tpcCwgZmlyc3QsIEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIG1hcCwgT2JzZXJ2YWJsZSwgdGhyb3R0bGVUaW1lLCBza2lwV2hpbGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBMYXRMbmdQb2ludCwgTGF0TG5nUG9pbnRGdW5jdGlvbkNvbmZpZywgTGF0TG5nU3RyaW5nRnVuY3Rpb24sIGxhdExuZ1N0cmluZ0Z1bmN0aW9uLCBNaWxsaXNlY29uZHMsIGxhdExuZ1BvaW50RnVuY3Rpb24sIGlzRGVmYXVsdExhdExuZ1BvaW50LCBpc1ZhbGlkTGF0TG5nUG9pbnQsIExhdExuZ1BvaW50RnVuY3Rpb24sIGlzRGVmYXVsdExhdExuZ1BvaW50VmFsdWUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEdlb2xvY2F0aW9uU2VydmljZSB9IGZyb20gJ0BuZy13ZWItYXBpcy9nZW9sb2NhdGlvbic7XG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tICdtYXBib3gtZ2wnO1xuaW1wb3J0IHsgRGJ4TWFwYm94TWFwU3RvcmUsIE1hcGJveEVhc2VUbywgTWFwYm94Wm9vbUxldmVsLCBwcm92aWRlTWFwYm94U3RvcmVJZlBhcmVudElzVW5hdmFpbGFibGUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViL21hcGJveCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgV2hldGhlciBvciBub3QgdGhlIHNob3cgdGhlIG1hcC4gSWYgdGhlIG1hcCBpcyBub3Qgc2hvd24sIHJlbGllcyBvbiB0aGUgY2VudGVyIG9mIHRoZSBwYXJlbnQgbWFwIHRvIGRldGVybWluZSBwb3NpdGlvbi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQ2FzZXMgd2hlcmUgdGhpcyB3b3VsZCBiZSBzZXQgZmFsc2UgaXMgaWYgYW5vdGhlciBtYXAgaXMgYmVpbmcgdXNlZC5cbiAgICovXG4gIHNob3dNYXA/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZW5hYmxlIGNsaWNraW5nIHRoZSBtYXAgdG8gc2VsZWN0IHRoZSBsb2NhdGlvbi4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqXG4gICAqIE9ubHkgYXBwbGljYWJsZSB3aGVuIHNob3dNYXAgaXMgZmFsc2UuXG4gICAqL1xuICBzZWxlY3RMb2NhdGlvbk9uTWFwQ2xpY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBab29tIHRvIHN0YXJ0IHRoZSBtYXAgYXQuIElnbm9yZWQgaWYgdGhlIHNob3dNYXAgaXMgZmFsc2UuXG4gICAqL1xuICB6b29tPzogTWFwYm94Wm9vbUxldmVsO1xuICAvKipcbiAgICogVGltZSB1bnRpbCByZWNlbnRlcmluZyBvbiB0aGUgbWFya2VyLiBJZiB0aGUgdGltZSBpcyAwIHRoZW4gdGhlIHJlY2VudGVyaW5nIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcmVjZW50ZXJUaW1lPzogTWlsbGlzZWNvbmRzO1xuICBsYXRMbmdDb25maWc/OiBMYXRMbmdQb2ludEZ1bmN0aW9uQ29uZmlnO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1pbnB1dC1maWVsZFwiIFtuZ0NsYXNzXT1cIihjb21wYWN0Q2xhc3MkIHwgYXN5bmMpID8/ICcnXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93TWFwXCIgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLW1hcFwiPlxuICAgICAgICA8bWdsLW1hcCBkYnhNYXBib3hNYXA+XG4gICAgICAgICAgPG1nbC1tYXJrZXIgW2xuZ0xhdF09XCIobGF0TG5nJCB8IGFzeW5jKSB8fCBbMCwgMF1cIiBbZHJhZ2dhYmxlXT1cIiFpc1JlYWRvbmx5T3JEaXNhYmxlZFwiIChtYXJrZXJEcmFnRW5kKT1cIm9uTWFya2VyRHJhZ0VuZCgkZXZlbnQpXCI+PC9tZ2wtbWFya2VyPlxuICAgICAgICA8L21nbC1tYXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLWlucHV0XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ1c2VDdXJyZW50TG9jYXRpb24oKVwiIFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5T3JEaXNhYmxlZCB8fCAodXNlQ3VycmVudExvY2F0aW9uRGlzYWJsZWQkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPm15X2xvY2F0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtaW5wdXQtZmllbGRcIiBhcHBlYXJhbmNlPVwic3RhbmRhcmRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkNvb3JkaW5hdGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgICAgICAgICA8bWF0LWhpbnQgY2xhc3M9XCJkYngtaGludCBkYngtd2FyblwiICpuZ0lmPVwidXNlQ3VycmVudExvY2F0aW9uRGlzYWJsZWQkIHwgYXN5bmNcIj5Db3VsZCBub3QgYWNjZXNzIHlvdXIgY3VycmVudCBsb2NhdGlvbi48L21hdC1oaW50PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVNYXBib3hTdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSgpXSxcbiAgc3R5bGVVcmxzOiBbJy4uL21hcGJveC5maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1NYXBib3hMYXRMbmdGaWVsZENvbXBvbmVudDxUIGV4dGVuZHMgRGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHMgPSBEYnhGb3JtTWFwYm94TGF0TG5nQ29tcG9uZW50RmllbGRQcm9wcz4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfbGF0TG5nU3RyaW5nRnVuY3Rpb24hOiBMYXRMbmdTdHJpbmdGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfbGF0TG5nUG9pbnRGdW5jdGlvbiE6IExhdExuZ1BvaW50RnVuY3Rpb247XG5cbiAgcmVhZG9ubHkgY29tcGFjdENsYXNzJCA9IG1hcENvbXBhY3RNb2RlT2JzKHRoaXMuY29tcGFjdD8ubW9kZSQsIHtcbiAgICBjb21wYWN0OiAnZGJ4LW1hcGJveC1pbnB1dC1maWVsZC1jb21wYWN0J1xuICB9KTtcblxuICBwcml2YXRlIF91c2VDdXJyZW50TG9jYXRpb25EaXNhYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB1c2VDdXJyZW50TG9jYXRpb25EaXNhYmxlZCQgPSB0aGlzLl91c2VDdXJyZW50TG9jYXRpb25EaXNhYmxlZC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIF9zdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2dlb1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfY2VudGVyU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9jbGlja1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfem9vbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwYm94Wm9vbUxldmVsPigxMik7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBsYXRMbmckOiBPYnNlcnZhYmxlPExhdExuZ1BvaW50PiA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBtYXAoKHgpID0+IHRoaXMuX2xhdExuZ1BvaW50RnVuY3Rpb24oeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY2VudGVyJDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4gPSB0aGlzLmxhdExuZyQucGlwZShcbiAgICAvKipcbiAgICAgKiBDZW50ZXIgb2JzZXJ2YWJsZSBwYXNzZWQgdG8gdGhlIHN0b3JlLiBEbyBub3QgcGFzcyBpbnZhbGlkIHBvaW50cy5cbiAgICAgKlxuICAgICAqIEFsc28gc2tpcCBhbnkgaW5pdGlhbCAwLDAgdmFsdWVzIHNvIHRoZSBjZW50ZXIgZG9lc24ndCBwb3RlbnRpYWxseSBcIndoaXBcIiBmcm9tIDAsMCB0byBhIGZpbmFsIGxvYWRlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBza2lwV2hpbGU8TGF0TG5nUG9pbnQ+KGlzRGVmYXVsdExhdExuZ1BvaW50KSxcbiAgICBmaWx0ZXIoaXNWYWxpZExhdExuZ1BvaW50KVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb20kID0gdGhpcy5fem9vbS5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSByZWFkb25seSBjb21wYWN0OiBDb21wYWN0Q29udGV4dFN0b3JlLCBwcml2YXRlIHJlYWRvbmx5IGdlb2xvY2F0aW9uJDogR2VvbG9jYXRpb25TZXJ2aWNlLCByZWFkb25seSBkYnhNYXBib3hNYXBTdG9yZTogRGJ4TWFwYm94TWFwU3RvcmUsIHJlYWRvbmx5IG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCB6b29tKCk6IE1hcGJveFpvb21MZXZlbCB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuZmllbGQucHJvcHMuem9vbSB8fCAxMiwgMTgpO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0gYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNob3dNYXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd01hcCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlbGVjdExvY2F0aW9uT25NYXBDbGljaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5zZWxlY3RMb2NhdGlvbk9uTWFwQ2xpY2sgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgcmVjZW50ZXJUaW1lKCk6IE1pbGxpc2Vjb25kcyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMucmVjZW50ZXJUaW1lIHx8IDEwICogMTAwMDtcbiAgfVxuXG4gIGdldCB1c2VDdXJyZW50TG9jYXRpb25EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlQ3VycmVudExvY2F0aW9uRGlzYWJsZWQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXRMbmdQb2ludENvbmZpZyA9IHsgLi4udGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWcsIHdyYXA6IHRoaXMuZmllbGQucHJvcHMubGF0TG5nQ29uZmlnPy53cmFwIHx8IGZhbHNlLCB2YWxpZGF0ZTogdGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWc/LnZhbGlkYXRlIHx8IGZhbHNlLCBwcmVjaXNpb25Sb3VuZGluZzogdGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWc/LnByZWNpc2lvblJvdW5kaW5nID8/ICdyb3VuZCcgfTtcbiAgICB0aGlzLl9sYXRMbmdTdHJpbmdGdW5jdGlvbiA9IGxhdExuZ1N0cmluZ0Z1bmN0aW9uKGxhdExuZ1BvaW50Q29uZmlnKTtcbiAgICB0aGlzLl9sYXRMbmdQb2ludEZ1bmN0aW9uID0gbGF0TG5nUG9pbnRGdW5jdGlvbihsYXRMbmdQb2ludENvbmZpZyk7XG5cbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX3pvb20ubmV4dCh0aGlzLnpvb20pO1xuXG4gICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRDZW50ZXIodGhpcy5jZW50ZXIkKTtcblxuICAgIGlmICh0aGlzLnNob3dNYXApIHtcbiAgICAgIC8vIFNldCB6b29tIG9ubHkgaWYgc2hvd01hcCBpcyB0cnVlXG4gICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldFpvb20odGhpcy56b29tJCk7XG5cbiAgICAgIC8vIHJlY2VudGVyIHBlcmlvZGljYWxseVxuICAgICAgaWYgKHRoaXMucmVjZW50ZXJUaW1lID4gMCkge1xuICAgICAgICB0aGlzLl9jZW50ZXJTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5jZW50ZXIkLnBpcGUoc2tpcCgxKSwgdGhyb3R0bGVUaW1lKHRoaXMucmVjZW50ZXJUaW1lLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuZWFzZVRvKFxuICAgICAgICAgICAgdGhpcy5jZW50ZXIkLnBpcGUoXG4gICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgIG1hcCgoeCkgPT4gKHsgY2VudGVyOiB4IH0gYXMgTWFwYm94RWFzZVRvKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXNlIHRoZSBjZW50ZXIgb2YgdGhlIG1hcCB0byBzZXQgbG9jYXRpb25zXG4gICAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5jZW50ZXIkLnN1YnNjcmliZSgoY2VudGVyKSA9PiB7XG4gICAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuY2VudGVyR2l2ZW5NYXJnaW4kLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNSZWFkb25seU9yRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoY2VudGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0TG9jYXRpb25Pbk1hcENsaWNrKSB7XG4gICAgICAgIHRoaXMuX2NsaWNrU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuY2xpY2tFdmVudCQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHg/LnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoeC5sbmdMYXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9nZW9TdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3pvb20uY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NlbnRlclN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fY2xpY2tTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgdXNlQ3VycmVudExvY2F0aW9uKCkge1xuICAgIHRoaXMuX2dlb1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmdlb2xvY2F0aW9uJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocG9zaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgY29uc3QgeyBsYXRpdHVkZTogbGF0LCBsb25naXR1ZGU6IGxuZyB9ID0gcG9zaXRpb24uY29vcmRzO1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoeyBsYXQsIGxuZyB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX3VzZUN1cnJlbnRMb2NhdGlvbkRpc2FibGVkLm5leHQodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbk1hcmtlckRyYWdFbmQobWFya2VyOiBNYXJrZXIpIHtcbiAgICB0aGlzLnNldFZhbHVlKG1hcmtlci5nZXRMbmdMYXQoKSk7XG4gIH1cblxuICBzZXRWYWx1ZShsYXRMbmc/OiBNYXliZTxMYXRMbmdQb2ludD4pIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGxhdExuZyA/IHRoaXMuX2xhdExuZ1N0cmluZ0Z1bmN0aW9uKGxhdExuZykgOiBsYXRMbmcpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE, DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER, formlyField, propsAndConfigForFieldConfig, styleWrapper, validatorsForFieldConfig } from '@dereekb/dbx-form';
|
|
2
2
|
import { LAT_LNG_PATTERN } from '@dereekb/util';
|
|
3
3
|
export function mapboxLatLngField(config = {}) {
|
|
4
|
-
const { key = 'latLng', latLngConfig, showMap, zoom, recenterTime } = config;
|
|
4
|
+
const { key = 'latLng', latLngConfig, showMap, zoom, recenterTime, selectLocationOnMapClick } = config;
|
|
5
5
|
const fieldConfig = {
|
|
6
6
|
...formlyField({
|
|
7
7
|
key,
|
|
@@ -14,7 +14,8 @@ export function mapboxLatLngField(config = {}) {
|
|
|
14
14
|
showMap,
|
|
15
15
|
zoom,
|
|
16
16
|
latLngConfig,
|
|
17
|
-
recenterTime
|
|
17
|
+
recenterTime,
|
|
18
|
+
selectLocationOnMapClick
|
|
18
19
|
})
|
|
19
20
|
}),
|
|
20
21
|
...validatorsForFieldConfig({
|
|
@@ -27,4 +28,4 @@ export function mapboxLatLngField(config = {}) {
|
|
|
27
28
|
classGetter: 'dbx-mat-form-field-disable-underline'
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vbWFwYm94L3NyYy9saWIvZmllbGQvbGF0bG5nL2xhdGxuZy5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsc0NBQXNDLEVBQXVDLFdBQVcsRUFBc0IsNEJBQTRCLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDblEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1oRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBa0MsRUFBRTtJQUNwRSxNQUFNLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkcsTUFBTSxXQUFXLEdBQXNCO1FBQ3JDLEdBQUcsV0FBVyxDQUFDO1lBQ2IsR0FBRztZQUNILElBQUksRUFBRSxzQkFBc0I7WUFDNUIsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLFVBQVU7Z0JBQ2pDLFdBQVcsRUFBRSxzQ0FBc0M7Z0JBQ25ELE9BQU8sRUFBRSxlQUFlO2dCQUN4QixZQUFZLEVBQUUsS0FBSztnQkFDbkIsT0FBTztnQkFDUCxJQUFJO2dCQUNKLFlBQVk7Z0JBQ1osWUFBWTtnQkFDWix3QkFBd0I7YUFDekIsQ0FBQztTQUNILENBQUM7UUFDRixHQUFHLHdCQUF3QixDQUFDO1lBQzFCLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsMENBQTBDO2FBQ3BEO1NBQ0YsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0IsV0FBVyxFQUFFLHNDQUFzQztLQUNwRCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9MQVRfTE5HX1RFWFRfRklFTERfUEFUVEVSTl9NRVNTQUdFLCBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QTEFDRUhPTERFUiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBMYWJlbGVkRmllbGRDb25maWcsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIHN0eWxlV3JhcHBlciwgdmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWZvcm0nO1xuaW1wb3J0IHsgTEFUX0xOR19QQVRURVJOIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHMgfSBmcm9tICcuL2xhdGxuZy5maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveExhdExuZ0ZpZWxkQ29uZmlnIGV4dGVuZHMgT21pdDxMYWJlbGVkRmllbGRDb25maWcsICdrZXknPiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgUGFydGlhbDxGaWVsZENvbmZpZz4sIFBpY2s8RGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHMsICdzaG93TWFwJyB8ICd6b29tJyB8ICdsYXRMbmdDb25maWcnIHwgJ3JlY2VudGVyVGltZScgfCAnc2VsZWN0TG9jYXRpb25Pbk1hcENsaWNrJz4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcGJveExhdExuZ0ZpZWxkKGNvbmZpZzogTWFwYm94TGF0TG5nRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnbGF0TG5nJywgbGF0TG5nQ29uZmlnLCBzaG93TWFwLCB6b29tLCByZWNlbnRlclRpbWUsIHNlbGVjdExvY2F0aW9uT25NYXBDbGljayB9ID0gY29uZmlnO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgLi4uZm9ybWx5RmllbGQoe1xuICAgICAga2V5LFxuICAgICAgdHlwZTogJ21hcGJveC1sYXRsbmctcGlja2VyJyxcbiAgICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gJ0xvY2F0aW9uJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6IERFRkFVTFRfTEFUX0xOR19URVhUX0ZJRUxEX1BMQUNFSE9MREVSLFxuICAgICAgICBwYXR0ZXJuOiBMQVRfTE5HX1BBVFRFUk4sXG4gICAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgIHNob3dNYXAsXG4gICAgICAgIHpvb20sXG4gICAgICAgIGxhdExuZ0NvbmZpZyxcbiAgICAgICAgcmVjZW50ZXJUaW1lLFxuICAgICAgICBzZWxlY3RMb2NhdGlvbk9uTWFwQ2xpY2tcbiAgICAgIH0pXG4gICAgfSksXG4gICAgLi4udmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnKHtcbiAgICAgIG1lc3NhZ2VzOiB7XG4gICAgICAgIHBhdHRlcm46IERFRkFVTFRfTEFUX0xOR19URVhUX0ZJRUxEX1BBVFRFUk5fTUVTU0FHRVxuICAgICAgfVxuICAgIH0pXG4gIH07XG5cbiAgcmV0dXJuIHN0eWxlV3JhcHBlcihmaWVsZENvbmZpZywge1xuICAgIGNsYXNzR2V0dGVyOiAnZGJ4LW1hdC1mb3JtLWZpZWxkLWRpc2FibGUtdW5kZXJsaW5lJ1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -28,7 +28,7 @@ import { FormlyModule } from '@ngx-formly/core';
|
|
|
28
28
|
|
|
29
29
|
function mapboxLatLngField(config = {}) {
|
|
30
30
|
var _a;
|
|
31
|
-
const { key = 'latLng', latLngConfig, showMap, zoom, recenterTime } = config;
|
|
31
|
+
const { key = 'latLng', latLngConfig, showMap, zoom, recenterTime, selectLocationOnMapClick } = config;
|
|
32
32
|
const fieldConfig = Object.assign(Object.assign({}, formlyField(Object.assign({ key, type: 'mapbox-latlng-picker' }, propsAndConfigForFieldConfig(config, {
|
|
33
33
|
label: (_a = config.label) !== null && _a !== void 0 ? _a : 'Location',
|
|
34
34
|
placeholder: DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER,
|
|
@@ -37,7 +37,8 @@ function mapboxLatLngField(config = {}) {
|
|
|
37
37
|
showMap,
|
|
38
38
|
zoom,
|
|
39
39
|
latLngConfig,
|
|
40
|
-
recenterTime
|
|
40
|
+
recenterTime,
|
|
41
|
+
selectLocationOnMapClick
|
|
41
42
|
})))), validatorsForFieldConfig({
|
|
42
43
|
messages: {
|
|
43
44
|
pattern: DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE
|
|
@@ -59,9 +60,12 @@ class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
59
60
|
this.compactClass$ = mapCompactModeObs((_a = this.compact) === null || _a === void 0 ? void 0 : _a.mode$, {
|
|
60
61
|
compact: 'dbx-mapbox-input-field-compact'
|
|
61
62
|
});
|
|
63
|
+
this._useCurrentLocationDisabled = new BehaviorSubject(false);
|
|
64
|
+
this.useCurrentLocationDisabled$ = this._useCurrentLocationDisabled.asObservable();
|
|
62
65
|
this._sub = new SubscriptionObject();
|
|
63
66
|
this._geoSub = new SubscriptionObject();
|
|
64
67
|
this._centerSub = new SubscriptionObject();
|
|
68
|
+
this._clickSub = new SubscriptionObject();
|
|
65
69
|
this._zoom = new BehaviorSubject(12);
|
|
66
70
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
67
71
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
@@ -99,9 +103,16 @@ class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
99
103
|
var _a;
|
|
100
104
|
return (_a = this.field.props.showMap) !== null && _a !== void 0 ? _a : true;
|
|
101
105
|
}
|
|
106
|
+
get selectLocationOnMapClick() {
|
|
107
|
+
var _a;
|
|
108
|
+
return (_a = this.field.props.selectLocationOnMapClick) !== null && _a !== void 0 ? _a : false;
|
|
109
|
+
}
|
|
102
110
|
get recenterTime() {
|
|
103
111
|
return this.field.props.recenterTime || 10 * 1000;
|
|
104
112
|
}
|
|
113
|
+
get useCurrentLocationDisabled() {
|
|
114
|
+
return this._useCurrentLocationDisabled;
|
|
115
|
+
}
|
|
105
116
|
ngOnInit() {
|
|
106
117
|
var _a, _b, _c, _d;
|
|
107
118
|
const latLngPointConfig = Object.assign(Object.assign({}, this.field.props.latLngConfig), { wrap: ((_a = this.field.props.latLngConfig) === null || _a === void 0 ? void 0 : _a.wrap) || false, validate: ((_b = this.field.props.latLngConfig) === null || _b === void 0 ? void 0 : _b.validate) || false, precisionRounding: (_d = (_c = this.field.props.latLngConfig) === null || _c === void 0 ? void 0 : _c.precisionRounding) !== null && _d !== void 0 ? _d : 'round' });
|
|
@@ -131,6 +142,13 @@ class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
131
142
|
}
|
|
132
143
|
});
|
|
133
144
|
});
|
|
145
|
+
if (this.selectLocationOnMapClick) {
|
|
146
|
+
this._clickSub.subscription = this.dbxMapboxMapStore.clickEvent$.subscribe((x) => {
|
|
147
|
+
if ((x === null || x === void 0 ? void 0 : x.type) === 'click') {
|
|
148
|
+
this.setValue(x.lngLat);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
134
152
|
}
|
|
135
153
|
if (this.props.readonly) {
|
|
136
154
|
this.formControl.disable();
|
|
@@ -143,12 +161,18 @@ class DbxFormMapboxLatLngFieldComponent extends FieldType {
|
|
|
143
161
|
this._zoom.complete();
|
|
144
162
|
this._formControlObs.complete();
|
|
145
163
|
this._centerSub.destroy();
|
|
164
|
+
this._clickSub.destroy();
|
|
146
165
|
}
|
|
147
166
|
useCurrentLocation() {
|
|
148
|
-
this._geoSub.subscription = this.geolocation$.pipe(first()).subscribe(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
167
|
+
this._geoSub.subscription = this.geolocation$.pipe(first()).subscribe({
|
|
168
|
+
next: (position) => {
|
|
169
|
+
if (position) {
|
|
170
|
+
const { latitude: lat, longitude: lng } = position.coords;
|
|
171
|
+
this.setValue({ lat, lng });
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
error: () => {
|
|
175
|
+
this._useCurrentLocationDisabled.next(true);
|
|
152
176
|
}
|
|
153
177
|
});
|
|
154
178
|
}
|
|
@@ -170,16 +194,17 @@ DbxFormMapboxLatLngFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
|
|
|
170
194
|
</mgl-map>
|
|
171
195
|
</div>
|
|
172
196
|
<div class="dbx-mapbox-input-field-input">
|
|
173
|
-
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
|
|
197
|
+
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled || (useCurrentLocationDisabled$ | async)">
|
|
174
198
|
<mat-icon>my_location</mat-icon>
|
|
175
199
|
</button>
|
|
176
200
|
<mat-form-field class="dbx-mapbox-input-field-input-field" appearance="standard">
|
|
177
201
|
<mat-label>Coordinates</mat-label>
|
|
178
202
|
<input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
|
|
203
|
+
<mat-hint class="dbx-hint dbx-warn" *ngIf="useCurrentLocationDisabled$ | async">Could not access your current location.</mat-hint>
|
|
179
204
|
</mat-form-field>
|
|
180
205
|
</div>
|
|
181
206
|
</div>
|
|
182
|
-
`, isInline: true, styles: [".dbx-mapbox-input-field .dbx-mapbox-input-field-map{height:220px;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-input{display:flex;align-items:center}.dbx-mapbox-input-field .dbx-mapbox-input-field-input .dbx-mapbox-input-field-input-field{width:calc(100% - 40px)}.dbx-mapbox-input-field-compact .dbx-latlng-field-input{min-height:120px;height:300px;max-height:calc(var(--vh100) * .5)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i2$1.DbxMapboxMapDirective, selector: "[dbxMapboxMap]" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MapComponent, selector: "mgl-map", inputs: ["accessToken", "collectResourceTiming", "crossSourceCollisions", "customMapboxApiUrl", "fadeDuration", "hash", "refreshExpiredTiles", "failIfMajorPerformanceCaveat", "bearingSnap", "interactive", "pitchWithRotate", "clickTolerance", "attributionControl", "logoPosition", "maxTileCacheSize", "localIdeographFontFamily", "preserveDrawingBuffer", "trackResize", "transformRequest", "bounds", "antialias", "locale", "minZoom", "maxZoom", "minPitch", "maxPitch", "scrollZoom", "dragRotate", "touchPitch", "touchZoomRotate", "doubleClickZoom", "keyboard", "dragPan", "boxZoom", "style", "center", "maxBounds", "zoom", "bearing", "pitch", "fitBoundsOptions", "renderWorldCopies", "projection", "movingMethod", "movingOptions", "fitBounds", "fitScreenCoordinates", "centerWithPanTo", "panToOptions", "cursorStyle"], outputs: ["mapResize", "mapRemove", "mapMouseDown", "mapMouseUp", "mapMouseMove", "mapClick", "mapDblClick", "mapMouseOver", "mapMouseOut", "mapContextMenu", "mapTouchStart", "mapTouchEnd", "mapTouchMove", "mapTouchCancel", "mapWheel", "moveStart", "move", "moveEnd", "mapDragStart", "mapDrag", "mapDragEnd", "zoomStart", "zoomEvt", "zoomEnd", "rotateStart", "rotate", "rotateEnd", "pitchStart", "pitchEvt", "pitchEnd", "boxZoomStart", "boxZoomEnd", "boxZoomCancel", "webGlContextLost", "webGlContextRestored", "mapLoad", "idle", "render", "mapError", "data", "styleData", "sourceData", "dataLoading", "styleDataLoading", "sourceDataLoading", "styleImageMissing", "resize", "remove", "mouseDown", "mouseUp", "mouseMove", "click", "dblClick", "mouseOver", "mouseOut", "contextMenu", "touchStart", "touchEnd", "touchMove", "touchCancel", "wheel", "dragStart", "drag", "dragEnd", "load", "error"] }, { kind: "component", type: i10.MarkerComponent, selector: "mgl-marker", inputs: ["offset", "anchor", "clickTolerance", "feature", "lngLat", "draggable", "popupShown", "className", "pitchAlignment", "rotationAlignment"], outputs: ["markerDragStart", "markerDragEnd", "markerDrag", "dragStart", "dragEnd", "drag"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
207
|
+
`, isInline: true, styles: [".dbx-mapbox-input-field .dbx-mapbox-input-field-map{height:220px;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-input{display:flex;align-items:center}.dbx-mapbox-input-field .dbx-mapbox-input-field-input .dbx-mapbox-input-field-input-field{width:calc(100% - 40px)}.dbx-mapbox-input-field-compact .dbx-latlng-field-input{min-height:120px;height:300px;max-height:calc(var(--vh100) * .5)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i2$1.DbxMapboxMapDirective, selector: "[dbxMapboxMap]" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MapComponent, selector: "mgl-map", inputs: ["accessToken", "collectResourceTiming", "crossSourceCollisions", "customMapboxApiUrl", "fadeDuration", "hash", "refreshExpiredTiles", "failIfMajorPerformanceCaveat", "bearingSnap", "interactive", "pitchWithRotate", "clickTolerance", "attributionControl", "logoPosition", "maxTileCacheSize", "localIdeographFontFamily", "preserveDrawingBuffer", "trackResize", "transformRequest", "bounds", "antialias", "locale", "minZoom", "maxZoom", "minPitch", "maxPitch", "scrollZoom", "dragRotate", "touchPitch", "touchZoomRotate", "doubleClickZoom", "keyboard", "dragPan", "boxZoom", "style", "center", "maxBounds", "zoom", "bearing", "pitch", "fitBoundsOptions", "renderWorldCopies", "projection", "movingMethod", "movingOptions", "fitBounds", "fitScreenCoordinates", "centerWithPanTo", "panToOptions", "cursorStyle"], outputs: ["mapResize", "mapRemove", "mapMouseDown", "mapMouseUp", "mapMouseMove", "mapClick", "mapDblClick", "mapMouseOver", "mapMouseOut", "mapContextMenu", "mapTouchStart", "mapTouchEnd", "mapTouchMove", "mapTouchCancel", "mapWheel", "moveStart", "move", "moveEnd", "mapDragStart", "mapDrag", "mapDragEnd", "zoomStart", "zoomEvt", "zoomEnd", "rotateStart", "rotate", "rotateEnd", "pitchStart", "pitchEvt", "pitchEnd", "boxZoomStart", "boxZoomEnd", "boxZoomCancel", "webGlContextLost", "webGlContextRestored", "mapLoad", "idle", "render", "mapError", "data", "styleData", "sourceData", "dataLoading", "styleDataLoading", "sourceDataLoading", "styleImageMissing", "resize", "remove", "mouseDown", "mouseUp", "mouseMove", "click", "dblClick", "mouseOver", "mouseOut", "contextMenu", "touchStart", "touchEnd", "touchMove", "touchCancel", "wheel", "dragStart", "drag", "dragEnd", "load", "error"] }, { kind: "component", type: i10.MarkerComponent, selector: "mgl-marker", inputs: ["offset", "anchor", "clickTolerance", "feature", "lngLat", "draggable", "popupShown", "className", "pitchAlignment", "rotationAlignment"], outputs: ["markerDragStart", "markerDragEnd", "markerDrag", "dragStart", "dragEnd", "drag"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
183
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, decorators: [{
|
|
184
209
|
type: Component,
|
|
185
210
|
args: [{ template: `
|
|
@@ -190,12 +215,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
190
215
|
</mgl-map>
|
|
191
216
|
</div>
|
|
192
217
|
<div class="dbx-mapbox-input-field-input">
|
|
193
|
-
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
|
|
218
|
+
<button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled || (useCurrentLocationDisabled$ | async)">
|
|
194
219
|
<mat-icon>my_location</mat-icon>
|
|
195
220
|
</button>
|
|
196
221
|
<mat-form-field class="dbx-mapbox-input-field-input-field" appearance="standard">
|
|
197
222
|
<mat-label>Coordinates</mat-label>
|
|
198
223
|
<input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
|
|
224
|
+
<mat-hint class="dbx-hint dbx-warn" *ngIf="useCurrentLocationDisabled$ | async">Could not access your current location.</mat-hint>
|
|
199
225
|
</mat-form-field>
|
|
200
226
|
</div>
|
|
201
227
|
</div>
|