@guajiritos/map 17.0.0 → 17.0.1

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.
@@ -7,9 +7,10 @@ export const DEFAULT_MAP_OPTION = {
7
7
  updateWithDoubleClick: false,
8
8
  zoomControl: true,
9
9
  borderRadius: '8px',
10
+ height: '400px',
10
11
  scrollWheelZoom: false,
11
12
  addMarker: false,
12
13
  aloneMarker: true,
13
- scrollable: false
14
+ scrollable: false,
14
15
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1YWppcml0b3MtbWFwL3NyYy9pbnRlcmZhY2VzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0RBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFjO0lBQzNDLEVBQUUsRUFBRSxLQUFLO0lBQ1QsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRCxTQUFTLEVBQUUsSUFBSTtJQUNmLElBQUksRUFBRSxFQUFFO0lBQ1IsZUFBZSxFQUFFLEtBQUs7SUFDdEIscUJBQXFCLEVBQUUsS0FBSztJQUM1QixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsS0FBSztJQUNuQixlQUFlLEVBQUUsS0FBSztJQUN0QixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsSUFBSTtJQUNqQixVQUFVLEVBQUUsS0FBSztDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBNYXAgb3B0aW9ucyBpbnRlcmZhY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwT3B0aW9uIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGNlbnRlcj86IFtudW1iZXIsIG51bWJlcl07XHJcbiAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcclxuICB1cGRhdGVXaXRoQ2xpY2s/OiBib29sZWFuO1xyXG4gIHVwZGF0ZVdpdGhEb3VibGVDbGljaz86IGJvb2xlYW47XHJcbiAgem9vbT86IG51bWJlcjtcclxuICBib3JkZXJSYWRpdXM/OiBzdHJpbmc7XHJcbiAgc2Nyb2xsYWJsZT86IGJvb2xlYW47XHJcbiAgem9vbUNvbnRyb2w/OiBib29sZWFuO1xyXG4gIHNjcm9sbFdoZWVsWm9vbT86IGJvb2xlYW47XHJcbiAgYWRkTWFya2VyPzogYm9vbGVhbjtcclxuICBhbG9uZU1hcmtlcj86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYXJrZXIgaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtlck1hcCB7XHJcbiAgbGF0OiBudW1iZXI7XHJcbiAgbG5nOiBudW1iZXI7XHJcbiAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEljb24gaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xyXG4gIGljb25TaXplOiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIGljb25BbmNob3I6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgaWNvblVybDogc3RyaW5nO1xyXG4gIGljb25SZXRpbmFVcmw/OiBzdHJpbmcsXHJcbiAgc2hhZG93VXJsPzogc3RyaW5nLFxyXG4gIHBvcHVwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcclxuICB0b29sdGlwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcclxuICBzaGFkb3dTaXplPzogW251bWJlciwgbnVtYmVyXSxcclxufVxyXG5cclxuLyoqXHJcbiAqIENpcmNsZSBtYXAgaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENpcmNsZU1hcCB7XHJcbiAgY2VudGVyOiBNYXJrZXJNYXA7XHJcbiAgcmFkaXVzOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9PUFRJT046IE1hcE9wdGlvbiA9IHtcclxuICBpZDogJ21hcCcsXHJcbiAgY2VudGVyOiBbMjMuMTMwMjU3MTg1MjkxMDM2LCAtODIuMzU2MjYyMjA3MDMxMjZdLFxyXG4gIGRyYWdnYWJsZTogdHJ1ZSxcclxuICB6b29tOiAxNSxcclxuICB1cGRhdGVXaXRoQ2xpY2s6IGZhbHNlLFxyXG4gIHVwZGF0ZVdpdGhEb3VibGVDbGljazogZmFsc2UsXHJcbiAgem9vbUNvbnRyb2w6IHRydWUsXHJcbiAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcclxuICBzY3JvbGxXaGVlbFpvb206IGZhbHNlLFxyXG4gIGFkZE1hcmtlcjogZmFsc2UsXHJcbiAgYWxvbmVNYXJrZXI6IHRydWUsXHJcbiAgc2Nyb2xsYWJsZTogZmFsc2VcclxufTsiXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1YWppcml0b3MtbWFwL3NyYy9pbnRlcmZhY2VzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbURBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFjO0lBQzNDLEVBQUUsRUFBRSxLQUFLO0lBQ1QsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRCxTQUFTLEVBQUUsSUFBSTtJQUNmLElBQUksRUFBRSxFQUFFO0lBQ1IsZUFBZSxFQUFFLEtBQUs7SUFDdEIscUJBQXFCLEVBQUUsS0FBSztJQUM1QixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsS0FBSztJQUNuQixNQUFNLEVBQUUsT0FBTztJQUNmLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFVBQVUsRUFBRSxLQUFLO0NBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqXHJcbiAqIE1hcCBvcHRpb25zIGludGVyZmFjZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBNYXBPcHRpb24ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2VudGVyPzogW251bWJlciwgbnVtYmVyXTtcclxuICBkcmFnZ2FibGU/OiBib29sZWFuO1xyXG4gIHVwZGF0ZVdpdGhDbGljaz86IGJvb2xlYW47XHJcbiAgdXBkYXRlV2l0aERvdWJsZUNsaWNrPzogYm9vbGVhbjtcclxuICB6b29tPzogbnVtYmVyO1xyXG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgc2Nyb2xsYWJsZT86IGJvb2xlYW47XHJcbiAgem9vbUNvbnRyb2w/OiBib29sZWFuO1xyXG4gIHNjcm9sbFdoZWVsWm9vbT86IGJvb2xlYW47XHJcbiAgYWRkTWFya2VyPzogYm9vbGVhbjtcclxuICBhbG9uZU1hcmtlcj86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYXJrZXIgaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtlck1hcCB7XHJcbiAgbGF0OiBudW1iZXI7XHJcbiAgbG5nOiBudW1iZXI7XHJcbiAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEljb24gaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xyXG4gIGljb25TaXplOiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIGljb25BbmNob3I6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgaWNvblVybDogc3RyaW5nO1xyXG4gIGljb25SZXRpbmFVcmw/OiBzdHJpbmcsXHJcbiAgc2hhZG93VXJsPzogc3RyaW5nLFxyXG4gIHBvcHVwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcclxuICB0b29sdGlwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcclxuICBzaGFkb3dTaXplPzogW251bWJlciwgbnVtYmVyXSxcclxufVxyXG5cclxuLyoqXHJcbiAqIENpcmNsZSBtYXAgaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENpcmNsZU1hcCB7XHJcbiAgY2VudGVyOiBNYXJrZXJNYXA7XHJcbiAgcmFkaXVzOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9PUFRJT046IE1hcE9wdGlvbiA9IHtcclxuICBpZDogJ21hcCcsXHJcbiAgY2VudGVyOiBbMjMuMTMwMjU3MTg1MjkxMDM2LCAtODIuMzU2MjYyMjA3MDMxMjZdLFxyXG4gIGRyYWdnYWJsZTogdHJ1ZSxcclxuICB6b29tOiAxNSxcclxuICB1cGRhdGVXaXRoQ2xpY2s6IGZhbHNlLFxyXG4gIHVwZGF0ZVdpdGhEb3VibGVDbGljazogZmFsc2UsXHJcbiAgem9vbUNvbnRyb2w6IHRydWUsXHJcbiAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcclxuICBoZWlnaHQ6ICc0MDBweCcsXHJcbiAgc2Nyb2xsV2hlZWxab29tOiBmYWxzZSxcclxuICBhZGRNYXJrZXI6IGZhbHNlLFxyXG4gIGFsb25lTWFya2VyOiB0cnVlLFxyXG4gIHNjcm9sbGFibGU6IGZhbHNlLFxyXG59O1xyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, forwardRef, Input, Output, signal } from '@angular/core';
2
- import { NgStyle, TitleCasePipe } from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
3
  import * as L from 'leaflet';
4
4
  import { icon, LatLng, layerGroup } from 'leaflet';
5
5
  import { MatInputModule } from '@angular/material/input';
