@guajiritos/map 18.0.1 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,159 +1,159 @@
1
- # Guajiritos Map
2
-
3
- `Guajiritos Map` es una librería para Angular que permite la configuración de un mapa de `Leaflet` para su posterior uso de distintas formas.
4
-
5
- ## Instalación
6
-
7
- Con `npm`
8
-
9
- ```sh
10
- npm i @guajiritos/map --save
11
- ```
12
-
13
- Con `yarn`
14
-
15
- ```sh
16
- yarn add @guajiritos/map
17
- ```
18
-
19
- ## Nota
20
-
21
- Para el uso correcto de esta librería es necesario tener instalado previamente `@ngular/material`, `leaflet` y `@types/leaflet`. En caso de no tener instalado las librerías anteriormente descritas el uso de la librería `@guajiritos/map` derivaría en errores para su aplicación.
22
-
23
- ## Importación
24
-
25
- Importar la librería como se muestra a continuación.
26
-
27
- ```ts
28
- import {GuajiritosMap} from "@guajiritos/map";
29
- ```
30
-
31
- Luego añadirla a la sección imports.
32
-
33
- ```ts
34
- imports: [
35
- ...
36
- GuajiritosMap,
37
- ]
38
- ```
39
-
40
- ## Estilos
41
-
42
- Para usar correctamente los estilos del mapa debe poner en su archivo `angular.json` la línea de código `"./node_modules/leaflet/dist/leaflet.css",` como se muestra a continuación
43
-
44
- ```json
45
- {
46
- ...
47
- "projects": {
48
- "angular-leaflet-app": {
49
- ...
50
- "architect": {
51
- "build": {
52
- ...
53
- "options": {
54
- ...
55
- "styles": [
56
- "./node_modules/leaflet/dist/leaflet.css",
57
- "src/styles.css"
58
- ],
59
- ...
60
- }
61
- ...
62
- }
63
- ...
64
- }
65
- }
66
- }
67
- }
68
- ```
69
-
70
- Para que los marcadores de leaflet puedan ser vistos en el mapa debe agregar al archivo `angular.json` los siguientes etilos como se muestra a continuación
71
-
72
- ```json
73
- {
74
- ...
75
- "projects": {
76
- "angular-leaflet-example": {
77
- ...
78
- "architect": {
79
- "build": {
80
- ...
81
- "options": {
82
- ...
83
- "assets": [
84
- "src/favicon.ico",
85
- "src/assets",
86
- {
87
- "glob": "**/*",
88
- "input": "node_modules/leaflet/dist/images/",
89
- "output": "./assets"
90
- }
91
- ],
92
- ...
93
- }
94
- ...
95
- }
96
- ...
97
- }
98
- }
99
- }
100
- }
101
- ```
102
-
103
- Nota: En caso de querer quitar el cartel pequeño en la esquina inferior derecha, basta con poner en el `styles.css` o `styles.scss` las siguientes líneas de código
104
-
105
- ```scss
106
- .leaflet-bottom.leaflet-right {
107
- display: none;
108
- }
109
- ```
110
-
111
- ## Uso
112
-
113
- En nuestro archivo HTML debemos agregar la etiqueta `guajiritos-multi-chips` como se muestra a continuación.
114
-
115
- ```html
116
-
117
- <guajiritos-map [latLabel]="latLabel" [latPlaceholder]="latPlaceholder" [latError]="latError" [lngLabel]="lngLabel"
118
- [lngPlaceholder]="lngPlaceholder" [lngError]="lngError" [appearance]="appearance" [color]="color"
119
- [readonly]="false" [hidden]="false" [options]="options" [circle]="circle" [icon]="icon"
120
- [markers]="markers()" [formControl]="form" (markerDragend)="markerDragEnd($event)">
121
- </guajiritos-map>
122
- ```
123
-
124
- Cada una de las propiedades descritas en el ejemplo anterior no son de uso requerido. A continuación se explica cada una de ellas.
125
-
126
- ```text
127
- latLabel: Representa el label que se va a mostrar cuando se visualice el campo de la latitud.
128
-
129
- latPlaceholder: Representa el placeholder que se va a mostrar cuando se visualice el campo de la latitud.
130
-
131
- latError: Representa el error a mostrar cuando el campo latitud se encuentre vacío.
132
-
133
- lngLabel: Representa el label que se va a mostrar cuando se visualice el campo de la longitud.
134
-
135
- lngPlaceholder: Representa el placeholder que se va a mostrar cuando se visualice el campo de la longitud.
136
-
137
- lngError: Representa el error a mostrar cuando el campo longitud se encuentre vacío.
138
-
139
- appearance: Representa la apariencia del componente. Por defecto toma el valor "outline".
140
-
141
- color: Representa el color del componente. Por defecto su valor es "accent".
142
-
143
- readonly: Convierte en solo lectura los campos de latitud y longitud cuando sea necesario. Por defecto su valor es "false".
144
-
145
- hidden: Fuerza que los campos de latitud y longitud se oculten. Por defecto su valor es "false".
146
-
147
- options: Representa las opciones iniciales del mapa que va ser mostrado.
148
-
149
- circle: Utilizado para dibujar un círculo en el mapa.
150
-
151
- icon: Valor para representar el ícono de los marcadores que serán dibujados sobre el mapa.
152
-
153
- markers: Listado de marcadores que serán dibujados en el mapa. Éste listado debe estar representado en forma de arreglo de marcadores.
154
-
155
- formControl: Representa el FormControl al que se hace referencia en el formulario donde la librería es usada.
156
-
157
- markerDragEnd: Evento que se lanza cuando el marcador es movido de una posición a otra.
158
- ```
159
-
1
+ # Guajiritos Map
2
+
3
+ `Guajiritos Map` es una librería para Angular que permite la configuración de un mapa de `Leaflet` para su posterior uso de distintas formas.
4
+
5
+ ## Instalación
6
+
7
+ Con `npm`
8
+
9
+ ```sh
10
+ npm i @guajiritos/map --save
11
+ ```
12
+
13
+ Con `yarn`
14
+
15
+ ```sh
16
+ yarn add @guajiritos/map
17
+ ```
18
+
19
+ ## Nota
20
+
21
+ Para el uso correcto de esta librería es necesario tener instalado previamente `@ngular/material`, `leaflet` y `@types/leaflet`. En caso de no tener instalado las librerías anteriormente descritas el uso de la librería `@guajiritos/map` derivaría en errores para su aplicación.
22
+
23
+ ## Importación
24
+
25
+ Importar la librería como se muestra a continuación.
26
+
27
+ ```ts
28
+ import {GuajiritosMap} from "@guajiritos/map";
29
+ ```
30
+
31
+ Luego añadirla a la sección imports.
32
+
33
+ ```ts
34
+ imports: [
35
+ ...
36
+ GuajiritosMap,
37
+ ]
38
+ ```
39
+
40
+ ## Estilos
41
+
42
+ Para usar correctamente los estilos del mapa debe poner en su archivo `angular.json` la línea de código `"./node_modules/leaflet/dist/leaflet.css",` como se muestra a continuación
43
+
44
+ ```json
45
+ {
46
+ ...
47
+ "projects": {
48
+ "angular-leaflet-app": {
49
+ ...
50
+ "architect": {
51
+ "build": {
52
+ ...
53
+ "options": {
54
+ ...
55
+ "styles": [
56
+ "./node_modules/leaflet/dist/leaflet.css",
57
+ "src/styles.css"
58
+ ],
59
+ ...
60
+ }
61
+ ...
62
+ }
63
+ ...
64
+ }
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ Para que los marcadores de leaflet puedan ser vistos en el mapa debe agregar al archivo `angular.json` los siguientes etilos como se muestra a continuación
71
+
72
+ ```json
73
+ {
74
+ ...
75
+ "projects": {
76
+ "angular-leaflet-example": {
77
+ ...
78
+ "architect": {
79
+ "build": {
80
+ ...
81
+ "options": {
82
+ ...
83
+ "assets": [
84
+ "src/favicon.ico",
85
+ "src/assets",
86
+ {
87
+ "glob": "**/*",
88
+ "input": "node_modules/leaflet/dist/images/",
89
+ "output": "./assets"
90
+ }
91
+ ],
92
+ ...
93
+ }
94
+ ...
95
+ }
96
+ ...
97
+ }
98
+ }
99
+ }
100
+ }
101
+ ```
102
+
103
+ Nota: En caso de querer quitar el cartel pequeño en la esquina inferior derecha, basta con poner en el `styles.css` o `styles.scss` las siguientes líneas de código
104
+
105
+ ```scss
106
+ .leaflet-bottom.leaflet-right {
107
+ display: none;
108
+ }
109
+ ```
110
+
111
+ ## Uso
112
+
113
+ En nuestro archivo HTML debemos agregar la etiqueta `guajiritos-multi-chips` como se muestra a continuación.
114
+
115
+ ```html
116
+
117
+ <guajiritos-map [latLabel]="latLabel" [latPlaceholder]="latPlaceholder" [latError]="latError" [lngLabel]="lngLabel"
118
+ [lngPlaceholder]="lngPlaceholder" [lngError]="lngError" [appearance]="appearance" [color]="color"
119
+ [readonly]="false" [hidden]="false" [options]="options" [circle]="circle" [icon]="icon"
120
+ [markers]="markers()" [formControl]="form" (markerDragend)="markerDragEnd($event)">
121
+ </guajiritos-map>
122
+ ```
123
+
124
+ Cada una de las propiedades descritas en el ejemplo anterior no son de uso requerido. A continuación se explica cada una de ellas.
125
+
126
+ ```text
127
+ latLabel: Representa el label que se va a mostrar cuando se visualice el campo de la latitud.
128
+
129
+ latPlaceholder: Representa el placeholder que se va a mostrar cuando se visualice el campo de la latitud.
130
+
131
+ latError: Representa el error a mostrar cuando el campo latitud se encuentre vacío.
132
+
133
+ lngLabel: Representa el label que se va a mostrar cuando se visualice el campo de la longitud.
134
+
135
+ lngPlaceholder: Representa el placeholder que se va a mostrar cuando se visualice el campo de la longitud.
136
+
137
+ lngError: Representa el error a mostrar cuando el campo longitud se encuentre vacío.
138
+
139
+ appearance: Representa la apariencia del componente. Por defecto toma el valor "outline".
140
+
141
+ color: Representa el color del componente. Por defecto su valor es "accent".
142
+
143
+ readonly: Convierte en solo lectura los campos de latitud y longitud cuando sea necesario. Por defecto su valor es "false".
144
+
145
+ hidden: Fuerza que los campos de latitud y longitud se oculten. Por defecto su valor es "false".
146
+
147
+ options: Representa las opciones iniciales del mapa que va ser mostrado.
148
+
149
+ circle: Utilizado para dibujar un círculo en el mapa.
150
+
151
+ icon: Valor para representar el ícono de los marcadores que serán dibujados sobre el mapa.
152
+
153
+ markers: Listado de marcadores que serán dibujados en el mapa. Éste listado debe estar representado en forma de arreglo de marcadores.
154
+
155
+ formControl: Representa el FormControl al que se hace referencia en el formulario donde la librería es usada.
156
+
157
+ markerDragEnd: Evento que se lanza cuando el marcador es movido de una posición a otra.
158
+ ```
159
+
@@ -1,20 +1,19 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, DestroyRef, signal, EventEmitter, forwardRef, Component, Input, Output } from '@angular/core';
2
+ import { inject, DestroyRef, signal, EventEmitter, forwardRef, Output, Input, Component } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as L from 'leaflet';
6
6
  import { LatLng, layerGroup, icon } from 'leaflet';
7
7
  import * as i2 from '@angular/material/input';
8
8
  import { MatInputModule } from '@angular/material/input';
9
- import * as i4 from '@angular/forms';
10
- import { UntypedFormGroup, UntypedFormControl, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule } from '@angular/forms';
11
- import * as i5 from '@angular/material/icon';
9
+ import * as i3 from '@angular/forms';
10
+ import { UntypedFormGroup, UntypedFormControl, Validators, ReactiveFormsModule, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
11
+ import * as i4 from '@angular/material/icon';
12
12
  import { MatIconModule } from '@angular/material/icon';
13
13
  import { distinctUntilChanged, debounceTime } from 'rxjs';
14
- import * as i6 from '@ngx-translate/core';
14
+ import * as i5 from '@ngx-translate/core';
15
15
  import { TranslateModule } from '@ngx-translate/core';
16
16
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
17
- import * as i3 from '@angular/material/form-field';
18
17
 
19
18
  const DEFAULT_MAP_OPTION = {
20
19
  center: [23.130257185291036, -82.35626220703126],
@@ -31,6 +30,7 @@ const DEFAULT_MAP_OPTION = {
31
30
  scrollable: false,
32
31
  };
33
32
 
33
+ const LATITUDE_LONGITUDE = /^(-?\d+(\.\d+)?)$/;
34
34
  class GuajiritosMap {
35
35
  constructor() {
36
36
  this._destroyedRef = inject(DestroyRef);
@@ -39,8 +39,8 @@ class GuajiritosMap {
39
39
  this.options = signal(DEFAULT_MAP_OPTION);
40
40
  this.circle = signal(null);
41
41
  this.form = new UntypedFormGroup({
42
- latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required]),
43
- longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required])
42
+ latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required, Validators.pattern(LATITUDE_LONGITUDE)]),
43
+ longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required, Validators.pattern(LATITUDE_LONGITUDE)])
44
44
  });
45
45
  this.appearance = 'outline';
46
46
  this.color = 'accent';
@@ -327,27 +327,32 @@ class GuajiritosMap {
327
327
  this.form.valueChanges
328
328
  .pipe(takeUntilDestroyed(this._destroyedRef), distinctUntilChanged(), debounceTime(300))
329
329
  .subscribe((marker) => {
330
- this.propagateChange(this.form.value);
331
- if (this.options().aloneMarker && marker.latitude && marker.longitude) {
332
- if (this.mapMarkers()?.length === 0) {
333
- this.addMarker({
334
- lat: Number(marker.latitude),
335
- lng: Number(marker.longitude),
336
- draggable: true
337
- });
338
- this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));
339
- }
340
- else {
341
- this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));
330
+ if (this.form.valid) {
331
+ this.propagateChange(this.form.value);
332
+ if (this.options().aloneMarker && marker.latitude && marker.longitude) {
333
+ if (this.mapMarkers()?.length === 0) {
334
+ this.addMarker({
335
+ lat: Number(marker.latitude),
336
+ lng: Number(marker.longitude),
337
+ draggable: true
338
+ });
339
+ this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));
340
+ }
341
+ else {
342
+ this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));
343
+ }
342
344
  }
343
345
  }
346
+ else {
347
+ this.propagateChange(null);
348
+ }
344
349
  });
345
350
  }
346
351
  ngAfterViewInit() {
347
352
  this.initMap();
348
353
  }
349
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
350
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", mapId: "mapId", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded", markerClicked: "markerClicked" }, providers: [
354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", mapId: "mapId", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded", markerClicked: "markerClicked" }, providers: [
351
356
  {
352
357
  provide: NG_VALUE_ACCESSOR,
353
358
  useExisting: forwardRef(() => GuajiritosMap),
@@ -358,11 +363,11 @@ class GuajiritosMap {
358
363
  useExisting: forwardRef(() => GuajiritosMap),
359
364
  multi: true
360
365
  }
361
- ], ngImport: i0, template: "@if (mapId) {\r\n <div class=\"map-container\">\r\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\r\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\r\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\r\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n }\r\n\r\n <div [id]=\"mapId\" class=\"map\"\r\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\r\n </div>\r\n}\r\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" }] }); }
366
+ ], ngImport: i0, template: "@if (mapId) {\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]=\"mapId\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n </div>\n}\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", "disabledInteractive"], 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" }] }); }
362
367
  }
363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GuajiritosMap, decorators: [{
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: GuajiritosMap, decorators: [{
364
369
  type: Component,
365
- args: [{ selector: 'guajiritos-map', standalone: true, imports: [
370
+ args: [{ selector: 'guajiritos-map', imports: [
366
371
  CommonModule,
367
372
  MatInputModule,
368
373
  ReactiveFormsModule,
@@ -379,7 +384,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
379
384
  useExisting: forwardRef(() => GuajiritosMap),
380
385
  multi: true
381
386
  }
382
- ], template: "@if (mapId) {\r\n <div class=\"map-container\">\r\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\r\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\r\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\r\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n }\r\n\r\n <div [id]=\"mapId\" class=\"map\"\r\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\r\n </div>\r\n}\r\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"] }]
387
+ ], template: "@if (mapId) {\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]=\"mapId\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n </div>\n}\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"] }]
383
388
  }], propDecorators: { appearance: [{
384
389
  type: Input
385
390
  }], color: [{
@@ -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 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 id?: string;\r\n alt?: number;\r\n popupContent?: string;\r\n draggable?: boolean;\r\n clickable?: 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 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 DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\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_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n ValidationErrors,\r\n Validator,\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 } from 'rxjs';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GuajiritosMap),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class GuajiritosMap implements OnInit, AfterViewInit, ControlValueAccessor, Validator {\r\n private _destroyedRef: DestroyRef = inject(DestroyRef);\r\n\r\n private map: Map;\r\n private layerGroup: LayerGroup = new L.LayerGroup();\r\n\r\n public mapMarkers: WritableSignal<MarkerMap[]> = signal([]);\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 @Input() mapId: string = 'map';\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 this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\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 @Output() markerClicked: 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.mapId, {\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 alt: marker?.alt ?? 0,\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 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 if (marker?.popupContent) {\r\n markerAdd.on('mouseover', (): void => {\r\n const popup: L.Popup = L.popup({\r\n className: 'guajiritos-marker-popup',\r\n closeButton: false,\r\n offset: new L.Point(0, -32)\r\n })\r\n .setLatLng(markerAdd.getLatLng())\r\n .setContent(marker.popupContent)\r\n .addTo(this.layerGroup);\r\n\r\n document.querySelector('.guajiritos-marker-popup')\r\n .addEventListener('click', (): void => {\r\n this.markerClicked.emit(marker);\r\n })\r\n });\r\n }\r\n\r\n if (marker?.clickable) {\r\n markerAdd.on('click', (): void => {\r\n this.markerClicked.emit(marker);\r\n });\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 public validate(): ValidationErrors {\r\n return this.form.invalid ? { wrongLocation: true } : null;\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(\r\n takeUntilDestroyed(this._destroyedRef),\r\n distinctUntilChanged(),\r\n debounceTime(300)\r\n )\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 ngAfterViewInit(): void {\r\n this.initMap();\r\n }\r\n}\r\n","@if (mapId) {\r\n <div class=\"map-container\">\r\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\r\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\r\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\r\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n }\r\n\r\n <div [id]=\"mapId\" class=\"map\"\r\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\r\n </div>\r\n}\r\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":["\n/**\n * Map options interface\n */\nexport interface MapOption {\n center?: [number, number];\n draggable?: boolean;\n updateWithClick?: boolean;\n updateWithDoubleClick?: boolean;\n zoom?: number;\n borderRadius?: string;\n height?: string;\n scrollable?: boolean;\n zoomControl?: boolean;\n scrollWheelZoom?: boolean;\n addMarker?: boolean;\n aloneMarker?: boolean;\n}\n\n/**\n * Marker interface\n */\nexport interface MarkerMap {\n lat: number;\n lng: number;\n id?: string;\n alt?: number;\n popupContent?: string;\n draggable?: boolean;\n clickable?: boolean;\n}\n\n/**\n * Icon interface\n */\nexport interface Icon {\n iconSize: [number, number];\n iconAnchor: [number, number];\n iconUrl: string;\n iconRetinaUrl?: string,\n shadowUrl?: string,\n popupAnchor?: [number, number],\n tooltipAnchor?: [number, number],\n shadowSize?: [number, number],\n}\n\n/**\n * Circle map interface\n */\nexport interface CircleMap {\n center: MarkerMap;\n radius: number;\n}\n\nexport const DEFAULT_MAP_OPTION: MapOption = {\n center: [23.130257185291036, -82.35626220703126],\n draggable: true,\n zoom: 15,\n updateWithClick: false,\n updateWithDoubleClick: false,\n zoomControl: true,\n borderRadius: '8px',\n height: '400px',\n scrollWheelZoom: false,\n addMarker: false,\n aloneMarker: true,\n scrollable: false,\n};\n","import {\n AfterViewInit,\n Component,\n DestroyRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnInit,\n Output,\n signal,\n WritableSignal\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as L from 'leaflet';\nimport { icon, LatLng, LatLngExpression, layerGroup, LayerGroup, Map } from 'leaflet';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ThemePalette } from '@angular/material/core';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CircleMap, DEFAULT_MAP_OPTION, Icon, MapOption, MarkerMap } from '../interfaces/interfaces';\n\nconst LATITUDE_LONGITUDE = /^(-?\\d+(\\.\\d+)?)$/;\n\n@Component({\n selector: 'guajiritos-map',\n templateUrl: './guajiritos-map.component.html',\n styleUrls: ['./guajiritos-map.component.scss'],\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n MatIconModule,\n TranslateModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuajiritosMap),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GuajiritosMap),\n multi: true\n }\n ]\n})\nexport class GuajiritosMap implements OnInit, AfterViewInit, ControlValueAccessor, Validator {\n private _destroyedRef: DestroyRef = inject(DestroyRef);\n private map: Map;\n private layerGroup: LayerGroup = new L.LayerGroup();\n\n public mapMarkers: WritableSignal<MarkerMap[]> = signal([]);\n public options: WritableSignal<MapOption> = signal(DEFAULT_MAP_OPTION);\n public circle: WritableSignal<CircleMap> = signal(null);\n\n public form: UntypedFormGroup = new UntypedFormGroup({\n latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required, Validators.pattern(LATITUDE_LONGITUDE)]),\n longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required, Validators.pattern(LATITUDE_LONGITUDE)])\n });\n\n @Input() appearance: MatFormFieldAppearance = 'outline';\n @Input() color: ThemePalette = 'accent';\n @Input() floatLabel: FloatLabelType = 'always';\n @Input() subscriptSizing: SubscriptSizing = 'dynamic';\n\n @Input() readonly: boolean = false;\n @Input() hiddenForm: boolean = false;\n @Input() showIcon: boolean = true;\n @Input() showLabel: boolean = true;\n\n @Input() mapId: string = 'map';\n\n /**\n * Default map options\n */\n @Input() set optionsMap(options: Partial<MapOption>) {\n if (options) {\n this.options.set({\n ...this.options(),\n ...options\n });\n }\n };\n\n /**\n * Add a circle on the map\n */\n @Input() set circleConfig(circle: CircleMap) {\n if (circle) {\n this.circle.set(circle);\n\n if (this.map) {\n this.addCircle(this.circle()?.center, this.circle()?.radius);\n }\n }\n }\n\n @Input() set center(center: MarkerMap) {\n if (center) {\n this.changeCenter(new LatLng(center.lat, center.lng));\n }\n }\n\n /**\n * Default marker icon\n */\n @Input() icon: Icon = {\n iconSize: [25, 41],\n iconAnchor: [13, 41],\n iconUrl: 'leaflet/marker-icon.png'\n };\n\n /**\n * List of markers\n * @param markers - Markers array\n */\n @Input() set markers(markers: MarkerMap[]) {\n if (markers?.length) {\n this.mapMarkers.set(markers);\n\n this.form.patchValue({\n latitude: this.mapMarkers()?.[0]?.lat,\n longitude: this.mapMarkers()?.[0]?.lng\n });\n\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\n\n if (this.map && this.layerGroup) {\n this.drawMarkers();\n }\n }\n }\n\n /**\n * Se lanza cada vez que cambia un marcador\n */\n @Output() markerDragend: EventEmitter<LatLng> = new EventEmitter();\n /**\n * Se lanza cada vez que se añade un marcador\n */\n @Output() markerAdded: EventEmitter<MarkerMap> = new EventEmitter();\n\n @Output() markerClicked: EventEmitter<MarkerMap> = new EventEmitter();\n\n /**\n * Draws the markers.\n */\n private drawMarkers(): void {\n if (this.mapMarkers()?.length) {\n this.layerGroup.clearLayers();\n this.mapMarkers().forEach((m: MarkerMap): void => {\n this.addMarker(m, false);\n });\n }\n }\n\n /**\n * Main properties of the map\n * @private\n */\n private initMap(): void {\n this.map = L.map(this.mapId, {\n center: this.options()?.center as LatLngExpression ?? DEFAULT_MAP_OPTION.center,\n dragging: this.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable,\n zoom: this.options()?.zoom ?? DEFAULT_MAP_OPTION.zoom,\n zoomControl: this.options()?.zoomControl || DEFAULT_MAP_OPTION.zoomControl,\n scrollWheelZoom: this.options()?.scrollWheelZoom || DEFAULT_MAP_OPTION.scrollWheelZoom,\n maxZoom: 18,\n minZoom: 3\n });\n\n this.layerGroup = layerGroup().addTo(this.map);\n\n L.tileLayer('http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png').addTo(this.map);\n\n this.drawMarkers();\n\n if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\n }\n\n if (this.circle()) {\n this.addCircle(this.circle()?.center, this.circle()?.radius);\n }\n\n if (this.options()?.addMarker) {\n let that = this;\n this.map.on('click', function (e: L.LeafletMouseEvent): void {\n if (that.mapMarkers().length === 0 || (that.mapMarkers().length > 0 && !that.options()?.aloneMarker)) {\n const newMarker: MarkerMap = {\n lat: e.latlng.lat,\n lng: e.latlng.lng,\n draggable: that.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable\n };\n\n that.form.patchValue({\n latitude: e.latlng.lat,\n longitude: e.latlng.lng\n });\n\n that.addMarker(newMarker);\n\n that.markerAdded.emit(newMarker);\n } else {\n that.drawAloneMarker(e.latlng.lat, e.latlng.lng);\n }\n });\n }\n }\n\n /**\n * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude\n * are different from the provided values. It updates the first marker's latitude and longitude if the\n * marker array is not empty.\n *\n * @param {number} lat - The latitude of the marker\n * @param {number} lng - The longitude of the marker\n */\n private drawAloneMarker(lat: number, lng: number): void {\n if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {\n if (this.mapMarkers()[0].lat !== lat || this.mapMarkers()[0].lng !== lng) {\n this.mapMarkers.update((markers: MarkerMap[]): MarkerMap[] => {\n if (markers?.length) {\n markers[0].lat = lat;\n markers[0].lng = lng;\n }\n return markers;\n });\n\n this.drawMarkers();\n this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));\n }\n }\n }\n\n /**\n * Add marker to map\n * @param center - center of the circle\n * @param radius - radius of the circle in meters\n * @private\n */\n private addCircle(center: MarkerMap, radius: number): void {\n if (this.map && center?.lat && center?.lng) {\n this.drawMarkers();\n L.circleMarker([center.lat, center.lng], { radius: radius ?? 10 }).addTo(this.map);\n }\n }\n\n /**\n * Add marker to map\n * @param marker - Point of the map\n * @param canAdd\n */\n private addMarker(marker: MarkerMap, canAdd: boolean = true): void {\n if (this.map && marker?.lat && marker?.lng) {\n const markerAdd: L.Marker = L.marker({\n lat: marker.lat,\n lng: marker.lng,\n alt: marker?.alt ?? 0,\n }, {\n draggable: marker?.draggable ?? true,\n autoPan: true\n }).setIcon(\n icon({\n iconSize: this.icon?.iconSize,\n iconAnchor: this.icon?.iconAnchor,\n iconUrl: this.icon?.iconUrl\n })\n ).addTo(this.layerGroup);\n\n if (canAdd) {\n this.mapMarkers.update((markers: MarkerMap[]): MarkerMap[] => {\n markers.push(marker);\n return markers;\n });\n }\n\n markerAdd.on('dragend', (): void => {\n this.changeCenter(markerAdd.getLatLng());\n this.markerDragend.emit(markerAdd.getLatLng());\n });\n\n if (marker?.popupContent) {\n markerAdd.on('mouseover', (): void => {\n const popup: L.Popup = L.popup({\n className: 'guajiritos-marker-popup',\n closeButton: false,\n offset: new L.Point(0, -32)\n })\n .setLatLng(markerAdd.getLatLng())\n .setContent(marker.popupContent)\n .addTo(this.layerGroup);\n\n document.querySelector('.guajiritos-marker-popup')\n .addEventListener('click', (): void => {\n this.markerClicked.emit(marker);\n })\n });\n }\n\n if (marker?.clickable) {\n markerAdd.on('click', (): void => {\n this.markerClicked.emit(marker);\n });\n }\n }\n }\n\n /**\n * Put the map center on marker position\n * @param marker - Point of the map\n */\n public changeCenter(marker: L.LatLng): void {\n this.form.patchValue({\n latitude: marker.lat,\n longitude: marker.lng\n });\n this.map?.setView(marker);\n }\n\n /**\n * Propagates the change to other components.\n *\n * @param {any} _ - an arbitrary parameter.\n */\n propagateChange(_: any): void {\n };\n\n /**\n * Sets the callback function to be called when the value\n * of the control changes.\n *\n * @param {any} fn - The callback function to be called\n * when the value of the control changes.\n */\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the form control is \"touched\".\n */\n registerOnTouched(): void {\n }\n\n /**\n * Sets the disabled state of the form.\n *\n * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.\n */\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n /**\n * Writes a value to the form.\n *\n * @param {any} data - The data to be written.\n */\n writeValue(data: { latitude: number | string; longitude: number | string }): void {\n if (data?.latitude && data?.longitude) {\n this.form.patchValue({\n latitude: data.latitude,\n longitude: data.longitude\n });\n }\n }\n\n public validate(): ValidationErrors {\n return this.form.invalid ? { wrongLocation: true } : null;\n }\n\n /**\n * Initializes the component and sets up a listener for changes in the form value.\n */\n ngOnInit(): void {\n this.form.valueChanges\n .pipe(\n takeUntilDestroyed(this._destroyedRef),\n distinctUntilChanged(),\n debounceTime(300)\n )\n .subscribe((marker: { latitude: string, longitude: string }): void => {\n if (this.form.valid) {\n this.propagateChange(this.form.value);\n\n if (this.options().aloneMarker && marker.latitude && marker.longitude) {\n if (this.mapMarkers()?.length === 0) {\n this.addMarker({\n lat: Number(marker.latitude),\n lng: Number(marker.longitude),\n draggable: true\n });\n this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));\n } else {\n this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));\n }\n }\n } else {\n this.propagateChange(null);\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initMap();\n }\n}\n","@if (mapId) {\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]=\"mapId\" class=\"map\"\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\n </div>\n}\n","/*\n * Public API Surface of guajiritos-map\n */\n\nexport * from './interfaces/interfaces';\nexport * from './lib/guajiritos-map.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guajiritos/map",
3
- "version": "18.0.1",
3
+ "version": "19.0.0",
4
4
  "maintainers": [
5
5
  {
6
6
  "name": "Alejandro Ravelo Julian",
@@ -8,10 +8,10 @@
8
8
  }
9
9
  ],
10
10
  "peerDependencies": {
11
- "@angular/cdk": "^17.0.0",
12
- "@angular/common": "^17.0.0",
13
- "@angular/core": "^17.0.0",
14
- "@angular/material": "^17.0.0",
11
+ "@angular/cdk": "^19.2.17",
12
+ "@angular/common": "^19.2.12",
13
+ "@angular/core": "^19.2.12",
14
+ "@angular/material": "^19.2.17",
15
15
  "leaflet": "^1.9.0"
16
16
  },
17
17
  "dependencies": {
@@ -26,8 +26,6 @@
26
26
  },
27
27
  ".": {
28
28
  "types": "./index.d.ts",
29
- "esm2022": "./esm2022/guajiritos-map.mjs",
30
- "esm": "./esm2022/guajiritos-map.mjs",
31
29
  "default": "./fesm2022/guajiritos-map.mjs"
32
30
  }
33
31
  }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhamlyaXRvcy1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9ndWFqaXJpdG9zLW1hcC9zcmMvZ3VhamlyaXRvcy1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,15 +0,0 @@
1
- export const DEFAULT_MAP_OPTION = {
2
- center: [23.130257185291036, -82.35626220703126],
3
- draggable: true,
4
- zoom: 15,
5
- updateWithClick: false,
6
- updateWithDoubleClick: false,
7
- zoomControl: true,
8
- borderRadius: '8px',
9
- height: '400px',
10
- scrollWheelZoom: false,
11
- addMarker: false,
12
- aloneMarker: true,
13
- scrollable: false,
14
- };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1YWppcml0b3MtbWFwL3NyYy9pbnRlcmZhY2VzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0RBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFjO0lBQzNDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsU0FBUyxFQUFFLElBQUk7SUFDZixJQUFJLEVBQUUsRUFBRTtJQUNSLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLHFCQUFxQixFQUFFLEtBQUs7SUFDNUIsV0FBVyxFQUFFLElBQUk7SUFDakIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsTUFBTSxFQUFFLE9BQU87SUFDZixlQUFlLEVBQUUsS0FBSztJQUN0QixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsSUFBSTtJQUNqQixVQUFVLEVBQUUsS0FBSztDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBNYXAgb3B0aW9ucyBpbnRlcmZhY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwT3B0aW9uIHtcclxuICBjZW50ZXI/OiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIGRyYWdnYWJsZT86IGJvb2xlYW47XHJcbiAgdXBkYXRlV2l0aENsaWNrPzogYm9vbGVhbjtcclxuICB1cGRhdGVXaXRoRG91YmxlQ2xpY2s/OiBib29sZWFuO1xyXG4gIHpvb20/OiBudW1iZXI7XHJcbiAgYm9yZGVyUmFkaXVzPzogc3RyaW5nO1xyXG4gIGhlaWdodD86IHN0cmluZztcclxuICBzY3JvbGxhYmxlPzogYm9vbGVhbjtcclxuICB6b29tQ29udHJvbD86IGJvb2xlYW47XHJcbiAgc2Nyb2xsV2hlZWxab29tPzogYm9vbGVhbjtcclxuICBhZGRNYXJrZXI/OiBib29sZWFuO1xyXG4gIGFsb25lTWFya2VyPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmtlciBpbnRlcmZhY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFya2VyTWFwIHtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxuICBpZD86IHN0cmluZztcclxuICBhbHQ/OiBudW1iZXI7XHJcbiAgcG9wdXBDb250ZW50Pzogc3RyaW5nO1xyXG4gIGRyYWdnYWJsZT86IGJvb2xlYW47XHJcbiAgY2xpY2thYmxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEljb24gaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xyXG4gIGljb25TaXplOiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIGljb25BbmNob3I6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgaWNvblVybDogc3RyaW5nO1xyXG4gIGljb25SZXRpbmFVcmw/OiBzdHJpbmcsXHJcbiAgc2hhZG93VXJsPzogc3RyaW5nLFxyXG4gIHBvcHVwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcclxuICB0b29sdGlwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcclxuICBzaGFkb3dTaXplPzogW251bWJlciwgbnVtYmVyXSxcclxufVxyXG5cclxuLyoqXHJcbiAqIENpcmNsZSBtYXAgaW50ZXJmYWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENpcmNsZU1hcCB7XHJcbiAgY2VudGVyOiBNYXJrZXJNYXA7XHJcbiAgcmFkaXVzOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9PUFRJT046IE1hcE9wdGlvbiA9IHtcclxuICBjZW50ZXI6IFsyMy4xMzAyNTcxODUyOTEwMzYsIC04Mi4zNTYyNjIyMDcwMzEyNl0sXHJcbiAgZHJhZ2dhYmxlOiB0cnVlLFxyXG4gIHpvb206IDE1LFxyXG4gIHVwZGF0ZVdpdGhDbGljazogZmFsc2UsXHJcbiAgdXBkYXRlV2l0aERvdWJsZUNsaWNrOiBmYWxzZSxcclxuICB6b29tQ29udHJvbDogdHJ1ZSxcclxuICBib3JkZXJSYWRpdXM6ICc4cHgnLFxyXG4gIGhlaWdodDogJzQwMHB4JyxcclxuICBzY3JvbGxXaGVlbFpvb206IGZhbHNlLFxyXG4gIGFkZE1hcmtlcjogZmFsc2UsXHJcbiAgYWxvbmVNYXJrZXI6IHRydWUsXHJcbiAgc2Nyb2xsYWJsZTogZmFsc2UsXHJcbn07XHJcbiJdfQ==
@@ -1,403 +0,0 @@
1
- import { Component, DestroyRef, EventEmitter, forwardRef, inject, Input, Output, signal } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as L from 'leaflet';
4
- import { icon, LatLng, layerGroup } from 'leaflet';
5
- import { MatInputModule } from '@angular/material/input';
6
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { debounceTime, distinctUntilChanged } from 'rxjs';
9
- import { TranslateModule } from '@ngx-translate/core';
10
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
- import { DEFAULT_MAP_OPTION } from '../interfaces/interfaces';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/common";
14
- import * as i2 from "@angular/material/input";
15
- import * as i3 from "@angular/material/form-field";
16
- import * as i4 from "@angular/forms";
17
- import * as i5 from "@angular/material/icon";
18
- import * as i6 from "@ngx-translate/core";
19
- export class GuajiritosMap {
20
- constructor() {
21
- this._destroyedRef = inject(DestroyRef);
22
- this.layerGroup = new L.LayerGroup();
23
- this.mapMarkers = signal([]);
24
- this.options = signal(DEFAULT_MAP_OPTION);
25
- this.circle = signal(null);
26
- this.form = new UntypedFormGroup({
27
- latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required]),
28
- longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required])
29
- });
30
- this.appearance = 'outline';
31
- this.color = 'accent';
32
- this.floatLabel = 'always';
33
- this.subscriptSizing = 'dynamic';
34
- this.readonly = false;
35
- this.hiddenForm = false;
36
- this.showIcon = true;
37
- this.showLabel = true;
38
- this.mapId = 'map';
39
- /**
40
- * Default marker icon
41
- */
42
- this.icon = {
43
- iconSize: [25, 41],
44
- iconAnchor: [13, 41],
45
- iconUrl: 'leaflet/marker-icon.png'
46
- };
47
- /**
48
- * Se lanza cada vez que cambia un marcador
49
- */
50
- this.markerDragend = new EventEmitter();
51
- /**
52
- * Se lanza cada vez que se añade un marcador
53
- */
54
- this.markerAdded = new EventEmitter();
55
- this.markerClicked = new EventEmitter();
56
- }
57
- /**
58
- * Default map options
59
- */
60
- set optionsMap(options) {
61
- if (options) {
62
- this.options.set({
63
- ...this.options(),
64
- ...options
65
- });
66
- }
67
- }
68
- ;
69
- /**
70
- * Add a circle on the map
71
- */
72
- set circleConfig(circle) {
73
- if (circle) {
74
- this.circle.set(circle);
75
- if (this.map) {
76
- this.addCircle(this.circle()?.center, this.circle()?.radius);
77
- }
78
- }
79
- }
80
- set center(center) {
81
- if (center) {
82
- this.changeCenter(new LatLng(center.lat, center.lng));
83
- }
84
- }
85
- /**
86
- * List of markers
87
- * @param markers - Markers array
88
- */
89
- set markers(markers) {
90
- if (markers?.length) {
91
- this.mapMarkers.set(markers);
92
- this.form.patchValue({
93
- latitude: this.mapMarkers()?.[0]?.lat,
94
- longitude: this.mapMarkers()?.[0]?.lng
95
- });
96
- this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));
97
- if (this.map && this.layerGroup) {
98
- this.drawMarkers();
99
- }
100
- }
101
- }
102
- /**
103
- * Draws the markers.
104
- */
105
- drawMarkers() {
106
- if (this.mapMarkers()?.length) {
107
- this.layerGroup.clearLayers();
108
- this.mapMarkers().forEach((m) => {
109
- this.addMarker(m, false);
110
- });
111
- }
112
- }
113
- /**
114
- * Main properties of the map
115
- * @private
116
- */
117
- initMap() {
118
- this.map = L.map(this.mapId, {
119
- center: this.options()?.center ?? DEFAULT_MAP_OPTION.center,
120
- dragging: this.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable,
121
- zoom: this.options()?.zoom ?? DEFAULT_MAP_OPTION.zoom,
122
- zoomControl: this.options()?.zoomControl || DEFAULT_MAP_OPTION.zoomControl,
123
- scrollWheelZoom: this.options()?.scrollWheelZoom || DEFAULT_MAP_OPTION.scrollWheelZoom,
124
- maxZoom: 18,
125
- minZoom: 3
126
- });
127
- this.layerGroup = layerGroup().addTo(this.map);
128
- L.tileLayer('http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png').addTo(this.map);
129
- this.drawMarkers();
130
- if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {
131
- this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));
132
- }
133
- if (this.circle()) {
134
- this.addCircle(this.circle()?.center, this.circle()?.radius);
135
- }
136
- if (this.options()?.addMarker) {
137
- let that = this;
138
- this.map.on('click', function (e) {
139
- if (that.mapMarkers().length === 0 || (that.mapMarkers().length > 0 && !that.options()?.aloneMarker)) {
140
- const newMarker = {
141
- lat: e.latlng.lat,
142
- lng: e.latlng.lng,
143
- draggable: that.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable
144
- };
145
- that.form.patchValue({
146
- latitude: e.latlng.lat,
147
- longitude: e.latlng.lng
148
- });
149
- that.addMarker(newMarker);
150
- that.markerAdded.emit(newMarker);
151
- }
152
- else {
153
- that.drawAloneMarker(e.latlng.lat, e.latlng.lng);
154
- }
155
- });
156
- }
157
- }
158
- /**
159
- * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude
160
- * are different from the provided values. It updates the first marker's latitude and longitude if the
161
- * marker array is not empty.
162
- *
163
- * @param {number} lat - The latitude of the marker
164
- * @param {number} lng - The longitude of the marker
165
- */
166
- drawAloneMarker(lat, lng) {
167
- if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {
168
- if (this.mapMarkers()[0].lat !== lat || this.mapMarkers()[0].lng !== lng) {
169
- this.mapMarkers.update((markers) => {
170
- if (markers?.length) {
171
- markers[0].lat = lat;
172
- markers[0].lng = lng;
173
- }
174
- return markers;
175
- });
176
- this.drawMarkers();
177
- this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));
178
- }
179
- }
180
- }
181
- /**
182
- * Add marker to map
183
- * @param center - center of the circle
184
- * @param radius - radius of the circle in meters
185
- * @private
186
- */
187
- addCircle(center, radius) {
188
- if (this.map && center?.lat && center?.lng) {
189
- this.drawMarkers();
190
- L.circleMarker([center.lat, center.lng], { radius: radius ?? 10 }).addTo(this.map);
191
- }
192
- }
193
- /**
194
- * Add marker to map
195
- * @param marker - Point of the map
196
- * @param canAdd
197
- */
198
- addMarker(marker, canAdd = true) {
199
- if (this.map && marker?.lat && marker?.lng) {
200
- const markerAdd = L.marker({
201
- lat: marker.lat,
202
- lng: marker.lng,
203
- alt: marker?.alt ?? 0,
204
- }, {
205
- draggable: marker?.draggable ?? true,
206
- autoPan: true
207
- }).setIcon(icon({
208
- iconSize: this.icon?.iconSize,
209
- iconAnchor: this.icon?.iconAnchor,
210
- iconUrl: this.icon?.iconUrl
211
- })).addTo(this.layerGroup);
212
- if (canAdd) {
213
- this.mapMarkers.update((markers) => {
214
- markers.push(marker);
215
- return markers;
216
- });
217
- }
218
- markerAdd.on('dragend', () => {
219
- this.changeCenter(markerAdd.getLatLng());
220
- this.markerDragend.emit(markerAdd.getLatLng());
221
- });
222
- if (marker?.popupContent) {
223
- markerAdd.on('mouseover', () => {
224
- const popup = L.popup({
225
- className: 'guajiritos-marker-popup',
226
- closeButton: false,
227
- offset: new L.Point(0, -32)
228
- })
229
- .setLatLng(markerAdd.getLatLng())
230
- .setContent(marker.popupContent)
231
- .addTo(this.layerGroup);
232
- document.querySelector('.guajiritos-marker-popup')
233
- .addEventListener('click', () => {
234
- this.markerClicked.emit(marker);
235
- });
236
- });
237
- }
238
- if (marker?.clickable) {
239
- markerAdd.on('click', () => {
240
- this.markerClicked.emit(marker);
241
- });
242
- }
243
- }
244
- }
245
- /**
246
- * Put the map center on marker position
247
- * @param marker - Point of the map
248
- */
249
- changeCenter(marker) {
250
- this.form.patchValue({
251
- latitude: marker.lat,
252
- longitude: marker.lng
253
- });
254
- this.map?.setView(marker);
255
- }
256
- /**
257
- * Propagates the change to other components.
258
- *
259
- * @param {any} _ - an arbitrary parameter.
260
- */
261
- propagateChange(_) {
262
- }
263
- ;
264
- /**
265
- * Sets the callback function to be called when the value
266
- * of the control changes.
267
- *
268
- * @param {any} fn - The callback function to be called
269
- * when the value of the control changes.
270
- */
271
- registerOnChange(fn) {
272
- this.propagateChange = fn;
273
- }
274
- /**
275
- * Registers a callback function to be called when the form control is "touched".
276
- */
277
- registerOnTouched() {
278
- }
279
- /**
280
- * Sets the disabled state of the form.
281
- *
282
- * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.
283
- */
284
- setDisabledState(isDisabled) {
285
- if (isDisabled) {
286
- this.form.disable();
287
- }
288
- else {
289
- this.form.enable();
290
- }
291
- }
292
- /**
293
- * Writes a value to the form.
294
- *
295
- * @param {any} data - The data to be written.
296
- */
297
- writeValue(data) {
298
- if (data?.latitude && data?.longitude) {
299
- this.form.patchValue({
300
- latitude: data.latitude,
301
- longitude: data.longitude
302
- });
303
- }
304
- }
305
- validate() {
306
- return this.form.invalid ? { wrongLocation: true } : null;
307
- }
308
- /**
309
- * Initializes the component and sets up a listener for changes in the form value.
310
- */
311
- ngOnInit() {
312
- this.form.valueChanges
313
- .pipe(takeUntilDestroyed(this._destroyedRef), distinctUntilChanged(), debounceTime(300))
314
- .subscribe((marker) => {
315
- this.propagateChange(this.form.value);
316
- if (this.options().aloneMarker && marker.latitude && marker.longitude) {
317
- if (this.mapMarkers()?.length === 0) {
318
- this.addMarker({
319
- lat: Number(marker.latitude),
320
- lng: Number(marker.longitude),
321
- draggable: true
322
- });
323
- this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));
324
- }
325
- else {
326
- this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));
327
- }
328
- }
329
- });
330
- }
331
- ngAfterViewInit() {
332
- this.initMap();
333
- }
334
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
335
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", mapId: "mapId", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded", markerClicked: "markerClicked" }, providers: [
336
- {
337
- provide: NG_VALUE_ACCESSOR,
338
- useExisting: forwardRef(() => GuajiritosMap),
339
- multi: true
340
- },
341
- {
342
- provide: NG_VALIDATORS,
343
- useExisting: forwardRef(() => GuajiritosMap),
344
- multi: true
345
- }
346
- ], ngImport: i0, template: "@if (mapId) {\r\n <div class=\"map-container\">\r\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\r\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\r\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\r\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n }\r\n\r\n <div [id]=\"mapId\" class=\"map\"\r\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\r\n </div>\r\n}\r\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" }] }); }
347
- }
348
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: GuajiritosMap, decorators: [{
349
- type: Component,
350
- args: [{ selector: 'guajiritos-map', standalone: true, imports: [
351
- CommonModule,
352
- MatInputModule,
353
- ReactiveFormsModule,
354
- MatIconModule,
355
- TranslateModule
356
- ], providers: [
357
- {
358
- provide: NG_VALUE_ACCESSOR,
359
- useExisting: forwardRef(() => GuajiritosMap),
360
- multi: true
361
- },
362
- {
363
- provide: NG_VALIDATORS,
364
- useExisting: forwardRef(() => GuajiritosMap),
365
- multi: true
366
- }
367
- ], template: "@if (mapId) {\r\n <div class=\"map-container\">\r\n @if (!hiddenForm && options()?.aloneMarker && mapMarkers()?.length <= 1) {\r\n <div class=\"lat-lng-input\" [formGroup]=\"form\">\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"latitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'latitud' | translate\" [readonly]=\"readonly\" formControlName=\"latitude\">\r\n <mat-error>{{ 'Latitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field [appearance]=\"appearance\" [color]=\"color\" [floatLabel]=\"floatLabel\" class='w-100'\r\n [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label *ngIf=\"showLabel\">{{ \"longitud\" | translate | titlecase }}</mat-label>\r\n <mat-icon matSuffix class=\"material-icons-outlined\" [color]=\"color\" *ngIf=\"showIcon\">place</mat-icon>\r\n <input matInput [placeholder]=\"'longitud' | translate\" [readonly]=\"readonly\" formControlName=\"longitude\">\r\n <mat-error>{{ 'Longitud requerida' | translate }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n }\r\n\r\n <div [id]=\"mapId\" class=\"map\"\r\n [ngStyle]=\"{'border-radius': options()?.borderRadius ?? '8px', 'height': options()?.height ?? '400px'}\"></div>\r\n </div>\r\n}\r\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"] }]
368
- }], propDecorators: { appearance: [{
369
- type: Input
370
- }], color: [{
371
- type: Input
372
- }], floatLabel: [{
373
- type: Input
374
- }], subscriptSizing: [{
375
- type: Input
376
- }], readonly: [{
377
- type: Input
378
- }], hiddenForm: [{
379
- type: Input
380
- }], showIcon: [{
381
- type: Input
382
- }], showLabel: [{
383
- type: Input
384
- }], mapId: [{
385
- type: Input
386
- }], optionsMap: [{
387
- type: Input
388
- }], circleConfig: [{
389
- type: Input
390
- }], center: [{
391
- type: Input
392
- }], icon: [{
393
- type: Input
394
- }], markers: [{
395
- type: Input
396
- }], markerDragend: [{
397
- type: Output
398
- }], markerAdded: [{
399
- type: Output
400
- }], markerClicked: [{
401
- type: Output
402
- }] } });
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhamlyaXRvcy1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VhamlyaXRvcy1tYXAvc3JjL2xpYi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFqaXJpdG9zLW1hcC9zcmMvbGliL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBb0IsVUFBVSxFQUFtQixNQUFNLFNBQVMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFHaEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBYSxrQkFBa0IsRUFBOEIsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUEyQnJHLE1BQU0s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S0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFZTyxZQUFZO3NCQUF4QixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQVVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBb0JJLGFBQWE7c0JBQXRCLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICBXcml0YWJsZVNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xyXG5pbXBvcnQgeyBpY29uLCBMYXRMbmcsIExhdExuZ0V4cHJlc3Npb24sIGxheWVyR3JvdXAsIExheWVyR3JvdXAsIE1hcCB9IGZyb20gJ2xlYWZsZXQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmxvYXRMYWJlbFR5cGUsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5pbXBvcnQgeyBDaXJjbGVNYXAsIERFRkFVTFRfTUFQX09QVElPTiwgSWNvbiwgTWFwT3B0aW9uLCBNYXJrZXJNYXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndWFqaXJpdG9zLW1hcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHdWFqaXJpdG9zTWFwKSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1YWppcml0b3NNYXApLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEd1YWppcml0b3NNYXAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3llZFJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcbiAgcHJpdmF0ZSBtYXA6IE1hcDtcclxuICBwcml2YXRlIGxheWVyR3JvdXA6IExheWVyR3JvdXAgPSBuZXcgTC5MYXllckdyb3VwKCk7XHJcblxyXG4gIHB1YmxpYyBtYXBNYXJrZXJzOiBXcml0YWJsZVNpZ25hbDxNYXJrZXJNYXBbXT4gPSBzaWduYWwoW10pO1xyXG4gIHB1YmxpYyBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxNYXBPcHRpb24+ID0gc2lnbmFsKERFRkFVTFRfTUFQX09QVElPTik7XHJcbiAgcHVibGljIGNpcmNsZTogV3JpdGFibGVTaWduYWw8Q2lyY2xlTWFwPiA9IHNpZ25hbChudWxsKTtcclxuXHJcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XHJcbiAgICBsYXRpdHVkZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGxvbmdpdHVkZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxyXG4gIH0pO1xyXG5cclxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ291dGxpbmUnO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhbHdheXMnO1xyXG4gIEBJbnB1dCgpIHN1YnNjcmlwdFNpemluZzogU3Vic2NyaXB0U2l6aW5nID0gJ2R5bmFtaWMnO1xyXG5cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGRlbkZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SWNvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgbWFwSWQ6IHN0cmluZyA9ICdtYXAnO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IG1hcCBvcHRpb25zXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbnNNYXAob3B0aW9uczogUGFydGlhbDxNYXBPcHRpb24+KSB7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc2V0KHtcclxuICAgICAgICAuLi50aGlzLm9wdGlvbnMoKSxcclxuICAgICAgICAuLi5vcHRpb25zXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIGNpcmNsZSBvbiB0aGUgbWFwXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IGNpcmNsZUNvbmZpZyhjaXJjbGU6IENpcmNsZU1hcCkge1xyXG4gICAgaWYgKGNpcmNsZSkge1xyXG4gICAgICB0aGlzLmNpcmNsZS5zZXQoY2lyY2xlKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm1hcCkge1xyXG4gICAgICAgIHRoaXMuYWRkQ2lyY2xlKHRoaXMuY2lyY2xlKCk/LmNlbnRlciwgdGhpcy5jaXJjbGUoKT8ucmFkaXVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGNlbnRlcihjZW50ZXI6IE1hcmtlck1hcCkge1xyXG4gICAgaWYgKGNlbnRlcikge1xyXG4gICAgICB0aGlzLmNoYW5nZUNlbnRlcihuZXcgTGF0TG5nKGNlbnRlci5sYXQsIGNlbnRlci5sbmcpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgbWFya2VyIGljb25cclxuICAgKi9cclxuICBASW5wdXQoKSBpY29uOiBJY29uID0ge1xyXG4gICAgaWNvblNpemU6IFsyNSwgNDFdLFxyXG4gICAgaWNvbkFuY2hvcjogWzEzLCA0MV0sXHJcbiAgICBpY29uVXJsOiAnbGVhZmxldC9tYXJrZXItaWNvbi5wbmcnXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdCBvZiBtYXJrZXJzXHJcbiAgICogQHBhcmFtIG1hcmtlcnMgLSBNYXJrZXJzIGFycmF5XHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IG1hcmtlcnMobWFya2VyczogTWFya2VyTWFwW10pIHtcclxuICAgIGlmIChtYXJrZXJzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5tYXBNYXJrZXJzLnNldChtYXJrZXJzKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICBsYXRpdHVkZTogdGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubGF0LFxyXG4gICAgICAgIGxvbmdpdHVkZTogdGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubG5nXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIobmV3IEwuTGF0TG5nKHRoaXMubWFwTWFya2VycygpWzBdLmxhdCwgdGhpcy5tYXBNYXJrZXJzKClbMF0ubG5nKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5tYXAgJiYgdGhpcy5sYXllckdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5kcmF3TWFya2VycygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZSBsYW56YSBjYWRhIHZleiBxdWUgY2FtYmlhIHVuIG1hcmNhZG9yXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG1hcmtlckRyYWdlbmQ6IEV2ZW50RW1pdHRlcjxMYXRMbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKlxyXG4gICAqIFNlIGxhbnphIGNhZGEgdmV6IHF1ZSBzZSBhw7FhZGUgdW4gbWFyY2Fkb3JcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbWFya2VyQWRkZWQ6IEV2ZW50RW1pdHRlcjxNYXJrZXJNYXA+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgbWFya2VyQ2xpY2tlZDogRXZlbnRFbWl0dGVyPE1hcmtlck1hcD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERyYXdzIHRoZSBtYXJrZXJzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZHJhd01hcmtlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmxheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcclxuICAgICAgdGhpcy5tYXBNYXJrZXJzKCkuZm9yRWFjaCgobTogTWFya2VyTWFwKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRNYXJrZXIobSwgZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1haW4gcHJvcGVydGllcyBvZiB0aGUgbWFwXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRNYXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcCA9IEwubWFwKHRoaXMubWFwSWQsIHtcclxuICAgICAgY2VudGVyOiB0aGlzLm9wdGlvbnMoKT8uY2VudGVyIGFzIExhdExuZ0V4cHJlc3Npb24gPz8gREVGQVVMVF9NQVBfT1BUSU9OLmNlbnRlcixcclxuICAgICAgZHJhZ2dpbmc6IHRoaXMub3B0aW9ucygpPy5kcmFnZ2FibGUgPz8gREVGQVVMVF9NQVBfT1BUSU9OLmRyYWdnYWJsZSxcclxuICAgICAgem9vbTogdGhpcy5vcHRpb25zKCk/Lnpvb20gPz8gREVGQVVMVF9NQVBfT1BUSU9OLnpvb20sXHJcbiAgICAgIHpvb21Db250cm9sOiB0aGlzLm9wdGlvbnMoKT8uem9vbUNvbnRyb2wgfHwgREVGQVVMVF9NQVBfT1BUSU9OLnpvb21Db250cm9sLFxyXG4gICAgICBzY3JvbGxXaGVlbFpvb206IHRoaXMub3B0aW9ucygpPy5zY3JvbGxXaGVlbFpvb20gfHwgREVGQVVMVF9NQVBfT1BUSU9OLnNjcm9sbFdoZWVsWm9vbSxcclxuICAgICAgbWF4Wm9vbTogMTgsXHJcbiAgICAgIG1pblpvb206IDNcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubGF5ZXJHcm91cCA9IGxheWVyR3JvdXAoKS5hZGRUbyh0aGlzLm1hcCk7XHJcblxyXG4gICAgTC50aWxlTGF5ZXIoJ2h0dHA6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLmZyL2hvdC97en0ve3h9L3t5fS5wbmcnKS5hZGRUbyh0aGlzLm1hcCk7XHJcblxyXG4gICAgdGhpcy5kcmF3TWFya2VycygpO1xyXG5cclxuICAgIGlmICh0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sYXQgJiYgdGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubG5nKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMLkxhdExuZyh0aGlzLm1hcE1hcmtlcnMoKVswXS5sYXQsIHRoaXMubWFwTWFya2VycygpWzBdLmxuZykpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNpcmNsZSgpKSB7XHJcbiAgICAgIHRoaXMuYWRkQ2lyY2xlKHRoaXMuY2lyY2xlKCk/LmNlbnRlciwgdGhpcy5jaXJjbGUoKT8ucmFkaXVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zKCk/LmFkZE1hcmtlcikge1xyXG4gICAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICAgIHRoaXMubWFwLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlOiBMLkxlYWZsZXRNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoYXQubWFwTWFya2VycygpLmxlbmd0aCA9PT0gMCB8fCAodGhhdC5tYXBNYXJrZXJzKCkubGVuZ3RoID4gMCAmJiAhdGhhdC5vcHRpb25zKCk/LmFsb25lTWFya2VyKSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3TWFya2VyOiBNYXJrZXJNYXAgPSB7XHJcbiAgICAgICAgICAgIGxhdDogZS5sYXRsbmcubGF0LFxyXG4gICAgICAgICAgICBsbmc6IGUubGF0bG5nLmxuZyxcclxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0aGF0Lm9wdGlvbnMoKT8uZHJhZ2dhYmxlID8/IERFRkFVTFRfTUFQX09QVElPTi5kcmFnZ2FibGVcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhhdC5mb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBsYXRpdHVkZTogZS5sYXRsbmcubGF0LFxyXG4gICAgICAgICAgICBsb25naXR1ZGU6IGUubGF0bG5nLmxuZ1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhhdC5hZGRNYXJrZXIobmV3TWFya2VyKTtcclxuXHJcbiAgICAgICAgICB0aGF0Lm1hcmtlckFkZGVkLmVtaXQobmV3TWFya2VyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhhdC5kcmF3QWxvbmVNYXJrZXIoZS5sYXRsbmcubGF0LCBlLmxhdGxuZy5sbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEcmF3cyBhIG1hcmtlciBhdCB0aGUgc3BlY2lmaWVkIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgaWYgdGhlIGZpcnN0IG1hcmtlcidzIGxhdGl0dWRlIGFuZCBsb25naXR1ZGVcclxuICAgKiBhcmUgZGlmZmVyZW50IGZyb20gdGhlIHByb3ZpZGVkIHZhbHVlcy4gSXQgdXBkYXRlcyB0aGUgZmlyc3QgbWFya2VyJ3MgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSBpZiB0aGVcclxuICAgKiBtYXJrZXIgYXJyYXkgaXMgbm90IGVtcHR5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxhdCAtIFRoZSBsYXRpdHVkZSBvZiB0aGUgbWFya2VyXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxuZyAtIFRoZSBsb25naXR1ZGUgb2YgdGhlIG1hcmtlclxyXG4gICAqL1xyXG4gIHByaXZhdGUgZHJhd0Fsb25lTWFya2VyKGxhdDogbnVtYmVyLCBsbmc6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxhdCAmJiB0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sbmcpIHtcclxuICAgICAgaWYgKHRoaXMubWFwTWFya2VycygpWzBdLmxhdCAhPT0gbGF0IHx8IHRoaXMubWFwTWFya2VycygpWzBdLmxuZyAhPT0gbG5nKSB7XHJcbiAgICAgICAgdGhpcy5tYXBNYXJrZXJzLnVwZGF0ZSgobWFya2VyczogTWFya2VyTWFwW10pOiBNYXJrZXJNYXBbXSA9PiB7XHJcbiAgICAgICAgICBpZiAobWFya2Vycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIG1hcmtlcnNbMF0ubGF0ID0gbGF0O1xyXG4gICAgICAgICAgICBtYXJrZXJzWzBdLmxuZyA9IGxuZztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBtYXJrZXJzO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRyYXdNYXJrZXJzKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIobmV3IEwuTGF0TG5nKHRoaXMubWFwTWFya2VycygpWzBdLmxhdCwgdGhpcy5tYXBNYXJrZXJzKClbMF0ubG5nKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBtYXJrZXIgdG8gbWFwXHJcbiAgICogQHBhcmFtIGNlbnRlciAtIGNlbnRlciBvZiB0aGUgY2lyY2xlXHJcbiAgICogQHBhcmFtIHJhZGl1cyAtIHJhZGl1cyBvZiB0aGUgY2lyY2xlIGluIG1ldGVyc1xyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRDaXJjbGUoY2VudGVyOiBNYXJrZXJNYXAsIHJhZGl1czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tYXAgJiYgY2VudGVyPy5sYXQgJiYgY2VudGVyPy5sbmcpIHtcclxuICAgICAgdGhpcy5kcmF3TWFya2VycygpO1xyXG4gICAgICBMLmNpcmNsZU1hcmtlcihbY2VudGVyLmxhdCwgY2VudGVyLmxuZ10sIHsgcmFkaXVzOiByYWRpdXMgPz8gMTAgfSkuYWRkVG8odGhpcy5tYXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIG1hcmtlciB0byBtYXBcclxuICAgKiBAcGFyYW0gbWFya2VyIC0gUG9pbnQgb2YgdGhlIG1hcFxyXG4gICAqIEBwYXJhbSBjYW5BZGRcclxuICAgKi9cclxuICBwcml2YXRlIGFkZE1hcmtlcihtYXJrZXI6IE1hcmtlck1hcCwgY2FuQWRkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWFwICYmIG1hcmtlcj8ubGF0ICYmIG1hcmtlcj8ubG5nKSB7XHJcbiAgICAgIGNvbnN0IG1hcmtlckFkZDogTC5NYXJrZXIgPSBMLm1hcmtlcih7XHJcbiAgICAgICAgbGF0OiBtYXJrZXIubGF0LFxyXG4gICAgICAgIGxuZzogbWFya2VyLmxuZyxcclxuICAgICAgICBhbHQ6IG1hcmtlcj8uYWx0ID8/IDAsXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBkcmFnZ2FibGU6IG1hcmtlcj8uZHJhZ2dhYmxlID8/IHRydWUsXHJcbiAgICAgICAgYXV0b1BhbjogdHJ1ZVxyXG4gICAgICB9KS5zZXRJY29uKFxyXG4gICAgICAgIGljb24oe1xyXG4gICAgICAgICAgaWNvblNpemU6IHRoaXMuaWNvbj8uaWNvblNpemUsXHJcbiAgICAgICAgICBpY29uQW5jaG9yOiB0aGlzLmljb24/Lmljb25BbmNob3IsXHJcbiAgICAgICAgICBpY29uVXJsOiB0aGlzLmljb24/Lmljb25VcmxcclxuICAgICAgICB9KVxyXG4gICAgICApLmFkZFRvKHRoaXMubGF5ZXJHcm91cCk7XHJcblxyXG4gICAgICBpZiAoY2FuQWRkKSB7XHJcbiAgICAgICAgdGhpcy5tYXBNYXJrZXJzLnVwZGF0ZSgobWFya2VyczogTWFya2VyTWFwW10pOiBNYXJrZXJNYXBbXSA9PiB7XHJcbiAgICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgICAgIHJldHVybiBtYXJrZXJzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBtYXJrZXJBZGQub24oJ2RyYWdlbmQnLCAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIobWFya2VyQWRkLmdldExhdExuZygpKTtcclxuICAgICAgICB0aGlzLm1hcmtlckRyYWdlbmQuZW1pdChtYXJrZXJBZGQuZ2V0TGF0TG5nKCkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChtYXJrZXI/LnBvcHVwQ29udGVudCkge1xyXG4gICAgICAgIG1hcmtlckFkZC5vbignbW91c2VvdmVyJywgKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcG9wdXA6IEwuUG9wdXAgPSBMLnBvcHVwKHtcclxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZ3VhamlyaXRvcy1tYXJrZXItcG9wdXAnLFxyXG4gICAgICAgICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIG9mZnNldDogbmV3IEwuUG9pbnQoMCwgLTMyKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnNldExhdExuZyhtYXJrZXJBZGQuZ2V0TGF0TG5nKCkpXHJcbiAgICAgICAgICAgIC5zZXRDb250ZW50KG1hcmtlci5wb3B1cENvbnRlbnQpXHJcbiAgICAgICAgICAgIC5hZGRUbyh0aGlzLmxheWVyR3JvdXApO1xyXG5cclxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ndWFqaXJpdG9zLW1hcmtlci1wb3B1cCcpXHJcbiAgICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm1hcmtlckNsaWNrZWQuZW1pdChtYXJrZXIpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobWFya2VyPy5jbGlja2FibGUpIHtcclxuICAgICAgICBtYXJrZXJBZGQub24oJ2NsaWNrJywgKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tYXJrZXJDbGlja2VkLmVtaXQobWFya2VyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHV0IHRoZSBtYXAgY2VudGVyIG9uIG1hcmtlciBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBtYXJrZXIgLSBQb2ludCBvZiB0aGUgbWFwXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZUNlbnRlcihtYXJrZXI6IEwuTGF0TG5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIGxhdGl0dWRlOiBtYXJrZXIubGF0LFxyXG4gICAgICBsb25naXR1ZGU6IG1hcmtlci5sbmdcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tYXA/LnNldFZpZXcobWFya2VyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3BhZ2F0ZXMgdGhlIGNoYW5nZSB0byBvdGhlciBjb21wb25lbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IF8gLSBhbiBhcmJpdHJhcnkgcGFyYW1ldGVyLlxyXG4gICAqL1xyXG4gIHByb3BhZ2F0ZUNoYW5nZShfOiBhbnkpOiB2b2lkIHtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWVcclxuICAgKiBvZiB0aGUgY29udHJvbCBjaGFuZ2VzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IGZuIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZFxyXG4gICAqIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGZvcm0gY29udHJvbCBpcyBcInRvdWNoZWRcIi5cclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBmb3JtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0Rpc2FibGVkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGZvcm0gc2hvdWxkIGJlIGRpc2FibGVkIG9yIG5vdC5cclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZXMgYSB2YWx1ZSB0byB0aGUgZm9ybS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgd3JpdHRlbi5cclxuICAgKi9cclxuICB3cml0ZVZhbHVlKGRhdGE6IHsgbGF0aXR1ZGU6IG51bWJlciB8IHN0cmluZzsgbG9uZ2l0dWRlOiBudW1iZXIgfCBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGE/LmxhdGl0dWRlICYmIGRhdGE/LmxvbmdpdHVkZSkge1xyXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgbGF0aXR1ZGU6IGRhdGEubGF0aXR1ZGUsXHJcbiAgICAgICAgbG9uZ2l0dWRlOiBkYXRhLmxvbmdpdHVkZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uaW52YWxpZCA/IHsgd3JvbmdMb2NhdGlvbjogdHJ1ZSB9IDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQgYW5kIHNldHMgdXAgYSBsaXN0ZW5lciBmb3IgY2hhbmdlcyBpbiB0aGUgZm9ybSB2YWx1ZS5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3llZFJlZiksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKG1hcmtlcjogeyBsYXRpdHVkZTogc3RyaW5nLCBsb25naXR1ZGU6IHN0cmluZyB9KTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5mb3JtLnZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucygpLmFsb25lTWFya2VyICYmIG1hcmtlci5sYXRpdHVkZSAmJiBtYXJrZXIubG9uZ2l0dWRlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZE1hcmtlcih7XHJcbiAgICAgICAgICAgICAgbGF0OiBOdW1iZXIobWFya2VyLmxhdGl0dWRlKSxcclxuICAgICAgICAgICAgICBsbmc6IE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSxcclxuICAgICAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMLkxhdExuZyhOdW1iZXIobWFya2VyLmxhdGl0dWRlKSwgTnVtYmVyKG1hcmtlci5sb25naXR1ZGUpKSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRyYXdBbG9uZU1hcmtlcihOdW1iZXIobWFya2VyLmxhdGl0dWRlKSwgTnVtYmVyKG1hcmtlci5sb25naXR1ZGUpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0TWFwKCk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAobWFwSWQpIHtcclxuICA8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPlxyXG4gICAgQGlmICghaGlkZGVuRm9ybSAmJiBvcHRpb25zKCk/LmFsb25lTWFya2VyICYmIG1hcE1hcmtlcnMoKT8ubGVuZ3RoIDw9IDEpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImxhdC1sbmctaW5wdXRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtjb2xvcl09XCJjb2xvclwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBjbGFzcz0ndy0xMDAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwic2hvd0xhYmVsXCI+e3sgXCJsYXRpdHVkXCIgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiIFtjb2xvcl09XCJjb2xvclwiICpuZ0lmPVwic2hvd0ljb25cIj5wbGFjZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidsYXRpdHVkJyB8IHRyYW5zbGF0ZVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCI+XHJcbiAgICAgICAgICA8bWF0LWVycm9yPnt7ICdMYXRpdHVkIHJlcXVlcmlkYScgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2NvbG9yXT1cImNvbG9yXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIGNsYXNzPSd3LTEwMCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJzaG93TGFiZWxcIj57eyBcImxvbmdpdHVkXCIgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiIFtjb2xvcl09XCJjb2xvclwiICpuZ0lmPVwic2hvd0ljb25cIj5wbGFjZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidsb25naXR1ZCcgfCB0cmFuc2xhdGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJsb25naXR1ZGVcIj5cclxuICAgICAgICAgIDxtYXQtZXJyb3I+e3sgJ0xvbmdpdHVkIHJlcXVlcmlkYScgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IFtpZF09XCJtYXBJZFwiIGNsYXNzPVwibWFwXCJcclxuICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItcmFkaXVzJzogb3B0aW9ucygpPy5ib3JkZXJSYWRpdXMgPz8gJzhweCcsICdoZWlnaHQnOiBvcHRpb25zKCk/LmhlaWdodCA/PyAnNDAwcHgnfVwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
@@ -1,6 +0,0 @@
1
- /*
2
- * Public API Surface of guajiritos-map
3
- */
4
- export * from './interfaces/interfaces';
5
- export * from './lib/guajiritos-map.component';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2d1YWppcml0b3MtbWFwL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGd1YWppcml0b3MtbWFwXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQnO1xyXG4iXX0=