@@ -9,11 +9,12 @@ import { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';
9
9
  import { TranslateModule } from '@ngx-translate/core';
10
10
  import { DEFAULT_MAP_OPTION } from '../interfaces/interfaces';
11
11
  import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/material/input";
13
- import * as i2 from "@angular/material/form-field";
14
- import * as i3 from "@angular/forms";
15
- import * as i4 from "@angular/material/icon";
16
- import * as i5 from "@ngx-translate/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@angular/material/input";
14
+ import * as i3 from "@angular/material/form-field";
15
+ import * as i4 from "@angular/forms";
16
+ import * as i5 from "@angular/material/icon";
17
+ import * as i6 from "@ngx-translate/core";
17
18
  export class GuajiritosMap {
18
19
  constructor() {
19
20
  this.layerGroup = new L.LayerGroup();
@@ -26,10 +27,12 @@ export class GuajiritosMap {
26
27
  });
27
28
  this.appearance = 'outline';
28
29
  this.color = 'accent';
29
- this.floatLabel = 'auto';
30
+ this.floatLabel = 'always';
30
31
  this.subscriptSizing = 'dynamic';
31
32
  this.readonly = false;
32
33
  this.hiddenForm = false;
34
+ this.showIcon = true;
35
+ this.showLabel = true;
33
36
  /**
34
37
  * Default marker icon
35
38
  */
@@ -99,7 +102,7 @@ export class GuajiritosMap {
99
102
  if (this.mapMarkers()?.length) {
100
103
  this.layerGroup.clearLayers();
101
104
  this.mapMarkers().forEach((m) => {
102
- this.addMarker(m);
105
+ this.addMarker(m, false);
103
106
  });
104
107
  }
105
108
  }
@@ -186,8 +189,9 @@ export class GuajiritosMap {
186
189
  /**
187
190
  * Add marker to map
188
191
  * @param marker - Point of the map
192
+ * @param canAdd
189
193
  */
190
- addMarker(marker) {
194
+ addMarker(marker, canAdd = true) {
191
195
  if (this.map && marker?.lat && marker?.lng) {
192
196
  const markerAdd = L.marker({
193
197
  lat: marker.lat,
@@ -200,10 +204,13 @@ export class GuajiritosMap {
200
204
  iconAnchor: this.icon?.iconAnchor,
201
205
  iconUrl: this.icon?.iconUrl
202
206
  })).addTo(this.layerGroup);
203
- this.mapMarkers.update((markers) => {
204
- markers.push(marker);
205
- return markers;
206
- });
207
+ if (canAdd) {
208
+ this.mapMarkers.update((markers) => {
209
+ markers.push(marker);
210
+ console.log(markers?.length);
211
+ return markers;
212
+ });
213
+ }
207
214
  markerAdd.on('dragend', () => {
208
215
  this.changeCenter(markerAdd.getLatLng());
209
216
  this.markerDragend.emit(markerAdd.getLatLng());
@@ -213,7 +220,6 @@ export class GuajiritosMap {
213
220
  /**
214
221
  * Put the map center on marker position
215
222
  * @param marker - Point of the map
216
- * @public
217
223
  */
218
224
  changeCenter(marker) {
219
225
  this.form.patchValue({
@@ -301,30 +307,29 @@ export class GuajiritosMap {
301
307
  this.initMap();
302
308
  }
303
309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
304
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded" }, providers: [
310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded" }, providers: [
305
311
  {
306
312
  provide: NG_VALUE_ACCESSOR,
307
313
  useExisting: forwardRef(() => GuajiritosMap),
308
314
  multi: true
309
315
  }
310
- ], ngImport: i0, template: "<div class=\"map-container\">\n @if (!hiddenForm && options().aloneMarker) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\" [ngStyle]=\"{'border-radius': options().borderRadius}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
316
+ ], ngImport: i0, template: "<div class=\"map-container\">\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
311
317
  }
312
318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: GuajiritosMap, decorators: [{
313
319
  type: Component,
314
320
  args: [{ selector: 'guajiritos-map', standalone: true, imports: [
321
+ CommonModule,
315
322
  MatInputModule,
316
323
  ReactiveFormsModule,
317
324
  MatIconModule,
318
- TranslateModule,
319
- TitleCasePipe,
320
- NgStyle
325
+ TranslateModule
321
326
  ], providers: [
322
327
  {
323
328
  provide: NG_VALUE_ACCESSOR,
324
329
  useExisting: forwardRef(() => GuajiritosMap),
325
330
  multi: true
326
331
  }
327
- ], template: "<div class=\"map-container\">\n @if (!hiddenForm && options().aloneMarker) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\" [ngStyle]=\"{'border-radius': options().borderRadius}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"] }]
332
+ ], template: "<div class=\"map-container\">\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"] }]
328
333
  }], propDecorators: { appearance: [{
329
334
  type: Input
330
335
  }], color: [{
@@ -337,6 +342,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
337
342
  type: Input
338
343
  }], hiddenForm: [{
339
344
  type: Input
345
+ }], showIcon: [{
346
+ type: Input
347
+ }], showLabel: [{
348
+ type: Input
340
349
  }], optionsMap: [{
341
350
  type: Input
342
351
  }], circleConfig: [{
@@ -352,4 +361,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
352
361
  }], markerAdded: [{
353
362
  type: Output
354
363
  }] } });
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhamlyaXRvcy1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VhamlyaXRvcy1tYXAvc3JjL2xpYi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFqaXJpdG9zLW1hcC9zcmMvbGliL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxDQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFvQixVQUFVLEVBQW1CLE1BQU0sU0FBUyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBYSxrQkFBa0IsRUFBOEIsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQXVCckcsTUFBTSxPQUFPLGFBQWE7SUFyQjFCO1FBd0JVLGVBQVUsR0FBZSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QyxlQUFVLEdBQWdDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVyRCxZQUFPLEdBQThCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hFLFdBQU0sR0FBOEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpELFNBQUksR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQztZQUNuRCxRQUFRLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pGLFNBQVMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0YsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUEyQixTQUFTLENBQUM7UUFDL0MsVUFBSyxHQUFpQixRQUFRLENBQUM7UUFDL0IsZUFBVSxHQUFtQixNQUFNLENBQUM7UUFDcEMsb0JBQWUsR0FBb0IsU0FBUyxDQUFDO1FBRTdDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQWlDckM7O1dBRUc7UUFDTSxTQUFJLEdBQVM7WUFDcEIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sRUFBRSx5QkFBeUI7U0FDbkMsQ0FBQztRQXFCRjs7V0FFRztRQUNPLGtCQUFhLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkU7O1dBRUc7UUFDTyxnQkFBVyxHQUE0QixJQUFJLFlBQVksRUFBRSxDQUFDO0tBeU9yRTthQWhVZ0Isd0JBQW1CLEdBQWtCLElBQUksT0FBTyxFQUFFLEFBQS9CLENBQWdDO0lBcUJsRTs7T0FFRztJQUNILElBQWEsVUFBVSxDQUFDLE9BQTJCO1FBQ2pELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDZixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLEdBQUcsT0FBTzthQUNYLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBQUEsQ0FBQztJQUVGOztPQUVHO0lBQ0gsSUFBYSxZQUFZLENBQUMsTUFBaUI7UUFDekMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXhCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBaUI7UUFDbkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQVdEOzs7T0FHRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQW9CO1FBQ3ZDLElBQUksT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRztnQkFDckMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7YUFDdkMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQVdEOztPQUVHO0lBQ0ssV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFZLEVBQVEsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssT0FBTztRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBMEIsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNO1lBQy9FLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxJQUFJLGtCQUFrQixDQUFDLFNBQVM7WUFDbkUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSTtZQUNyRCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXO1lBQzFFLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsZUFBZSxJQUFJLGtCQUFrQixDQUFDLGVBQWU7WUFDdEYsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxDQUFDLENBQUMsU0FBUyxDQUFDLHNEQUFzRCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBc0I7Z0JBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUNyRyxNQUFNLFNBQVMsR0FBYzt3QkFDM0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRzt3QkFDakIsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRzt3QkFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLElBQUksa0JBQWtCLENBQUMsU0FBUztxQkFDckUsQ0FBQztvQkFFRixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzt3QkFDbkIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRzt3QkFDdEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRztxQkFDeEIsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBRTFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxlQUFlLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDOUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDL0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFvQixFQUFlLEVBQUU7b0JBQzNELElBQUksT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzt3QkFDckIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7b0JBQ3ZCLENBQUM7b0JBQ0QsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFNBQVMsQ0FBQyxNQUFpQixFQUFFLE1BQWM7UUFDakQsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFNBQVMsQ0FBQyxNQUFpQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDM0MsTUFBTSxTQUFTLEdBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDbkMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO2dCQUNmLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzthQUNoQixFQUFFO2dCQUNELFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUk7Z0JBQ3BDLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDLE9BQU8sQ0FDUixJQUFJLENBQUM7Z0JBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUTtnQkFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVTtnQkFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTzthQUM1QixDQUFDLENBQ0gsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBb0IsRUFBZSxFQUFFO2dCQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztZQUVILFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQVMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsTUFBZ0I7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRztTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxDQUFNO0lBQ3RCLENBQUM7SUFBQSxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7YUFDMUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7YUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1RyxTQUFTLENBQUMsQ0FBQyxNQUErQyxFQUFRLEVBQUU7WUFDbkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXRDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUNiLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzt3QkFDNUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUM3QixTQUFTLEVBQUUsSUFBSTtxQkFDaEIsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQWhVVSxhQUFhO2tHQUFiLGFBQWEsc1pBUmI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDNUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ2xESCxxMUNBc0JBLHFPRGVJLGNBQWMsbzFCQUNkLG1CQUFtQixtMkJBQ25CLGFBQWEsbUxBQ2IsZUFBZSx1RkFDZixhQUFhLGtEQUNiLE9BQU87OzJGQVVFLGFBQWE7a0JBckJ6QixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsT0FBTztxQkFDVixhQUNZO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBZ0JRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFZTyxZQUFZO3NCQUF4QixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQVVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBa0JJLGFBQWE7c0JBQXRCLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgV3JpdGFibGVTaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdTdHlsZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XHJcbmltcG9ydCB7IGljb24sIExhdExuZywgTGF0TG5nRXhwcmVzc2lvbiwgbGF5ZXJHcm91cCwgTGF5ZXJHcm91cCwgTWFwIH0gZnJvbSAnbGVhZmxldCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDaXJjbGVNYXAsIERFRkFVTFRfTUFQX09QVElPTiwgSWNvbiwgTWFwT3B0aW9uLCBNYXJrZXJNYXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLW1hcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIFRpdGxlQ2FzZVBpcGUsXHJcbiAgICBOZ1N0eWxlXHJcbl0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHdWFqaXJpdG9zTWFwKSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdWFqaXJpdG9zTWFwIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX29ic2VydmFibGVTdWJqZWN0JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBtYXA6IE1hcDtcclxuICBwcml2YXRlIGxheWVyR3JvdXA6IExheWVyR3JvdXAgPSBuZXcgTC5MYXllckdyb3VwKCk7XHJcbiAgcHVibGljIG1hcE1hcmtlcnM6IFdyaXRhYmxlU2lnbmFsPE1hcmtlck1hcFtdPiA9IHNpZ25hbChbXSk7XHJcblxyXG4gIHB1YmxpYyBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxNYXBPcHRpb24+ID0gc2lnbmFsKERFRkFVTFRfTUFQX09QVElPTik7XHJcbiAgcHVibGljIGNpcmNsZTogV3JpdGFibGVTaWduYWw8Q2lyY2xlTWFwPiA9IHNpZ25hbChudWxsKTtcclxuXHJcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XHJcbiAgICBsYXRpdHVkZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGxvbmdpdHVkZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxyXG4gIH0pO1xyXG5cclxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ291dGxpbmUnO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcclxuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZyA9ICdkeW5hbWljJztcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRkZW5Gb3JtOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgbWFwIG9wdGlvbnNcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgb3B0aW9uc01hcChvcHRpb25zOiBQYXJ0aWFsPE1hcE9wdGlvbj4pIHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQoe1xyXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucygpLFxyXG4gICAgICAgIC4uLm9wdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgY2lyY2xlIG9uIHRoZSBtYXBcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgY2lyY2xlQ29uZmlnKGNpcmNsZTogQ2lyY2xlTWFwKSB7XHJcbiAgICBpZiAoY2lyY2xlKSB7XHJcbiAgICAgIHRoaXMuY2lyY2xlLnNldChjaXJjbGUpO1xyXG5cclxuICAgICAgaWYgKHRoaXMubWFwKSB7XHJcbiAgICAgICAgdGhpcy5hZGRDaXJjbGUodGhpcy5jaXJjbGUoKT8uY2VudGVyLCB0aGlzLmNpcmNsZSgpPy5yYWRpdXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY2VudGVyKGNlbnRlcjogTWFya2VyTWFwKSB7XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMYXRMbmcoY2VudGVyLmxhdCwgY2VudGVyLmxuZykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBtYXJrZXIgaWNvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGljb246IEljb24gPSB7XHJcbiAgICBpY29uU2l6ZTogWzI1LCA0MV0sXHJcbiAgICBpY29uQW5jaG9yOiBbMTMsIDQxXSxcclxuICAgIGljb25Vcmw6ICdsZWFmbGV0L21hcmtlci1pY29uLnBuZydcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0IG9mIG1hcmtlcnNcclxuICAgKiBAcGFyYW0gbWFya2VycyAtIE1hcmtlcnMgYXJyYXlcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgbWFya2VycyhtYXJrZXJzOiBNYXJrZXJNYXBbXSkge1xyXG4gICAgaWYgKG1hcmtlcnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLm1hcE1hcmtlcnMuc2V0KG1hcmtlcnMpO1xyXG5cclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIGxhdGl0dWRlOiB0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sYXQsXHJcbiAgICAgICAgbG9uZ2l0dWRlOiB0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sbmdcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5tYXAgJiYgdGhpcy5sYXllckdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5kcmF3TWFya2VycygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZSBsYW56YSBjYWRhIHZleiBxdWUgY2FtYmlhIHVuIG1hcmNhZG9yXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG1hcmtlckRyYWdlbmQ6IEV2ZW50RW1pdHRlcjxMYXRMbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKlxyXG4gICAqIFNlIGxhbnphIGNhZGEgdmV6IHF1ZSBzZSBhw7FhZGUgdW4gbWFyY2Fkb3JcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbWFya2VyQWRkZWQ6IEV2ZW50RW1pdHRlcjxNYXJrZXJNYXA+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBEcmF3cyB0aGUgbWFya2Vycy5cclxuICAgKi9cclxuICBwcml2YXRlIGRyYXdNYXJrZXJzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5sYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XHJcbiAgICAgIHRoaXMubWFwTWFya2VycygpLmZvckVhY2goKG06IE1hcmtlck1hcCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkTWFya2VyKG0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1haW4gcHJvcGVydGllcyBvZiB0aGUgbWFwXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRNYXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcCA9IEwubWFwKHRoaXMub3B0aW9ucygpLmlkLCB7XHJcbiAgICAgIGNlbnRlcjogdGhpcy5vcHRpb25zKCk/LmNlbnRlciBhcyBMYXRMbmdFeHByZXNzaW9uID8/IERFRkFVTFRfTUFQX09QVElPTi5jZW50ZXIsXHJcbiAgICAgIGRyYWdnaW5nOiB0aGlzLm9wdGlvbnMoKT8uZHJhZ2dhYmxlID8/IERFRkFVTFRfTUFQX09QVElPTi5kcmFnZ2FibGUsXHJcbiAgICAgIHpvb206IHRoaXMub3B0aW9ucygpPy56b29tID8/IERFRkFVTFRfTUFQX09QVElPTi56b29tLFxyXG4gICAgICB6b29tQ29udHJvbDogdGhpcy5vcHRpb25zKCk/Lnpvb21Db250cm9sIHx8IERFRkFVTFRfTUFQX09QVElPTi56b29tQ29udHJvbCxcclxuICAgICAgc2Nyb2xsV2hlZWxab29tOiB0aGlzLm9wdGlvbnMoKT8uc2Nyb2xsV2hlZWxab29tIHx8IERFRkFVTFRfTUFQX09QVElPTi5zY3JvbGxXaGVlbFpvb20sXHJcbiAgICAgIG1heFpvb206IDE4LFxyXG4gICAgICBtaW5ab29tOiAzXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxheWVyR3JvdXAgPSBsYXllckdyb3VwKCkuYWRkVG8odGhpcy5tYXApO1xyXG5cclxuICAgIEwudGlsZUxheWVyKCdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9ob3Qve3p9L3t4fS97eX0ucG5nJykuYWRkVG8odGhpcy5tYXApO1xyXG5cclxuICAgIHRoaXMuZHJhd01hcmtlcnMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubGF0ICYmIHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxuZykge1xyXG4gICAgICB0aGlzLmNoYW5nZUNlbnRlcihuZXcgTC5MYXRMbmcodGhpcy5tYXBNYXJrZXJzKClbMF0ubGF0LCB0aGlzLm1hcE1hcmtlcnMoKVswXS5sbmcpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jaXJjbGUoKSkge1xyXG4gICAgICB0aGlzLmFkZENpcmNsZSh0aGlzLmNpcmNsZSgpPy5jZW50ZXIsIHRoaXMuY2lyY2xlKCk/LnJhZGl1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucygpPy5hZGRNYXJrZXIpIHtcclxuICAgICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgICB0aGlzLm1hcC5vbignY2xpY2snLCBmdW5jdGlvbiAoZTogTC5MZWFmbGV0TW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGF0Lm1hcE1hcmtlcnMoKS5sZW5ndGggPT09IDAgfHwgKHRoYXQubWFwTWFya2VycygpLmxlbmd0aCA+IDAgJiYgIXRoYXQub3B0aW9ucygpPy5hbG9uZU1hcmtlcikpIHtcclxuICAgICAgICAgIGNvbnN0IG5ld01hcmtlcjogTWFya2VyTWFwID0ge1xyXG4gICAgICAgICAgICBsYXQ6IGUubGF0bG5nLmxhdCxcclxuICAgICAgICAgICAgbG5nOiBlLmxhdGxuZy5sbmcsXHJcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdGhhdC5vcHRpb25zKCk/LmRyYWdnYWJsZSA/PyBERUZBVUxUX01BUF9PUFRJT04uZHJhZ2dhYmxlXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHRoYXQuZm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgbGF0aXR1ZGU6IGUubGF0bG5nLmxhdCxcclxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBlLmxhdGxuZy5sbmdcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoYXQuYWRkTWFya2VyKG5ld01hcmtlcik7XHJcblxyXG4gICAgICAgICAgdGhhdC5tYXJrZXJBZGRlZC5lbWl0KG5ld01hcmtlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoYXQuZHJhd0Fsb25lTWFya2VyKGUubGF0bG5nLmxhdCwgZS5sYXRsbmcubG5nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRHJhd3MgYSBtYXJrZXIgYXQgdGhlIHNwZWNpZmllZCBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIGlmIHRoZSBmaXJzdCBtYXJrZXIncyBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlXHJcbiAgICogYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBwcm92aWRlZCB2YWx1ZXMuIEl0IHVwZGF0ZXMgdGhlIGZpcnN0IG1hcmtlcidzIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgaWYgdGhlXHJcbiAgICogbWFya2VyIGFycmF5IGlzIG5vdCBlbXB0eS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsYXQgLSBUaGUgbGF0aXR1ZGUgb2YgdGhlIG1hcmtlclxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsbmcgLSBUaGUgbG9uZ2l0dWRlIG9mIHRoZSBtYXJrZXJcclxuICAgKi9cclxuICBwcml2YXRlIGRyYXdBbG9uZU1hcmtlcihsYXQ6IG51bWJlciwgbG5nOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sYXQgJiYgdGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubG5nKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sYXQgIT09IGxhdCB8fCB0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sbmcgIT09IGxuZykge1xyXG4gICAgICAgIHRoaXMubWFwTWFya2Vycy51cGRhdGUoKG1hcmtlcnM6IE1hcmtlck1hcFtdKTogTWFya2VyTWFwW10gPT4ge1xyXG4gICAgICAgICAgaWYgKG1hcmtlcnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBtYXJrZXJzWzBdLmxhdCA9IGxhdDtcclxuICAgICAgICAgICAgbWFya2Vyc1swXS5sbmcgPSBsbmc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbWFya2VycztcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kcmF3TWFya2VycygpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMLkxhdExuZyh0aGlzLm1hcE1hcmtlcnMoKVswXS5sYXQsIHRoaXMubWFwTWFya2VycygpWzBdLmxuZykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgbWFya2VyIHRvIG1hcFxyXG4gICAqIEBwYXJhbSBjZW50ZXIgLSBjZW50ZXIgb2YgdGhlIGNpcmNsZVxyXG4gICAqIEBwYXJhbSByYWRpdXMgLSByYWRpdXMgb2YgdGhlIGNpcmNsZSBpbiBtZXRlcnNcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkQ2lyY2xlKGNlbnRlcjogTWFya2VyTWFwLCByYWRpdXM6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwICYmIGNlbnRlcj8ubGF0ICYmIGNlbnRlcj8ubG5nKSB7XHJcbiAgICAgIHRoaXMuZHJhd01hcmtlcnMoKTtcclxuICAgICAgTC5jaXJjbGVNYXJrZXIoW2NlbnRlci5sYXQsIGNlbnRlci5sbmddLCB7IHJhZGl1czogcmFkaXVzID8/IDEwIH0pLmFkZFRvKHRoaXMubWFwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBtYXJrZXIgdG8gbWFwXHJcbiAgICogQHBhcmFtIG1hcmtlciAtIFBvaW50IG9mIHRoZSBtYXBcclxuICAgKi9cclxuICBwcml2YXRlIGFkZE1hcmtlcihtYXJrZXI6IE1hcmtlck1hcCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwICYmIG1hcmtlcj8ubGF0ICYmIG1hcmtlcj8ubG5nKSB7XHJcbiAgICAgIGNvbnN0IG1hcmtlckFkZDogTC5NYXJrZXIgPSBMLm1hcmtlcih7XHJcbiAgICAgICAgbGF0OiBtYXJrZXIubGF0LFxyXG4gICAgICAgIGxuZzogbWFya2VyLmxuZ1xyXG4gICAgICB9LCB7XHJcbiAgICAgICAgZHJhZ2dhYmxlOiBtYXJrZXI/LmRyYWdnYWJsZSA/PyB0cnVlLFxyXG4gICAgICAgIGF1dG9QYW46IHRydWVcclxuICAgICAgfSkuc2V0SWNvbihcclxuICAgICAgICBpY29uKHtcclxuICAgICAgICAgIGljb25TaXplOiB0aGlzLmljb24/Lmljb25TaXplLFxyXG4gICAgICAgICAgaWNvbkFuY2hvcjogdGhpcy5pY29uPy5pY29uQW5jaG9yLFxyXG4gICAgICAgICAgaWNvblVybDogdGhpcy5pY29uPy5pY29uVXJsXHJcbiAgICAgICAgfSlcclxuICAgICAgKS5hZGRUbyh0aGlzLmxheWVyR3JvdXApO1xyXG5cclxuICAgICAgdGhpcy5tYXBNYXJrZXJzLnVwZGF0ZSgobWFya2VyczogTWFya2VyTWFwW10pOiBNYXJrZXJNYXBbXSA9PiB7XHJcbiAgICAgICAgbWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICAgICAgcmV0dXJuIG1hcmtlcnM7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbWFya2VyQWRkLm9uKCdkcmFnZW5kJywgKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG1hcmtlckFkZC5nZXRMYXRMbmcoKSk7XHJcbiAgICAgICAgdGhpcy5tYXJrZXJEcmFnZW5kLmVtaXQobWFya2VyQWRkLmdldExhdExuZygpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQdXQgdGhlIG1hcCBjZW50ZXIgb24gbWFya2VyIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIG1hcmtlciAtIFBvaW50IG9mIHRoZSBtYXBcclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZUNlbnRlcihtYXJrZXI6IEwuTGF0TG5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIGxhdGl0dWRlOiBtYXJrZXIubGF0LFxyXG4gICAgICBsb25naXR1ZGU6IG1hcmtlci5sbmdcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tYXA/LnNldFZpZXcobWFya2VyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3BhZ2F0ZXMgdGhlIGNoYW5nZSB0byBvdGhlciBjb21wb25lbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IF8gLSBhbiBhcmJpdHJhcnkgcGFyYW1ldGVyLlxyXG4gICAqL1xyXG4gIHByb3BhZ2F0ZUNoYW5nZShfOiBhbnkpOiB2b2lkIHtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWVcclxuICAgKiBvZiB0aGUgY29udHJvbCBjaGFuZ2VzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IGZuIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZFxyXG4gICAqIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGZvcm0gY29udHJvbCBpcyBcInRvdWNoZWRcIi5cclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBmb3JtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0Rpc2FibGVkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGZvcm0gc2hvdWxkIGJlIGRpc2FibGVkIG9yIG5vdC5cclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZXMgYSB2YWx1ZSB0byB0aGUgZm9ybS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgd3JpdHRlbi5cclxuICAgKi9cclxuICB3cml0ZVZhbHVlKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGE/LmxhdGl0dWRlICYmIGRhdGE/LmxvbmdpdHVkZSkge1xyXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgbGF0aXR1ZGU6IGRhdGEubGF0aXR1ZGUsXHJcbiAgICAgICAgbG9uZ2l0dWRlOiBkYXRhLmxvbmdpdHVkZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQgYW5kIHNldHMgdXAgYSBsaXN0ZW5lciBmb3IgY2hhbmdlcyBpbiB0aGUgZm9ybSB2YWx1ZS5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKEd1YWppcml0b3NNYXAuX29ic2VydmFibGVTdWJqZWN0JC5hc09ic2VydmFibGUoKSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChtYXJrZXI6IHsgbGF0aXR1ZGU6IHN0cmluZywgbG9uZ2l0dWRlOiBzdHJpbmcgfSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuZm9ybS52YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMoKS5hbG9uZU1hcmtlciAmJiBtYXJrZXIubGF0aXR1ZGUgJiYgbWFya2VyLmxvbmdpdHVkZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXJrZXIoe1xyXG4gICAgICAgICAgICAgIGxhdDogTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksXHJcbiAgICAgICAgICAgICAgbG5nOiBOdW1iZXIobWFya2VyLmxvbmdpdHVkZSksXHJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihuZXcgTC5MYXRMbmcoTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksIE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kcmF3QWxvbmVNYXJrZXIoTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksIE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBtYXAgYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXHJcbiAgICovXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0TWFwKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+XG4gIEBpZiAoIWhpZGRlbkZvcm0gJiYgb3B0aW9ucygpLmFsb25lTWFya2VyKSB7XG4gICAgPGRpdiBjbGFzcz1cImxhdC1sbmctaW5wdXRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2NvbG9yXT1cImNvbG9yXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIGNsYXNzPSd3LTEwMCdcbiAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyBcImxhdGl0dWRcIiB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIiBbY29sb3JdPVwiY29sb3JcIj5wbGFjZTwvbWF0LWljb24+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2xhdGl0dWQnIHwgdHJhbnNsYXRlXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgZm9ybUNvbnRyb2xOYW1lPVwibGF0aXR1ZGVcIj5cbiAgICAgICAgPG1hdC1lcnJvcj57eyAnTGF0aXR1ZCByZXF1ZXJpZGEnIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIiBbY29sb3JdPVwiY29sb3JcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCIgY2xhc3M9J3ctMTAwJ1xuICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7IFwibG9uZ2l0dWRcIiB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIiBbY29sb3JdPVwiY29sb3JcIj5wbGFjZTwvbWF0LWljb24+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2xvbmdpdHVkJyB8IHRyYW5zbGF0ZVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiPlxuICAgICAgICA8bWF0LWVycm9yPnt7ICdMb25naXR1ZCByZXF1ZXJpZGEnIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPGRpdiBbaWRdPVwib3B0aW9ucygpLmlkXCIgY2xhc3M9XCJtYXBcIiBbbmdTdHlsZV09XCJ7J2JvcmRlci1yYWRpdXMnOiBvcHRpb25zKCkuYm9yZGVyUmFkaXVzfVwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhamlyaXRvcy1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VhamlyaXRvcy1tYXAvc3JjL2xpYi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFqaXJpdG9zLW1hcC9zcmMvbGliL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxLQUFLLENBQUMsTUFBTSxTQUFTLENBQUM7QUFDN0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQW9CLFVBQVUsRUFBbUIsTUFBTSxTQUFTLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFhLGtCQUFrQixFQUE4QixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQXNCckcsTUFBTSxPQUFPLGFBQWE7SUFwQjFCO1FBdUJVLGVBQVUsR0FBZSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVB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QWEsb2NBUmI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDNUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ2pESCx1aERBdUJBLHFPRGNJLFlBQVksb1JBQ1osY0FBYyxvMUJBQ2QsbUJBQW1CLG0yQkFDbkIsYUFBYSxtTEFDYixlQUFlOzsyRkFVTixhQUFhO2tCQXBCekIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FHZCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixlQUFlO3FCQUNoQixhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBZ0JRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBWU8sWUFBWTtzQkFBeEIsS0FBSztnQkFVTyxNQUFNO3NCQUFsQixLQUFLO2dCQVNHLElBQUk7c0JBQVosS0FBSztnQkFVTyxPQUFPO3NCQUFuQixLQUFLO2dCQWtCSSxhQUFhO3NCQUF0QixNQUFNO2dCQUlHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIFdyaXRhYmxlU2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XHJcbmltcG9ydCB7IGljb24sIExhdExuZywgTGF0TG5nRXhwcmVzc2lvbiwgbGF5ZXJHcm91cCwgTGF5ZXJHcm91cCwgTWFwIH0gZnJvbSAnbGVhZmxldCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDaXJjbGVNYXAsIERFRkFVTFRfTUFQX09QVElPTiwgSWNvbiwgTWFwT3B0aW9uLCBNYXJrZXJNYXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLW1hcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHdWFqaXJpdG9zTWFwKSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdWFqaXJpdG9zTWFwIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX29ic2VydmFibGVTdWJqZWN0JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBtYXA6IE1hcDtcclxuICBwcml2YXRlIGxheWVyR3JvdXA6IExheWVyR3JvdXAgPSBuZXcgTC5MYXllckdyb3VwKCk7XHJcbiAgcHVibGljIG1hcE1hcmtlcnM6IFdyaXRhYmxlU2lnbmFsPE1hcmtlck1hcFtdPiA9IHNpZ25hbChbXSk7XHJcblxyXG4gIHB1YmxpYyBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxNYXBPcHRpb24+ID0gc2lnbmFsKERFRkFVTFRfTUFQX09QVElPTik7XHJcbiAgcHVibGljIGNpcmNsZTogV3JpdGFibGVTaWduYWw8Q2lyY2xlTWFwPiA9IHNpZ25hbChudWxsKTtcclxuXHJcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XHJcbiAgICBsYXRpdHVkZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGxvbmdpdHVkZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxyXG4gIH0pO1xyXG5cclxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ291dGxpbmUnO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhbHdheXMnO1xyXG4gIEBJbnB1dCgpIHN1YnNjcmlwdFNpemluZzogU3Vic2NyaXB0U2l6aW5nID0gJ2R5bmFtaWMnO1xyXG5cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGRlbkZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SWNvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBtYXAgb3B0aW9uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zTWFwKG9wdGlvbnM6IFBhcnRpYWw8TWFwT3B0aW9uPikge1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNldCh7XHJcbiAgICAgICAgLi4udGhpcy5vcHRpb25zKCksXHJcbiAgICAgICAgLi4ub3B0aW9uc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBjaXJjbGUgb24gdGhlIG1hcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBjaXJjbGVDb25maWcoY2lyY2xlOiBDaXJjbGVNYXApIHtcclxuICAgIGlmIChjaXJjbGUpIHtcclxuICAgICAgdGhpcy5jaXJjbGUuc2V0KGNpcmNsZSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5tYXApIHtcclxuICAgICAgICB0aGlzLmFkZENpcmNsZSh0aGlzLmNpcmNsZSgpPy5jZW50ZXIsIHRoaXMuY2lyY2xlKCk/LnJhZGl1cyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBjZW50ZXIoY2VudGVyOiBNYXJrZXJNYXApIHtcclxuICAgIGlmIChjZW50ZXIpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIobmV3IExhdExuZyhjZW50ZXIubGF0LCBjZW50ZXIubG5nKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IG1hcmtlciBpY29uXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWNvbjogSWNvbiA9IHtcclxuICAgIGljb25TaXplOiBbMjUsIDQxXSxcclxuICAgIGljb25BbmNob3I6IFsxMywgNDFdLFxyXG4gICAgaWNvblVybDogJ2xlYWZsZXQvbWFya2VyLWljb24ucG5nJ1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgbWFya2Vyc1xyXG4gICAqIEBwYXJhbSBtYXJrZXJzIC0gTWFya2VycyBhcnJheVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBtYXJrZXJzKG1hcmtlcnM6IE1hcmtlck1hcFtdKSB7XHJcbiAgICBpZiAobWFya2Vycz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubWFwTWFya2Vycy5zZXQobWFya2Vycyk7XHJcblxyXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgbGF0aXR1ZGU6IHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxhdCxcclxuICAgICAgICBsb25naXR1ZGU6IHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxuZ1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm1hcCAmJiB0aGlzLmxheWVyR3JvdXApIHtcclxuICAgICAgICB0aGlzLmRyYXdNYXJrZXJzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlIGxhbnphIGNhZGEgdmV6IHF1ZSBjYW1iaWEgdW4gbWFyY2Fkb3JcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbWFya2VyRHJhZ2VuZDogRXZlbnRFbWl0dGVyPExhdExuZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoqXHJcbiAgICogU2UgbGFuemEgY2FkYSB2ZXogcXVlIHNlIGHDsWFkZSB1biBtYXJjYWRvclxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBtYXJrZXJBZGRlZDogRXZlbnRFbWl0dGVyPE1hcmtlck1hcD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERyYXdzIHRoZSBtYXJrZXJzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZHJhd01hcmtlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmxheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcclxuICAgICAgdGhpcy5tYXBNYXJrZXJzKCkuZm9yRWFjaCgobTogTWFya2VyTWFwKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRNYXJrZXIobSwgZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1haW4gcHJvcGVydGllcyBvZiB0aGUgbWFwXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRNYXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcCA9IEwubWFwKHRoaXMub3B0aW9ucygpLmlkLCB7XHJcbiAgICAgIGNlbnRlcjogdGhpcy5vcHRpb25zKCk/LmNlbnRlciBhcyBMYXRMbmdFeHByZXNzaW9uID8/IERFRkFVTFRfTUFQX09QVElPTi5jZW50ZXIsXHJcbiAgICAgIGRyYWdnaW5nOiB0aGlzLm9wdGlvbnMoKT8uZHJhZ2dhYmxlID8/IERFRkFVTFRfTUFQX09QVElPTi5kcmFnZ2FibGUsXHJcbiAgICAgIHpvb206IHRoaXMub3B0aW9ucygpPy56b29tID8/IERFRkFVTFRfTUFQX09QVElPTi56b29tLFxyXG4gICAgICB6b29tQ29udHJvbDogdGhpcy5vcHRpb25zKCk/Lnpvb21Db250cm9sIHx8IERFRkFVTFRfTUFQX09QVElPTi56b29tQ29udHJvbCxcclxuICAgICAgc2Nyb2xsV2hlZWxab29tOiB0aGlzLm9wdGlvbnMoKT8uc2Nyb2xsV2hlZWxab29tIHx8IERFRkFVTFRfTUFQX09QVElPTi5zY3JvbGxXaGVlbFpvb20sXHJcbiAgICAgIG1heFpvb206IDE4LFxyXG4gICAgICBtaW5ab29tOiAzXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxheWVyR3JvdXAgPSBsYXllckdyb3VwKCkuYWRkVG8odGhpcy5tYXApO1xyXG5cclxuICAgIEwudGlsZUxheWVyKCdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9ob3Qve3p9L3t4fS97eX0ucG5nJykuYWRkVG8odGhpcy5tYXApO1xyXG5cclxuICAgIHRoaXMuZHJhd01hcmtlcnMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubGF0ICYmIHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxuZykge1xyXG4gICAgICB0aGlzLmNoYW5nZUNlbnRlcihuZXcgTC5MYXRMbmcodGhpcy5tYXBNYXJrZXJzKClbMF0ubGF0LCB0aGlzLm1hcE1hcmtlcnMoKVswXS5sbmcpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jaXJjbGUoKSkge1xyXG4gICAgICB0aGlzLmFkZENpcmNsZSh0aGlzLmNpcmNsZSgpPy5jZW50ZXIsIHRoaXMuY2lyY2xlKCk/LnJhZGl1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucygpPy5hZGRNYXJrZXIpIHtcclxuICAgICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgICB0aGlzLm1hcC5vbignY2xpY2snLCBmdW5jdGlvbihlOiBMLkxlYWZsZXRNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoYXQubWFwTWFya2VycygpLmxlbmd0aCA9PT0gMCB8fCAodGhhdC5tYXBNYXJrZXJzKCkubGVuZ3RoID4gMCAmJiAhdGhhdC5vcHRpb25zKCk/LmFsb25lTWFya2VyKSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3TWFya2VyOiBNYXJrZXJNYXAgPSB7XHJcbiAgICAgICAgICAgIGxhdDogZS5sYXRsbmcubGF0LFxyXG4gICAgICAgICAgICBsbmc6IGUubGF0bG5nLmxuZyxcclxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0aGF0Lm9wdGlvbnMoKT8uZHJhZ2dhYmxlID8/IERFRkFVTFRfTUFQX09QVElPTi5kcmFnZ2FibGVcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhhdC5mb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBsYXRpdHVkZTogZS5sYXRsbmcubGF0LFxyXG4gICAgICAgICAgICBsb25naXR1ZGU6IGUubGF0bG5nLmxuZ1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhhdC5hZGRNYXJrZXIobmV3TWFya2VyKTtcclxuXHJcbiAgICAgICAgICB0aGF0Lm1hcmtlckFkZGVkLmVtaXQobmV3TWFya2VyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhhdC5kcmF3QWxvbmVNYXJrZXIoZS5sYXRsbmcubGF0LCBlLmxhdGxuZy5sbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEcmF3cyBhIG1hcmtlciBhdCB0aGUgc3BlY2lmaWVkIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgaWYgdGhlIGZpcnN0IG1hcmtlcidzIGxhdGl0dWRlIGFuZCBsb25naXR1ZGVcclxuICAgKiBhcmUgZGlmZmVyZW50IGZyb20gdGhlIHByb3ZpZGVkIHZhbHVlcy4gSXQgdXBkYXRlcyB0aGUgZmlyc3QgbWFya2VyJ3MgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSBpZiB0aGVcclxuICAgKiBtYXJrZXIgYXJyYXkgaXMgbm90IGVtcHR5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxhdCAtIFRoZSBsYXRpdHVkZSBvZiB0aGUgbWFya2VyXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxuZyAtIFRoZSBsb25naXR1ZGUgb2YgdGhlIG1hcmtlclxyXG4gICAqL1xyXG4gIHByaXZhdGUgZHJhd0Fsb25lTWFya2VyKGxhdDogbnVtYmVyLCBsbmc6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxhdCAmJiB0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sbmcpIHtcclxuICAgICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxhdCAhPT0gbGF0IHx8IHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxuZyAhPT0gbG5nKSB7XHJcbiAgICAgICAgdGhpcy5tYXBNYXJrZXJzLnVwZGF0ZSgobWFya2VyczogTWFya2VyTWFwW10pOiBNYXJrZXJNYXBbXSA9PiB7XHJcbiAgICAgICAgICBpZiAobWFya2Vycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIG1hcmtlcnNbMF0ubGF0ID0gbGF0O1xyXG4gICAgICAgICAgICBtYXJrZXJzWzBdLmxuZyA9IGxuZztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBtYXJrZXJzO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRyYXdNYXJrZXJzKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIobmV3IEwuTGF0TG5nKHRoaXMubWFwTWFya2VycygpWzBdLmxhdCwgdGhpcy5tYXBNYXJrZXJzKClbMF0ubG5nKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBtYXJrZXIgdG8gbWFwXHJcbiAgICogQHBhcmFtIGNlbnRlciAtIGNlbnRlciBvZiB0aGUgY2lyY2xlXHJcbiAgICogQHBhcmFtIHJhZGl1cyAtIHJhZGl1cyBvZiB0aGUgY2lyY2xlIGluIG1ldGVyc1xyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRDaXJjbGUoY2VudGVyOiBNYXJrZXJNYXAsIHJhZGl1czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tYXAgJiYgY2VudGVyPy5sYXQgJiYgY2VudGVyPy5sbmcpIHtcclxuICAgICAgdGhpcy5kcmF3TWFya2VycygpO1xyXG4gICAgICBMLmNpcmNsZU1hcmtlcihbY2VudGVyLmxhdCwgY2VudGVyLmxuZ10sIHsgcmFkaXVzOiByYWRpdXMgPz8gMTAgfSkuYWRkVG8odGhpcy5tYXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIG1hcmtlciB0byBtYXBcclxuICAgKiBAcGFyYW0gbWFya2VyIC0gUG9pbnQgb2YgdGhlIG1hcFxyXG4gICAqIEBwYXJhbSBjYW5BZGRcclxuICAgKi9cclxuICBwcml2YXRlIGFkZE1hcmtlcihtYXJrZXI6IE1hcmtlck1hcCwgY2FuQWRkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwICYmIG1hcmtlcj8ubGF0ICYmIG1hcmtlcj8ubG5nKSB7XHJcbiAgICAgIGNvbnN0IG1hcmtlckFkZDogTC5NYXJrZXIgPSBMLm1hcmtlcih7XHJcbiAgICAgICAgbGF0OiBtYXJrZXIubGF0LFxyXG4gICAgICAgIGxuZzogbWFya2VyLmxuZ1xyXG4gICAgICB9LCB7XHJcbiAgICAgICAgZHJhZ2dhYmxlOiBtYXJrZXI/LmRyYWdnYWJsZSA/PyB0cnVlLFxyXG4gICAgICAgIGF1dG9QYW46IHRydWVcclxuICAgICAgfSkuc2V0SWNvbihcclxuICAgICAgICBpY29uKHtcclxuICAgICAgICAgIGljb25TaXplOiB0aGlzLmljb24/Lmljb25TaXplLFxyXG4gICAgICAgICAgaWNvbkFuY2hvcjogdGhpcy5pY29uPy5pY29uQW5jaG9yLFxyXG4gICAgICAgICAgaWNvblVybDogdGhpcy5pY29uPy5pY29uVXJsXHJcbiAgICAgICAgfSlcclxuICAgICAgKS5hZGRUbyh0aGlzLmxheWVyR3JvdXApO1xyXG5cclxuICAgICAgaWYgKGNhbkFkZCkge1xyXG4gICAgICAgIHRoaXMubWFwTWFya2Vycy51cGRhdGUoKG1hcmtlcnM6IE1hcmtlck1hcFtdKTogTWFya2VyTWFwW10gPT4ge1xyXG4gICAgICAgICAgbWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhtYXJrZXJzPy5sZW5ndGgpO1xyXG4gICAgICAgICAgcmV0dXJuIG1hcmtlcnM7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hcmtlckFkZC5vbignZHJhZ2VuZCcsICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihtYXJrZXJBZGQuZ2V0TGF0TG5nKCkpO1xyXG4gICAgICAgIHRoaXMubWFya2VyRHJhZ2VuZC5lbWl0KG1hcmtlckFkZC5nZXRMYXRMbmcoKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHV0IHRoZSBtYXAgY2VudGVyIG9uIG1hcmtlciBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBtYXJrZXIgLSBQb2ludCBvZiB0aGUgbWFwXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZUNlbnRlcihtYXJrZXI6IEwuTGF0TG5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIGxhdGl0dWRlOiBtYXJrZXIubGF0LFxyXG4gICAgICBsb25naXR1ZGU6IG1hcmtlci5sbmdcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tYXA/LnNldFZpZXcobWFya2VyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3BhZ2F0ZXMgdGhlIGNoYW5nZSB0byBvdGhlciBjb21wb25lbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IF8gLSBhbiBhcmJpdHJhcnkgcGFyYW1ldGVyLlxyXG4gICAqL1xyXG4gIHByb3BhZ2F0ZUNoYW5nZShfOiBhbnkpOiB2b2lkIHtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWVcclxuICAgKiBvZiB0aGUgY29udHJvbCBjaGFuZ2VzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IGZuIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZFxyXG4gICAqIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGZvcm0gY29udHJvbCBpcyBcInRvdWNoZWRcIi5cclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBmb3JtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0Rpc2FibGVkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGZvcm0gc2hvdWxkIGJlIGRpc2FibGVkIG9yIG5vdC5cclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZXMgYSB2YWx1ZSB0byB0aGUgZm9ybS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgd3JpdHRlbi5cclxuICAgKi9cclxuICB3cml0ZVZhbHVlKGRhdGE6IHsgbGF0aXR1ZGU6IG51bWJlciB8IHN0cmluZzsgbG9uZ2l0dWRlOiBudW1iZXIgfCBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGE/LmxhdGl0dWRlICYmIGRhdGE/LmxvbmdpdHVkZSkge1xyXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgbGF0aXR1ZGU6IGRhdGEubGF0aXR1ZGUsXHJcbiAgICAgICAgbG9uZ2l0dWRlOiBkYXRhLmxvbmdpdHVkZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQgYW5kIHNldHMgdXAgYSBsaXN0ZW5lciBmb3IgY2hhbmdlcyBpbiB0aGUgZm9ybSB2YWx1ZS5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKEd1YWppcml0b3NNYXAuX29ic2VydmFibGVTdWJqZWN0JC5hc09ic2VydmFibGUoKSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChtYXJrZXI6IHsgbGF0aXR1ZGU6IHN0cmluZywgbG9uZ2l0dWRlOiBzdHJpbmcgfSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuZm9ybS52YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMoKS5hbG9uZU1hcmtlciAmJiBtYXJrZXIubGF0aXR1ZGUgJiYgbWFya2VyLmxvbmdpdHVkZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXJrZXIoe1xyXG4gICAgICAgICAgICAgIGxhdDogTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksXHJcbiAgICAgICAgICAgICAgbG5nOiBOdW1iZXIobWFya2VyLmxvbmdpdHVkZSksXHJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihuZXcgTC5MYXRMbmcoTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksIE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kcmF3QWxvbmVNYXJrZXIoTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksIE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBtYXAgYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXHJcbiAgICovXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0TWFwKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+XG4gIEBpZiAoIWhpZGRlbkZvcm0gJiYgb3B0aW9ucygpPy5hbG9uZU1hcmtlciAmJiBtYXBNYXJrZXJzKCk/Lmxlbmd0aCA8PSAxKSB7XG4gICAgPGRpdiBjbGFzcz1cImxhdC1sbmctaW5wdXRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2NvbG9yXT1cImNvbG9yXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIGNsYXNzPSd3LTEwMCdcbiAgICAgICAgICAgICAgICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiPlxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwic2hvd0xhYmVsXCI+e3sgXCJsYXRpdHVkXCIgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCIgW2NvbG9yXT1cImNvbG9yXCIgKm5nSWY9XCJzaG93SWNvblwiPnBsYWNlPC9tYXQtaWNvbj5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInbGF0aXR1ZCcgfCB0cmFuc2xhdGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiPlxuICAgICAgICA8bWF0LWVycm9yPnt7ICdMYXRpdHVkIHJlcXVlcmlkYScgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtjb2xvcl09XCJjb2xvclwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBjbGFzcz0ndy0xMDAnXG4gICAgICAgICAgICAgICAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cInNob3dMYWJlbFwiPnt7IFwibG9uZ2l0dWRcIiB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIiBbY29sb3JdPVwiY29sb3JcIiAqbmdJZj1cInNob3dJY29uXCI+cGxhY2U8L21hdC1pY29uPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidsb25naXR1ZCcgfCB0cmFuc2xhdGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJsb25naXR1ZGVcIj5cbiAgICAgICAgPG1hdC1lcnJvcj57eyAnTG9uZ2l0dWQgcmVxdWVyaWRhJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgW2lkXT1cIm9wdGlvbnMoKS5pZFwiIGNsYXNzPVwibWFwXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1yYWRpdXMnOiBvcHRpb25zKCk/LmJvcmRlclJhZGl1cyA/PyAnOHB4JywgJ2hlaWdodCc6IG9wdGlvbnMoKT8uaGVpZ2h0ID8/ICc0MDBweCd9XCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,18 +1,19 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, EventEmitter, forwardRef, Component, Input, Output } from '@angular/core';
3
- import { TitleCasePipe, NgStyle } from '@angular/common';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
4
5
  import * as L from 'leaflet';
5
6
  import { LatLng, layerGroup, icon } from 'leaflet';
6
- import * as i1 from '@angular/material/input';
7
+ import * as i2 from '@angular/material/input';
7
8
  import { MatInputModule } from '@angular/material/input';
8
- import * as i3 from '@angular/forms';
9
+ import * as i4 from '@angular/forms';
9
10
  import { UntypedFormGroup, UntypedFormControl, Validators, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
10
- import * as i4 from '@angular/material/icon';
11
+ import * as i5 from '@angular/material/icon';
11
12
  import { MatIconModule } from '@angular/material/icon';
12
13
  import { Subject, takeUntil, distinctUntilChanged, debounceTime } from 'rxjs';
13
- import * as i5 from '@ngx-translate/core';
14
+ import * as i6 from '@ngx-translate/core';
14
15
  import { TranslateModule } from '@ngx-translate/core';
15
- import * as i2 from '@angular/material/form-field';
16
+ import * as i3 from '@angular/material/form-field';
16
17
 
17
18
  const DEFAULT_MAP_OPTION = {
18
19
  id: 'map',
@@ -23,10 +24,11 @@ const DEFAULT_MAP_OPTION = {
23
24
  updateWithDoubleClick: false,
24
25
  zoomControl: true,
25
26
  borderRadius: '8px',
27
+ height: '400px',
26
28
  scrollWheelZoom: false,
27
29
  addMarker: false,
28
30
  aloneMarker: true,
29
- scrollable: false
31
+ scrollable: false,
30
32
  };
31
33
 
32
34
  class GuajiritosMap {
@@ -41,10 +43,12 @@ class GuajiritosMap {
41
43
  });
42
44
  this.appearance = 'outline';
43
45
  this.color = 'accent';
44
- this.floatLabel = 'auto';
46
+ this.floatLabel = 'always';
45
47
  this.subscriptSizing = 'dynamic';
46
48
  this.readonly = false;
47
49
  this.hiddenForm = false;
50
+ this.showIcon = true;
51
+ this.showLabel = true;
48
52
  /**
49
53
  * Default marker icon
50
54
  */
@@ -114,7 +118,7 @@ class GuajiritosMap {
114
118
  if (this.mapMarkers()?.length) {
115
119
  this.layerGroup.clearLayers();
116
120
  this.mapMarkers().forEach((m) => {
117
- this.addMarker(m);
121
+ this.addMarker(m, false);
118
122
  });
119
123
  }
120
124
  }
@@ -201,8 +205,9 @@ class GuajiritosMap {
201
205
  /**
202
206
  * Add marker to map
203
207
  * @param marker - Point of the map
208
+ * @param canAdd
204
209
  */
205
- addMarker(marker) {
210
+ addMarker(marker, canAdd = true) {
206
211
  if (this.map && marker?.lat && marker?.lng) {
207
212
  const markerAdd = L.marker({
208
213
  lat: marker.lat,
@@ -215,10 +220,13 @@ class GuajiritosMap {
215
220
  iconAnchor: this.icon?.iconAnchor,
216
221
  iconUrl: this.icon?.iconUrl
217
222
  })).addTo(this.layerGroup);
218
- this.mapMarkers.update((markers) => {
219
- markers.push(marker);
220
- return markers;
221
- });
223
+ if (canAdd) {
224
+ this.mapMarkers.update((markers) => {
225
+ markers.push(marker);
226
+ console.log(markers?.length);
227
+ return markers;
228
+ });
229
+ }
222
230
  markerAdd.on('dragend', () => {
223
231
  this.changeCenter(markerAdd.getLatLng());
224
232
  this.markerDragend.emit(markerAdd.getLatLng());
@@ -228,7 +236,6 @@ class GuajiritosMap {
228
236
  /**
229
237
  * Put the map center on marker position
230
238
  * @param marker - Point of the map
231
- * @public
232
239
  */
233
240
  changeCenter(marker) {
234
241
  this.form.patchValue({
@@ -316,30 +323,29 @@ class GuajiritosMap {
316
323
  this.initMap();
317
324
  }
318
325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
319
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded" }, providers: [
326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded" }, providers: [
320
327
  {
321
328
  provide: NG_VALUE_ACCESSOR,
322
329
  useExisting: forwardRef(() => GuajiritosMap),
323
330
  multi: true
324
331
  }
325
- ], ngImport: i0, template: "<div class=\"map-container\">\n @if (!hiddenForm && options().aloneMarker) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\" [ngStyle]=\"{'border-radius': options().borderRadius}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
332
+ ], ngImport: i0, template: "<div class=\"map-container\">\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
326
333
  }
327
334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: GuajiritosMap, decorators: [{
328
335
  type: Component,
329
336
  args: [{ selector: 'guajiritos-map', standalone: true, imports: [
337
+ CommonModule,
330
338
  MatInputModule,
331
339
  ReactiveFormsModule,
332
340
  MatIconModule,
333
- TranslateModule,
334
- TitleCasePipe,
335
- NgStyle
341
+ TranslateModule
336
342
  ], providers: [
337
343
  {
338
344
  provide: NG_VALUE_ACCESSOR,
339
345
  useExisting: forwardRef(() => GuajiritosMap),
340
346
  multi: true
341
347
  }
342
- ], template: "<div class=\"map-container\">\n @if (!hiddenForm && options().aloneMarker) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\" [ngStyle]=\"{'border-radius': options().borderRadius}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"] }]
348
+ ], template: "<div class=\"map-container\">\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n</div>\n", styles: [".map-container{display:flex;flex-direction:column;gap:2rem}.lat-lng-input{display:flex;flex-direction:row;gap:1rem}.map{min-height:100px;max-width:100%}.w-100{width:100%}\n"] }]
343
349
  }], propDecorators: { appearance: [{
344
350
  type: Input
345
351
  }], color: [{
@@ -352,6 +358,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
352
358
  type: Input
353
359
  }], hiddenForm: [{
354
360
  type: Input
361
+ }], showIcon: [{
362
+ type: Input
363
+ }], showLabel: [{
364
+ type: Input
355
365
  }], optionsMap: [{
356
366
  type: Input
357
367
  }], circleConfig: [{
@@ -1 +1 @@
1
- {"version":3,"file":"guajiritos-map.mjs","sources":["../../../projects/guajiritos-map/src/interfaces/interfaces.ts","../../../projects/guajiritos-map/src/lib/guajiritos-map.component.ts","../../../projects/guajiritos-map/src/lib/guajiritos-map.component.html","../../../projects/guajiritos-map/src/public-api.ts","../../../projects/guajiritos-map/src/guajiritos-map.ts"],"sourcesContent":["\r\n/**\r\n * Map options interface\r\n */\r\nexport interface MapOption {\r\n id: string;\r\n center?: [number, number];\r\n draggable?: boolean;\r\n updateWithClick?: boolean;\r\n updateWithDoubleClick?: boolean;\r\n zoom?: number;\r\n borderRadius?: string;\r\n scrollable?: boolean;\r\n zoomControl?: boolean;\r\n scrollWheelZoom?: boolean;\r\n addMarker?: boolean;\r\n aloneMarker?: boolean;\r\n}\r\n\r\n/**\r\n * Marker interface\r\n */\r\nexport interface MarkerMap {\r\n lat: number;\r\n lng: number;\r\n draggable?: boolean;\r\n}\r\n\r\n/**\r\n * Icon interface\r\n */\r\nexport interface Icon {\r\n iconSize: [number, number];\r\n iconAnchor: [number, number];\r\n iconUrl: string;\r\n iconRetinaUrl?: string,\r\n shadowUrl?: string,\r\n popupAnchor?: [number, number],\r\n tooltipAnchor?: [number, number],\r\n shadowSize?: [number, number],\r\n}\r\n\r\n/**\r\n * Circle map interface\r\n */\r\nexport interface CircleMap {\r\n center: MarkerMap;\r\n radius: number;\r\n}\r\n\r\nexport const DEFAULT_MAP_OPTION: MapOption = {\r\n id: 'map',\r\n center: [23.130257185291036, -82.35626220703126],\r\n draggable: true,\r\n zoom: 15,\r\n updateWithClick: false,\r\n updateWithDoubleClick: false,\r\n zoomControl: true,\r\n borderRadius: '8px',\r\n scrollWheelZoom: false,\r\n addMarker: false,\r\n aloneMarker: true,\r\n scrollable: false\r\n};","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n signal,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport { NgStyle, TitleCasePipe } from '@angular/common';\r\nimport * as L from 'leaflet';\r\nimport { icon, LatLng, LatLngExpression, layerGroup, LayerGroup, Map } from 'leaflet';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { FloatLabelType, MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { CircleMap, DEFAULT_MAP_OPTION, Icon, MapOption, MarkerMap } from '../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'guajiritos-map',\r\n templateUrl: './guajiritos-map.component.html',\r\n styleUrls: ['./guajiritos-map.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n TranslateModule,\r\n TitleCasePipe,\r\n NgStyle\r\n],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GuajiritosMap),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GuajiritosMap implements OnInit, AfterViewInit, ControlValueAccessor {\r\n private static _observableSubject$: Subject<void> = new Subject();\r\n private map: Map;\r\n private layerGroup: LayerGroup = new L.LayerGroup();\r\n public mapMarkers: WritableSignal<MarkerMap[]> = signal([]);\r\n\r\n public options: WritableSignal<MapOption> = signal(DEFAULT_MAP_OPTION);\r\n public circle: WritableSignal<CircleMap> = signal(null);\r\n\r\n public form: UntypedFormGroup = new UntypedFormGroup({\r\n latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required]),\r\n longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required])\r\n });\r\n\r\n @Input() appearance: MatFormFieldAppearance = 'outline';\r\n @Input() color: ThemePalette = 'accent';\r\n @Input() floatLabel: FloatLabelType = 'auto';\r\n @Input() subscriptSizing: SubscriptSizing = 'dynamic';\r\n\r\n @Input() readonly: boolean = false;\r\n @Input() hiddenForm: boolean = false;\r\n\r\n /**\r\n * Default map options\r\n */\r\n @Input() set optionsMap(options: Partial<MapOption>) {\r\n if (options) {\r\n this.options.set({\r\n ...this.options(),\r\n ...options\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Add a circle on the map\r\n */\r\n @Input() set circleConfig(circle: CircleMap) {\r\n if (circle) {\r\n this.circle.set(circle);\r\n\r\n if (this.map) {\r\n this.addCircle(this.circle()?.center, this.circle()?.radius);\r\n }\r\n }\r\n }\r\n\r\n @Input() set center(center: MarkerMap) {\r\n if (center) {\r\n this.changeCenter(new LatLng(center.lat, center.lng));\r\n }\r\n }\r\n\r\n /**\r\n * Default marker icon\r\n */\r\n @Input() icon: Icon = {\r\n iconSize: [25, 41],\r\n iconAnchor: [13, 41],\r\n iconUrl: 'leaflet/marker-icon.png'\r\n };\r\n\r\n /**\r\n * List of markers\r\n * @param markers - Markers array\r\n */\r\n @Input() set markers(markers: MarkerMap[]) {\r\n if (markers?.length) {\r\n this.mapMarkers.set(markers);\r\n\r\n this.form.patchValue({\r\n latitude: this.mapMarkers()?.[0]?.lat,\r\n longitude: this.mapMarkers()?.[0]?.lng\r\n });\r\n\r\n if (this.map && this.layerGroup) {\r\n this.drawMarkers();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Se lanza cada vez que cambia un marcador\r\n */\r\n @Output() markerDragend: EventEmitter<LatLng> = new EventEmitter();\r\n /**\r\n * Se lanza cada vez que se añade un marcador\r\n */\r\n @Output() markerAdded: EventEmitter<MarkerMap> = new EventEmitter();\r\n\r\n /**\r\n * Draws the markers.\r\n */\r\n private drawMarkers(): void {\r\n if (this.mapMarkers()?.length) {\r\n this.layerGroup.clearLayers();\r\n this.mapMarkers().forEach((m: MarkerMap): void => {\r\n this.addMarker(m);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Main properties of the map\r\n * @private\r\n */\r\n private initMap(): void {\r\n this.map = L.map(this.options().id, {\r\n center: this.options()?.center as LatLngExpression ?? DEFAULT_MAP_OPTION.center,\r\n dragging: this.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable,\r\n zoom: this.options()?.zoom ?? DEFAULT_MAP_OPTION.zoom,\r\n zoomControl: this.options()?.zoomControl || DEFAULT_MAP_OPTION.zoomControl,\r\n scrollWheelZoom: this.options()?.scrollWheelZoom || DEFAULT_MAP_OPTION.scrollWheelZoom,\r\n maxZoom: 18,\r\n minZoom: 3\r\n });\r\n\r\n this.layerGroup = layerGroup().addTo(this.map);\r\n\r\n L.tileLayer('http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png').addTo(this.map);\r\n\r\n this.drawMarkers();\r\n\r\n if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {\r\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\r\n }\r\n\r\n if (this.circle()) {\r\n this.addCircle(this.circle()?.center, this.circle()?.radius);\r\n }\r\n\r\n if (this.options()?.addMarker) {\r\n let that = this;\r\n this.map.on('click', function (e: L.LeafletMouseEvent): void {\r\n if (that.mapMarkers().length === 0 || (that.mapMarkers().length > 0 && !that.options()?.aloneMarker)) {\r\n const newMarker: MarkerMap = {\r\n lat: e.latlng.lat,\r\n lng: e.latlng.lng,\r\n draggable: that.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable\r\n };\r\n\r\n that.form.patchValue({\r\n latitude: e.latlng.lat,\r\n longitude: e.latlng.lng\r\n });\r\n\r\n that.addMarker(newMarker);\r\n\r\n that.markerAdded.emit(newMarker);\r\n } else {\r\n that.drawAloneMarker(e.latlng.lat, e.latlng.lng);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude\r\n * are different from the provided values. It updates the first marker's latitude and longitude if the\r\n * marker array is not empty.\r\n *\r\n * @param {number} lat - The latitude of the marker\r\n * @param {number} lng - The longitude of the marker\r\n */\r\n private drawAloneMarker(lat: number, lng: number): void {\r\n if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {\r\n if (this.mapMarkers()?.[0]?.lat !== lat || this.mapMarkers()?.[0]?.lng !== lng) {\r\n this.mapMarkers.update((markers: MarkerMap[]): MarkerMap[] => {\r\n if (markers?.length) {\r\n markers[0].lat = lat;\r\n markers[0].lng = lng;\r\n }\r\n return markers;\r\n });\r\n\r\n this.drawMarkers();\r\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add marker to map\r\n * @param center - center of the circle\r\n * @param radius - radius of the circle in meters\r\n * @private\r\n */\r\n private addCircle(center: MarkerMap, radius: number): void {\r\n if (this.map && center?.lat && center?.lng) {\r\n this.drawMarkers();\r\n L.circleMarker([center.lat, center.lng], { radius: radius ?? 10 }).addTo(this.map);\r\n }\r\n }\r\n\r\n /**\r\n * Add marker to map\r\n * @param marker - Point of the map\r\n */\r\n private addMarker(marker: MarkerMap): void {\r\n if (this.map && marker?.lat && marker?.lng) {\r\n const markerAdd: L.Marker = L.marker({\r\n lat: marker.lat,\r\n lng: marker.lng\r\n }, {\r\n draggable: marker?.draggable ?? true,\r\n autoPan: true\r\n }).setIcon(\r\n icon({\r\n iconSize: this.icon?.iconSize,\r\n iconAnchor: this.icon?.iconAnchor,\r\n iconUrl: this.icon?.iconUrl\r\n })\r\n ).addTo(this.layerGroup);\r\n\r\n this.mapMarkers.update((markers: MarkerMap[]): MarkerMap[] => {\r\n markers.push(marker);\r\n return markers;\r\n });\r\n\r\n markerAdd.on('dragend', (): void => {\r\n this.changeCenter(markerAdd.getLatLng());\r\n this.markerDragend.emit(markerAdd.getLatLng());\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Put the map center on marker position\r\n * @param marker - Point of the map\r\n * @public\r\n */\r\n public changeCenter(marker: L.LatLng): void {\r\n this.form.patchValue({\r\n latitude: marker.lat,\r\n longitude: marker.lng\r\n });\r\n this.map?.setView(marker);\r\n }\r\n\r\n /**\r\n * Propagates the change to other components.\r\n *\r\n * @param {any} _ - an arbitrary parameter.\r\n */\r\n propagateChange(_: any): void {\r\n };\r\n\r\n /**\r\n * Sets the callback function to be called when the value\r\n * of the control changes.\r\n *\r\n * @param {any} fn - The callback function to be called\r\n * when the value of the control changes.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the form control is \"touched\".\r\n */\r\n registerOnTouched(): void {\r\n }\r\n\r\n /**\r\n * Sets the disabled state of the form.\r\n *\r\n * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.form.disable();\r\n } else {\r\n this.form.enable();\r\n }\r\n }\r\n\r\n /**\r\n * Writes a value to the form.\r\n *\r\n * @param {any} data - The data to be written.\r\n */\r\n writeValue(data: any): void {\r\n if (data?.latitude && data?.longitude) {\r\n this.form.patchValue({\r\n latitude: data.latitude,\r\n longitude: data.longitude\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the component and sets up a listener for changes in the form value.\r\n */\r\n ngOnInit(): void {\r\n this.form.valueChanges\r\n .pipe(takeUntil(GuajiritosMap._observableSubject$.asObservable()), distinctUntilChanged(), debounceTime(300))\r\n .subscribe((marker: { latitude: string, longitude: string }): void => {\r\n this.propagateChange(this.form.value);\r\n\r\n if (this.options().aloneMarker && marker.latitude && marker.longitude) {\r\n if (this.mapMarkers()?.length === 0) {\r\n this.addMarker({\r\n lat: Number(marker.latitude),\r\n lng: Number(marker.longitude),\r\n draggable: true\r\n });\r\n this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));\r\n } else {\r\n this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the map after the view has been initialized.\r\n */\r\n ngAfterViewInit(): void {\r\n this.initMap();\r\n }\r\n}\r\n","<div class=\"map-container\">\n @if (!hiddenForm && options().aloneMarker) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label>{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\" [ngStyle]=\"{'border-radius': options().borderRadius}\"></div>\n</div>\n","/*\r\n * Public API Surface of guajiritos-map\r\n */\r\n\r\nexport * from './interfaces/interfaces';\r\nexport * from './lib/guajiritos-map.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guajiritos-map.mjs","sources":["../../../projects/guajiritos-map/src/interfaces/interfaces.ts","../../../projects/guajiritos-map/src/lib/guajiritos-map.component.ts","../../../projects/guajiritos-map/src/lib/guajiritos-map.component.html","../../../projects/guajiritos-map/src/public-api.ts","../../../projects/guajiritos-map/src/guajiritos-map.ts"],"sourcesContent":["\r\n/**\r\n * Map options interface\r\n */\r\nexport interface MapOption {\r\n id: string;\r\n center?: [number, number];\r\n draggable?: boolean;\r\n updateWithClick?: boolean;\r\n updateWithDoubleClick?: boolean;\r\n zoom?: number;\r\n borderRadius?: string;\r\n height?: string;\r\n scrollable?: boolean;\r\n zoomControl?: boolean;\r\n scrollWheelZoom?: boolean;\r\n addMarker?: boolean;\r\n aloneMarker?: boolean;\r\n}\r\n\r\n/**\r\n * Marker interface\r\n */\r\nexport interface MarkerMap {\r\n lat: number;\r\n lng: number;\r\n draggable?: boolean;\r\n}\r\n\r\n/**\r\n * Icon interface\r\n */\r\nexport interface Icon {\r\n iconSize: [number, number];\r\n iconAnchor: [number, number];\r\n iconUrl: string;\r\n iconRetinaUrl?: string,\r\n shadowUrl?: string,\r\n popupAnchor?: [number, number],\r\n tooltipAnchor?: [number, number],\r\n shadowSize?: [number, number],\r\n}\r\n\r\n/**\r\n * Circle map interface\r\n */\r\nexport interface CircleMap {\r\n center: MarkerMap;\r\n radius: number;\r\n}\r\n\r\nexport const DEFAULT_MAP_OPTION: MapOption = {\r\n id: 'map',\r\n center: [23.130257185291036, -82.35626220703126],\r\n draggable: true,\r\n zoom: 15,\r\n updateWithClick: false,\r\n updateWithDoubleClick: false,\r\n zoomControl: true,\r\n borderRadius: '8px',\r\n height: '400px',\r\n scrollWheelZoom: false,\r\n addMarker: false,\r\n aloneMarker: true,\r\n scrollable: false,\r\n};\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n signal,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport * as L from 'leaflet';\r\nimport { icon, LatLng, LatLngExpression, layerGroup, LayerGroup, Map } from 'leaflet';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { FloatLabelType, MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { CircleMap, DEFAULT_MAP_OPTION, Icon, MapOption, MarkerMap } from '../interfaces/interfaces';\r\n\r\n@Component({\r\n selector: 'guajiritos-map',\r\n templateUrl: './guajiritos-map.component.html',\r\n styleUrls: ['./guajiritos-map.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n TranslateModule\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => GuajiritosMap),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GuajiritosMap implements OnInit, AfterViewInit, ControlValueAccessor {\r\n private static _observableSubject$: Subject<void> = new Subject();\r\n private map: Map;\r\n private layerGroup: LayerGroup = new L.LayerGroup();\r\n public mapMarkers: WritableSignal<MarkerMap[]> = signal([]);\r\n\r\n public options: WritableSignal<MapOption> = signal(DEFAULT_MAP_OPTION);\r\n public circle: WritableSignal<CircleMap> = signal(null);\r\n\r\n public form: UntypedFormGroup = new UntypedFormGroup({\r\n latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required]),\r\n longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required])\r\n });\r\n\r\n @Input() appearance: MatFormFieldAppearance = 'outline';\r\n @Input() color: ThemePalette = 'accent';\r\n @Input() floatLabel: FloatLabelType = 'always';\r\n @Input() subscriptSizing: SubscriptSizing = 'dynamic';\r\n\r\n @Input() readonly: boolean = false;\r\n @Input() hiddenForm: boolean = false;\r\n @Input() showIcon: boolean = true;\r\n @Input() showLabel: boolean = true;\r\n\r\n /**\r\n * Default map options\r\n */\r\n @Input() set optionsMap(options: Partial<MapOption>) {\r\n if (options) {\r\n this.options.set({\r\n ...this.options(),\r\n ...options\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Add a circle on the map\r\n */\r\n @Input() set circleConfig(circle: CircleMap) {\r\n if (circle) {\r\n this.circle.set(circle);\r\n\r\n if (this.map) {\r\n this.addCircle(this.circle()?.center, this.circle()?.radius);\r\n }\r\n }\r\n }\r\n\r\n @Input() set center(center: MarkerMap) {\r\n if (center) {\r\n this.changeCenter(new LatLng(center.lat, center.lng));\r\n }\r\n }\r\n\r\n /**\r\n * Default marker icon\r\n */\r\n @Input() icon: Icon = {\r\n iconSize: [25, 41],\r\n iconAnchor: [13, 41],\r\n iconUrl: 'leaflet/marker-icon.png'\r\n };\r\n\r\n /**\r\n * List of markers\r\n * @param markers - Markers array\r\n */\r\n @Input() set markers(markers: MarkerMap[]) {\r\n if (markers?.length) {\r\n this.mapMarkers.set(markers);\r\n\r\n this.form.patchValue({\r\n latitude: this.mapMarkers()?.[0]?.lat,\r\n longitude: this.mapMarkers()?.[0]?.lng\r\n });\r\n\r\n if (this.map && this.layerGroup) {\r\n this.drawMarkers();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Se lanza cada vez que cambia un marcador\r\n */\r\n @Output() markerDragend: EventEmitter<LatLng> = new EventEmitter();\r\n /**\r\n * Se lanza cada vez que se añade un marcador\r\n */\r\n @Output() markerAdded: EventEmitter<MarkerMap> = new EventEmitter();\r\n\r\n /**\r\n * Draws the markers.\r\n */\r\n private drawMarkers(): void {\r\n if (this.mapMarkers()?.length) {\r\n this.layerGroup.clearLayers();\r\n this.mapMarkers().forEach((m: MarkerMap): void => {\r\n this.addMarker(m, false);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Main properties of the map\r\n * @private\r\n */\r\n private initMap(): void {\r\n this.map = L.map(this.options().id, {\r\n center: this.options()?.center as LatLngExpression ?? DEFAULT_MAP_OPTION.center,\r\n dragging: this.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable,\r\n zoom: this.options()?.zoom ?? DEFAULT_MAP_OPTION.zoom,\r\n zoomControl: this.options()?.zoomControl || DEFAULT_MAP_OPTION.zoomControl,\r\n scrollWheelZoom: this.options()?.scrollWheelZoom || DEFAULT_MAP_OPTION.scrollWheelZoom,\r\n maxZoom: 18,\r\n minZoom: 3\r\n });\r\n\r\n this.layerGroup = layerGroup().addTo(this.map);\r\n\r\n L.tileLayer('http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png').addTo(this.map);\r\n\r\n this.drawMarkers();\r\n\r\n if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {\r\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\r\n }\r\n\r\n if (this.circle()) {\r\n this.addCircle(this.circle()?.center, this.circle()?.radius);\r\n }\r\n\r\n if (this.options()?.addMarker) {\r\n let that = this;\r\n this.map.on('click', function(e: L.LeafletMouseEvent): void {\r\n if (that.mapMarkers().length === 0 || (that.mapMarkers().length > 0 && !that.options()?.aloneMarker)) {\r\n const newMarker: MarkerMap = {\r\n lat: e.latlng.lat,\r\n lng: e.latlng.lng,\r\n draggable: that.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable\r\n };\r\n\r\n that.form.patchValue({\r\n latitude: e.latlng.lat,\r\n longitude: e.latlng.lng\r\n });\r\n\r\n that.addMarker(newMarker);\r\n\r\n that.markerAdded.emit(newMarker);\r\n } else {\r\n that.drawAloneMarker(e.latlng.lat, e.latlng.lng);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude\r\n * are different from the provided values. It updates the first marker's latitude and longitude if the\r\n * marker array is not empty.\r\n *\r\n * @param {number} lat - The latitude of the marker\r\n * @param {number} lng - The longitude of the marker\r\n */\r\n private drawAloneMarker(lat: number, lng: number): void {\r\n if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {\r\n if (this.mapMarkers()?.[0]?.lat !== lat || this.mapMarkers()?.[0]?.lng !== lng) {\r\n this.mapMarkers.update((markers: MarkerMap[]): MarkerMap[] => {\r\n if (markers?.length) {\r\n markers[0].lat = lat;\r\n markers[0].lng = lng;\r\n }\r\n return markers;\r\n });\r\n\r\n this.drawMarkers();\r\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add marker to map\r\n * @param center - center of the circle\r\n * @param radius - radius of the circle in meters\r\n * @private\r\n */\r\n private addCircle(center: MarkerMap, radius: number): void {\r\n if (this.map && center?.lat && center?.lng) {\r\n this.drawMarkers();\r\n L.circleMarker([center.lat, center.lng], { radius: radius ?? 10 }).addTo(this.map);\r\n }\r\n }\r\n\r\n /**\r\n * Add marker to map\r\n * @param marker - Point of the map\r\n * @param canAdd\r\n */\r\n private addMarker(marker: MarkerMap, canAdd: boolean = true): void {\r\n if (this.map && marker?.lat && marker?.lng) {\r\n const markerAdd: L.Marker = L.marker({\r\n lat: marker.lat,\r\n lng: marker.lng\r\n }, {\r\n draggable: marker?.draggable ?? true,\r\n autoPan: true\r\n }).setIcon(\r\n icon({\r\n iconSize: this.icon?.iconSize,\r\n iconAnchor: this.icon?.iconAnchor,\r\n iconUrl: this.icon?.iconUrl\r\n })\r\n ).addTo(this.layerGroup);\r\n\r\n if (canAdd) {\r\n this.mapMarkers.update((markers: MarkerMap[]): MarkerMap[] => {\r\n markers.push(marker);\r\n console.log(markers?.length);\r\n return markers;\r\n });\r\n }\r\n\r\n markerAdd.on('dragend', (): void => {\r\n this.changeCenter(markerAdd.getLatLng());\r\n this.markerDragend.emit(markerAdd.getLatLng());\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Put the map center on marker position\r\n * @param marker - Point of the map\r\n */\r\n public changeCenter(marker: L.LatLng): void {\r\n this.form.patchValue({\r\n latitude: marker.lat,\r\n longitude: marker.lng\r\n });\r\n this.map?.setView(marker);\r\n }\r\n\r\n /**\r\n * Propagates the change to other components.\r\n *\r\n * @param {any} _ - an arbitrary parameter.\r\n */\r\n propagateChange(_: any): void {\r\n };\r\n\r\n /**\r\n * Sets the callback function to be called when the value\r\n * of the control changes.\r\n *\r\n * @param {any} fn - The callback function to be called\r\n * when the value of the control changes.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function to be called when the form control is \"touched\".\r\n */\r\n registerOnTouched(): void {\r\n }\r\n\r\n /**\r\n * Sets the disabled state of the form.\r\n *\r\n * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.form.disable();\r\n } else {\r\n this.form.enable();\r\n }\r\n }\r\n\r\n /**\r\n * Writes a value to the form.\r\n *\r\n * @param {any} data - The data to be written.\r\n */\r\n writeValue(data: { latitude: number | string; longitude: number | string }): void {\r\n if (data?.latitude && data?.longitude) {\r\n this.form.patchValue({\r\n latitude: data.latitude,\r\n longitude: data.longitude\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the component and sets up a listener for changes in the form value.\r\n */\r\n ngOnInit(): void {\r\n this.form.valueChanges\r\n .pipe(takeUntil(GuajiritosMap._observableSubject$.asObservable()), distinctUntilChanged(), debounceTime(300))\r\n .subscribe((marker: { latitude: string, longitude: string }): void => {\r\n this.propagateChange(this.form.value);\r\n\r\n if (this.options().aloneMarker && marker.latitude && marker.longitude) {\r\n if (this.mapMarkers()?.length === 0) {\r\n this.addMarker({\r\n lat: Number(marker.latitude),\r\n lng: Number(marker.longitude),\r\n draggable: true\r\n });\r\n this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));\r\n } else {\r\n this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the map after the view has been initialized.\r\n */\r\n ngAfterViewInit(): void {\r\n this.initMap();\r\n }\r\n}\r\n","<div class=\"map-container\">\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\n [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\n </mat-form-field>\n </div>\n }\n\n <div [id]=\"options().id\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n</div>\n","/*\r\n * Public API Surface of guajiritos-map\r\n */\r\n\r\nexport * from './interfaces/interfaces';\r\nexport * from './lib/guajiritos-map.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface MapOption {
9
9
  updateWithDoubleClick?: boolean;
10
10
  zoom?: number;
11
11
  borderRadius?: string;
12
+ height?: string;
12
13
  scrollable?: boolean;
13
14
  zoomControl?: boolean;
14
15
  scrollWheelZoom?: boolean;
@@ -20,6 +20,8 @@ export declare class GuajiritosMap implements OnInit, AfterViewInit, ControlValu
20
20
  subscriptSizing: SubscriptSizing;
21
21
  readonly: boolean;
22
22
  hiddenForm: boolean;
23
+ showIcon: boolean;
24
+ showLabel: boolean;
23
25
  /**
24
26
  * Default map options
25
27
  */
@@ -74,12 +76,12 @@ export declare class GuajiritosMap implements OnInit, AfterViewInit, ControlValu
74
76
  /**
75
77
  * Add marker to map
76
78
  * @param marker - Point of the map
79
+ * @param canAdd
77
80
  */
78
81
  private addMarker;
79
82
  /**
80
83
  * Put the map center on marker position
81
84
  * @param marker - Point of the map
82
- * @public
83
85
  */
84
86
  changeCenter(marker: L.LatLng): void;
85
87
  /**
@@ -111,7 +113,10 @@ export declare class GuajiritosMap implements OnInit, AfterViewInit, ControlValu
111
113
  *
112
114
  * @param {any} data - The data to be written.
113
115
  */
114
- writeValue(data: any): void;
116
+ writeValue(data: {
117
+ latitude: number | string;
118
+ longitude: number | string;
119
+ }): void;
115
120
  /**
116
121
  * Initializes the component and sets up a listener for changes in the form value.
117
122
  */
@@ -121,5 +126,5 @@ export declare class GuajiritosMap implements OnInit, AfterViewInit, ControlValu
121
126
  */
122
127
  ngAfterViewInit(): void;
123
128
  static ɵfac: i0.ɵɵFactoryDeclaration<GuajiritosMap, never>;
124
- static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosMap, "guajiritos-map", never, { "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "hiddenForm": { "alias": "hiddenForm"; "required": false; }; "optionsMap": { "alias": "optionsMap"; "required": false; }; "circleConfig": { "alias": "circleConfig"; "required": false; }; "center": { "alias": "center"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; }, { "markerDragend": "markerDragend"; "markerAdded": "markerAdded"; }, never, never, true, never>;
129
+ static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosMap, "guajiritos-map", never, { "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "hiddenForm": { "alias": "hiddenForm"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "optionsMap": { "alias": "optionsMap"; "required": false; }; "circleConfig": { "alias": "circleConfig"; "required": false; }; "center": { "alias": "center"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; }, { "markerDragend": "markerDragend"; "markerAdded": "markerAdded"; }, never, never, true, never>;
125
130
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guajiritos/map",
3
- "version": "17.0.0",
3
+ "version": "17.0.1",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^17.0.0",
6
6
  "@angular/common": "^17.0.0",