@guajiritos/map 18.0.2 → 20.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.
@@ -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],
@@ -352,8 +351,8 @@ class GuajiritosMap {
352
351
  ngAfterViewInit() {
353
352
  this.initMap();
354
353
  }
355
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
356
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", 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: "20.0.0", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", 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: [
357
356
  {
358
357
  provide: NG_VALUE_ACCESSOR,
359
358
  useExisting: forwardRef(() => GuajiritosMap),
@@ -364,11 +363,11 @@ class GuajiritosMap {
364
363
  useExisting: forwardRef(() => GuajiritosMap),
365
364
  multi: true
366
365
  }
367
- ], 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"], 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" }] }); }
368
367
  }
369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: GuajiritosMap, decorators: [{
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: GuajiritosMap, decorators: [{
370
369
  type: Component,
371
- args: [{ selector: 'guajiritos-map', standalone: true, imports: [
370
+ args: [{ selector: 'guajiritos-map', imports: [
372
371
  CommonModule,
373
372
  MatInputModule,
374
373
  ReactiveFormsModule,
@@ -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":["\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 standalone: true,\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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"}
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/index.d.ts CHANGED
@@ -1,5 +1,184 @@
1
+ import * as i0 from '@angular/core';
2
+ import { OnInit, AfterViewInit, WritableSignal, EventEmitter } from '@angular/core';
3
+ import * as L from 'leaflet';
4
+ import { LatLng } from 'leaflet';
5
+ import { ControlValueAccessor, Validator, UntypedFormGroup, ValidationErrors } from '@angular/forms';
6
+ import { MatFormFieldAppearance, FloatLabelType, SubscriptSizing } from '@angular/material/form-field';
7
+ import { ThemePalette } from '@angular/material/core';
8
+
1
9
  /**
2
- * Generated bundle index. Do not edit.
10
+ * Map options interface
3
11
  */
4
- /// <amd-module name="@guajiritos/map" />
5
- export * from './public-api';
12
+ interface MapOption {
13
+ center?: [number, number];
14
+ draggable?: boolean;
15
+ updateWithClick?: boolean;
16
+ updateWithDoubleClick?: boolean;
17
+ zoom?: number;
18
+ borderRadius?: string;
19
+ height?: string;
20
+ scrollable?: boolean;
21
+ zoomControl?: boolean;
22
+ scrollWheelZoom?: boolean;
23
+ addMarker?: boolean;
24
+ aloneMarker?: boolean;
25
+ }
26
+ /**
27
+ * Marker interface
28
+ */
29
+ interface MarkerMap {
30
+ lat: number;
31
+ lng: number;
32
+ id?: string;
33
+ alt?: number;
34
+ popupContent?: string;
35
+ draggable?: boolean;
36
+ clickable?: boolean;
37
+ }
38
+ /**
39
+ * Icon interface
40
+ */
41
+ interface Icon {
42
+ iconSize: [number, number];
43
+ iconAnchor: [number, number];
44
+ iconUrl: string;
45
+ iconRetinaUrl?: string;
46
+ shadowUrl?: string;
47
+ popupAnchor?: [number, number];
48
+ tooltipAnchor?: [number, number];
49
+ shadowSize?: [number, number];
50
+ }
51
+ /**
52
+ * Circle map interface
53
+ */
54
+ interface CircleMap {
55
+ center: MarkerMap;
56
+ radius: number;
57
+ }
58
+ declare const DEFAULT_MAP_OPTION: MapOption;
59
+
60
+ declare class GuajiritosMap implements OnInit, AfterViewInit, ControlValueAccessor, Validator {
61
+ private _destroyedRef;
62
+ private map;
63
+ private layerGroup;
64
+ mapMarkers: WritableSignal<MarkerMap[]>;
65
+ options: WritableSignal<MapOption>;
66
+ circle: WritableSignal<CircleMap>;
67
+ form: UntypedFormGroup;
68
+ appearance: MatFormFieldAppearance;
69
+ color: ThemePalette;
70
+ floatLabel: FloatLabelType;
71
+ subscriptSizing: SubscriptSizing;
72
+ readonly: boolean;
73
+ hiddenForm: boolean;
74
+ showIcon: boolean;
75
+ showLabel: boolean;
76
+ mapId: string;
77
+ /**
78
+ * Default map options
79
+ */
80
+ set optionsMap(options: Partial<MapOption>);
81
+ /**
82
+ * Add a circle on the map
83
+ */
84
+ set circleConfig(circle: CircleMap);
85
+ set center(center: MarkerMap);
86
+ /**
87
+ * Default marker icon
88
+ */
89
+ icon: Icon;
90
+ /**
91
+ * List of markers
92
+ * @param markers - Markers array
93
+ */
94
+ set markers(markers: MarkerMap[]);
95
+ /**
96
+ * Se lanza cada vez que cambia un marcador
97
+ */
98
+ markerDragend: EventEmitter<LatLng>;
99
+ /**
100
+ * Se lanza cada vez que se añade un marcador
101
+ */
102
+ markerAdded: EventEmitter<MarkerMap>;
103
+ markerClicked: EventEmitter<MarkerMap>;
104
+ /**
105
+ * Draws the markers.
106
+ */
107
+ private drawMarkers;
108
+ /**
109
+ * Main properties of the map
110
+ * @private
111
+ */
112
+ private initMap;
113
+ /**
114
+ * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude
115
+ * are different from the provided values. It updates the first marker's latitude and longitude if the
116
+ * marker array is not empty.
117
+ *
118
+ * @param {number} lat - The latitude of the marker
119
+ * @param {number} lng - The longitude of the marker
120
+ */
121
+ private drawAloneMarker;
122
+ /**
123
+ * Add marker to map
124
+ * @param center - center of the circle
125
+ * @param radius - radius of the circle in meters
126
+ * @private
127
+ */
128
+ private addCircle;
129
+ /**
130
+ * Add marker to map
131
+ * @param marker - Point of the map
132
+ * @param canAdd
133
+ */
134
+ private addMarker;
135
+ /**
136
+ * Put the map center on marker position
137
+ * @param marker - Point of the map
138
+ */
139
+ changeCenter(marker: L.LatLng): void;
140
+ /**
141
+ * Propagates the change to other components.
142
+ *
143
+ * @param {any} _ - an arbitrary parameter.
144
+ */
145
+ propagateChange(_: any): void;
146
+ /**
147
+ * Sets the callback function to be called when the value
148
+ * of the control changes.
149
+ *
150
+ * @param {any} fn - The callback function to be called
151
+ * when the value of the control changes.
152
+ */
153
+ registerOnChange(fn: any): void;
154
+ /**
155
+ * Registers a callback function to be called when the form control is "touched".
156
+ */
157
+ registerOnTouched(): void;
158
+ /**
159
+ * Sets the disabled state of the form.
160
+ *
161
+ * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.
162
+ */
163
+ setDisabledState(isDisabled: boolean): void;
164
+ /**
165
+ * Writes a value to the form.
166
+ *
167
+ * @param {any} data - The data to be written.
168
+ */
169
+ writeValue(data: {
170
+ latitude: number | string;
171
+ longitude: number | string;
172
+ }): void;
173
+ validate(): ValidationErrors;
174
+ /**
175
+ * Initializes the component and sets up a listener for changes in the form value.
176
+ */
177
+ ngOnInit(): void;
178
+ ngAfterViewInit(): void;
179
+ static ɵfac: i0.ɵɵFactoryDeclaration<GuajiritosMap, never>;
180
+ static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosMap, "guajiritos-map", never, { "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "hiddenForm": { "alias": "hiddenForm"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "mapId": { "alias": "mapId"; "required": false; }; "optionsMap": { "alias": "optionsMap"; "required": false; }; "circleConfig": { "alias": "circleConfig"; "required": false; }; "center": { "alias": "center"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; }, { "markerDragend": "markerDragend"; "markerAdded": "markerAdded"; "markerClicked": "markerClicked"; }, never, never, true, never>;
181
+ }
182
+
183
+ export { DEFAULT_MAP_OPTION, GuajiritosMap };
184
+ export type { CircleMap, Icon, MapOption, MarkerMap };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guajiritos/map",
3
- "version": "18.0.2",
3
+ "version": "20.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": "^20.0.1",
12
+ "@angular/common": "^20.0.0",
13
+ "@angular/core": "^20.0.0",
14
+ "@angular/material": "^20.0.1",
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1YWppcml0b3MtbWFwL3NyYy9pbnRlcmZhY2VzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0RBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFjO0lBQzNDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsU0FBUyxFQUFFLElBQUk7SUFDZixJQUFJLEVBQUUsRUFBRTtJQUNSLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLHFCQUFxQixFQUFFLEtBQUs7SUFDNUIsV0FBVyxFQUFFLElBQUk7SUFDakIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsTUFBTSxFQUFFLE9BQU87SUFDZixlQUFlLEVBQUUsS0FBSztJQUN0QixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsSUFBSTtJQUNqQixVQUFVLEVBQUUsS0FBSztDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIE1hcCBvcHRpb25zIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hcE9wdGlvbiB7XG4gIGNlbnRlcj86IFtudW1iZXIsIG51bWJlcl07XG4gIGRyYWdnYWJsZT86IGJvb2xlYW47XG4gIHVwZGF0ZVdpdGhDbGljaz86IGJvb2xlYW47XG4gIHVwZGF0ZVdpdGhEb3VibGVDbGljaz86IGJvb2xlYW47XG4gIHpvb20/OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBzY3JvbGxhYmxlPzogYm9vbGVhbjtcbiAgem9vbUNvbnRyb2w/OiBib29sZWFuO1xuICBzY3JvbGxXaGVlbFpvb20/OiBib29sZWFuO1xuICBhZGRNYXJrZXI/OiBib29sZWFuO1xuICBhbG9uZU1hcmtlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTWFya2VyIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtlck1hcCB7XG4gIGxhdDogbnVtYmVyO1xuICBsbmc6IG51bWJlcjtcbiAgaWQ/OiBzdHJpbmc7XG4gIGFsdD86IG51bWJlcjtcbiAgcG9wdXBDb250ZW50Pzogc3RyaW5nO1xuICBkcmFnZ2FibGU/OiBib29sZWFuO1xuICBjbGlja2FibGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEljb24gaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XG4gIGljb25TaXplOiBbbnVtYmVyLCBudW1iZXJdO1xuICBpY29uQW5jaG9yOiBbbnVtYmVyLCBudW1iZXJdO1xuICBpY29uVXJsOiBzdHJpbmc7XG4gIGljb25SZXRpbmFVcmw/OiBzdHJpbmcsXG4gIHNoYWRvd1VybD86IHN0cmluZyxcbiAgcG9wdXBBbmNob3I/OiBbbnVtYmVyLCBudW1iZXJdLFxuICB0b29sdGlwQW5jaG9yPzogW251bWJlciwgbnVtYmVyXSxcbiAgc2hhZG93U2l6ZT86IFtudW1iZXIsIG51bWJlcl0sXG59XG5cbi8qKlxuICogQ2lyY2xlIG1hcCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaXJjbGVNYXAge1xuICBjZW50ZXI6IE1hcmtlck1hcDtcbiAgcmFkaXVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9PUFRJT046IE1hcE9wdGlvbiA9IHtcbiAgY2VudGVyOiBbMjMuMTMwMjU3MTg1MjkxMDM2LCAtODIuMzU2MjYyMjA3MDMxMjZdLFxuICBkcmFnZ2FibGU6IHRydWUsXG4gIHpvb206IDE1LFxuICB1cGRhdGVXaXRoQ2xpY2s6IGZhbHNlLFxuICB1cGRhdGVXaXRoRG91YmxlQ2xpY2s6IGZhbHNlLFxuICB6b29tQ29udHJvbDogdHJ1ZSxcbiAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgaGVpZ2h0OiAnNDAwcHgnLFxuICBzY3JvbGxXaGVlbFpvb206IGZhbHNlLFxuICBhZGRNYXJrZXI6IGZhbHNlLFxuICBhbG9uZU1hcmtlcjogdHJ1ZSxcbiAgc2Nyb2xsYWJsZTogZmFsc2UsXG59O1xuIl19
@@ -1,409 +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
- const LATITUDE_LONGITUDE = /^(-?\d+(\.\d+)?)$/;
20
- export class GuajiritosMap {
21
- constructor() {
22
- this._destroyedRef = inject(DestroyRef);
23
- this.layerGroup = new L.LayerGroup();
24
- this.mapMarkers = signal([]);
25
- this.options = signal(DEFAULT_MAP_OPTION);
26
- this.circle = signal(null);
27
- this.form = new UntypedFormGroup({
28
- latitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required, Validators.pattern(LATITUDE_LONGITUDE)]),
29
- longitude: new UntypedFormControl({ value: null, disabled: false }, [Validators.required, Validators.pattern(LATITUDE_LONGITUDE)])
30
- });
31
- this.appearance = 'outline';
32
- this.color = 'accent';
33
- this.floatLabel = 'always';
34
- this.subscriptSizing = 'dynamic';
35
- this.readonly = false;
36
- this.hiddenForm = false;
37
- this.showIcon = true;
38
- this.showLabel = true;
39
- this.mapId = 'map';
40
- /**
41
- * Default marker icon
42
- */
43
- this.icon = {
44
- iconSize: [25, 41],
45
- iconAnchor: [13, 41],
46
- iconUrl: 'leaflet/marker-icon.png'
47
- };
48
- /**
49
- * Se lanza cada vez que cambia un marcador
50
- */
51
- this.markerDragend = new EventEmitter();
52
- /**
53
- * Se lanza cada vez que se añade un marcador
54
- */
55
- this.markerAdded = new EventEmitter();
56
- this.markerClicked = new EventEmitter();
57
- }
58
- /**
59
- * Default map options
60
- */
61
- set optionsMap(options) {
62
- if (options) {
63
- this.options.set({
64
- ...this.options(),
65
- ...options
66
- });
67
- }
68
- }
69
- ;
70
- /**
71
- * Add a circle on the map
72
- */
73
- set circleConfig(circle) {
74
- if (circle) {
75
- this.circle.set(circle);
76
- if (this.map) {
77
- this.addCircle(this.circle()?.center, this.circle()?.radius);
78
- }
79
- }
80
- }
81
- set center(center) {
82
- if (center) {
83
- this.changeCenter(new LatLng(center.lat, center.lng));
84
- }
85
- }
86
- /**
87
- * List of markers
88
- * @param markers - Markers array
89
- */
90
- set markers(markers) {
91
- if (markers?.length) {
92
- this.mapMarkers.set(markers);
93
- this.form.patchValue({
94
- latitude: this.mapMarkers()?.[0]?.lat,
95
- longitude: this.mapMarkers()?.[0]?.lng
96
- });
97
- this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));
98
- if (this.map && this.layerGroup) {
99
- this.drawMarkers();
100
- }
101
- }
102
- }
103
- /**
104
- * Draws the markers.
105
- */
106
- drawMarkers() {
107
- if (this.mapMarkers()?.length) {
108
- this.layerGroup.clearLayers();
109
- this.mapMarkers().forEach((m) => {
110
- this.addMarker(m, false);
111
- });
112
- }
113
- }
114
- /**
115
- * Main properties of the map
116
- * @private
117
- */
118
- initMap() {
119
- this.map = L.map(this.mapId, {
120
- center: this.options()?.center ?? DEFAULT_MAP_OPTION.center,
121
- dragging: this.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable,
122
- zoom: this.options()?.zoom ?? DEFAULT_MAP_OPTION.zoom,
123
- zoomControl: this.options()?.zoomControl || DEFAULT_MAP_OPTION.zoomControl,
124
- scrollWheelZoom: this.options()?.scrollWheelZoom || DEFAULT_MAP_OPTION.scrollWheelZoom,
125
- maxZoom: 18,
126
- minZoom: 3
127
- });
128
- this.layerGroup = layerGroup().addTo(this.map);
129
- L.tileLayer('http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png').addTo(this.map);
130
- this.drawMarkers();
131
- if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {
132
- this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));
133
- }
134
- if (this.circle()) {
135
- this.addCircle(this.circle()?.center, this.circle()?.radius);
136
- }
137
- if (this.options()?.addMarker) {
138
- let that = this;
139
- this.map.on('click', function (e) {
140
- if (that.mapMarkers().length === 0 || (that.mapMarkers().length > 0 && !that.options()?.aloneMarker)) {
141
- const newMarker = {
142
- lat: e.latlng.lat,
143
- lng: e.latlng.lng,
144
- draggable: that.options()?.draggable ?? DEFAULT_MAP_OPTION.draggable
145
- };
146
- that.form.patchValue({
147
- latitude: e.latlng.lat,
148
- longitude: e.latlng.lng
149
- });
150
- that.addMarker(newMarker);
151
- that.markerAdded.emit(newMarker);
152
- }
153
- else {
154
- that.drawAloneMarker(e.latlng.lat, e.latlng.lng);
155
- }
156
- });
157
- }
158
- }
159
- /**
160
- * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude
161
- * are different from the provided values. It updates the first marker's latitude and longitude if the
162
- * marker array is not empty.
163
- *
164
- * @param {number} lat - The latitude of the marker
165
- * @param {number} lng - The longitude of the marker
166
- */
167
- drawAloneMarker(lat, lng) {
168
- if (this.mapMarkers()?.[0]?.lat && this.mapMarkers()?.[0]?.lng) {
169
- if (this.mapMarkers()[0].lat !== lat || this.mapMarkers()[0].lng !== lng) {
170
- this.mapMarkers.update((markers) => {
171
- if (markers?.length) {
172
- markers[0].lat = lat;
173
- markers[0].lng = lng;
174
- }
175
- return markers;
176
- });
177
- this.drawMarkers();
178
- this.changeCenter(new L.LatLng(this.mapMarkers()[0].lat, this.mapMarkers()[0].lng));
179
- }
180
- }
181
- }
182
- /**
183
- * Add marker to map
184
- * @param center - center of the circle
185
- * @param radius - radius of the circle in meters
186
- * @private
187
- */
188
- addCircle(center, radius) {
189
- if (this.map && center?.lat && center?.lng) {
190
- this.drawMarkers();
191
- L.circleMarker([center.lat, center.lng], { radius: radius ?? 10 }).addTo(this.map);
192
- }
193
- }
194
- /**
195
- * Add marker to map
196
- * @param marker - Point of the map
197
- * @param canAdd
198
- */
199
- addMarker(marker, canAdd = true) {
200
- if (this.map && marker?.lat && marker?.lng) {
201
- const markerAdd = L.marker({
202
- lat: marker.lat,
203
- lng: marker.lng,
204
- alt: marker?.alt ?? 0,
205
- }, {
206
- draggable: marker?.draggable ?? true,
207
- autoPan: true
208
- }).setIcon(icon({
209
- iconSize: this.icon?.iconSize,
210
- iconAnchor: this.icon?.iconAnchor,
211
- iconUrl: this.icon?.iconUrl
212
- })).addTo(this.layerGroup);
213
- if (canAdd) {
214
- this.mapMarkers.update((markers) => {
215
- markers.push(marker);
216
- return markers;
217
- });
218
- }
219
- markerAdd.on('dragend', () => {
220
- this.changeCenter(markerAdd.getLatLng());
221
- this.markerDragend.emit(markerAdd.getLatLng());
222
- });
223
- if (marker?.popupContent) {
224
- markerAdd.on('mouseover', () => {
225
- const popup = L.popup({
226
- className: 'guajiritos-marker-popup',
227
- closeButton: false,
228
- offset: new L.Point(0, -32)
229
- })
230
- .setLatLng(markerAdd.getLatLng())
231
- .setContent(marker.popupContent)
232
- .addTo(this.layerGroup);
233
- document.querySelector('.guajiritos-marker-popup')
234
- .addEventListener('click', () => {
235
- this.markerClicked.emit(marker);
236
- });
237
- });
238
- }
239
- if (marker?.clickable) {
240
- markerAdd.on('click', () => {
241
- this.markerClicked.emit(marker);
242
- });
243
- }
244
- }
245
- }
246
- /**
247
- * Put the map center on marker position
248
- * @param marker - Point of the map
249
- */
250
- changeCenter(marker) {
251
- this.form.patchValue({
252
- latitude: marker.lat,
253
- longitude: marker.lng
254
- });
255
- this.map?.setView(marker);
256
- }
257
- /**
258
- * Propagates the change to other components.
259
- *
260
- * @param {any} _ - an arbitrary parameter.
261
- */
262
- propagateChange(_) {
263
- }
264
- ;
265
- /**
266
- * Sets the callback function to be called when the value
267
- * of the control changes.
268
- *
269
- * @param {any} fn - The callback function to be called
270
- * when the value of the control changes.
271
- */
272
- registerOnChange(fn) {
273
- this.propagateChange = fn;
274
- }
275
- /**
276
- * Registers a callback function to be called when the form control is "touched".
277
- */
278
- registerOnTouched() {
279
- }
280
- /**
281
- * Sets the disabled state of the form.
282
- *
283
- * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.
284
- */
285
- setDisabledState(isDisabled) {
286
- if (isDisabled) {
287
- this.form.disable();
288
- }
289
- else {
290
- this.form.enable();
291
- }
292
- }
293
- /**
294
- * Writes a value to the form.
295
- *
296
- * @param {any} data - The data to be written.
297
- */
298
- writeValue(data) {
299
- if (data?.latitude && data?.longitude) {
300
- this.form.patchValue({
301
- latitude: data.latitude,
302
- longitude: data.longitude
303
- });
304
- }
305
- }
306
- validate() {
307
- return this.form.invalid ? { wrongLocation: true } : null;
308
- }
309
- /**
310
- * Initializes the component and sets up a listener for changes in the form value.
311
- */
312
- ngOnInit() {
313
- this.form.valueChanges
314
- .pipe(takeUntilDestroyed(this._destroyedRef), distinctUntilChanged(), debounceTime(300))
315
- .subscribe((marker) => {
316
- if (this.form.valid) {
317
- this.propagateChange(this.form.value);
318
- if (this.options().aloneMarker && marker.latitude && marker.longitude) {
319
- if (this.mapMarkers()?.length === 0) {
320
- this.addMarker({
321
- lat: Number(marker.latitude),
322
- lng: Number(marker.longitude),
323
- draggable: true
324
- });
325
- this.changeCenter(new L.LatLng(Number(marker.latitude), Number(marker.longitude)));
326
- }
327
- else {
328
- this.drawAloneMarker(Number(marker.latitude), Number(marker.longitude));
329
- }
330
- }
331
- }
332
- else {
333
- this.propagateChange(null);
334
- }
335
- });
336
- }
337
- ngAfterViewInit() {
338
- this.initMap();
339
- }
340
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: GuajiritosMap, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
341
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: GuajiritosMap, isStandalone: true, selector: "guajiritos-map", inputs: { appearance: "appearance", color: "color", floatLabel: "floatLabel", subscriptSizing: "subscriptSizing", readonly: "readonly", hiddenForm: "hiddenForm", showIcon: "showIcon", showLabel: "showLabel", mapId: "mapId", optionsMap: "optionsMap", circleConfig: "circleConfig", center: "center", icon: "icon", markers: "markers" }, outputs: { markerDragend: "markerDragend", markerAdded: "markerAdded", markerClicked: "markerClicked" }, providers: [
342
- {
343
- provide: NG_VALUE_ACCESSOR,
344
- useExisting: forwardRef(() => GuajiritosMap),
345
- multi: true
346
- },
347
- {
348
- provide: NG_VALIDATORS,
349
- useExisting: forwardRef(() => GuajiritosMap),
350
- multi: true
351
- }
352
- ], 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"], 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" }] }); }
353
- }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: GuajiritosMap, decorators: [{
355
- type: Component,
356
- args: [{ selector: 'guajiritos-map', standalone: true, imports: [
357
- CommonModule,
358
- MatInputModule,
359
- ReactiveFormsModule,
360
- MatIconModule,
361
- TranslateModule
362
- ], providers: [
363
- {
364
- provide: NG_VALUE_ACCESSOR,
365
- useExisting: forwardRef(() => GuajiritosMap),
366
- multi: true
367
- },
368
- {
369
- provide: NG_VALIDATORS,
370
- useExisting: forwardRef(() => GuajiritosMap),
371
- multi: true
372
- }
373
- ], 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"] }]
374
- }], propDecorators: { appearance: [{
375
- type: Input
376
- }], color: [{
377
- type: Input
378
- }], floatLabel: [{
379
- type: Input
380
- }], subscriptSizing: [{
381
- type: Input
382
- }], readonly: [{
383
- type: Input
384
- }], hiddenForm: [{
385
- type: Input
386
- }], showIcon: [{
387
- type: Input
388
- }], showLabel: [{
389
- type: Input
390
- }], mapId: [{
391
- type: Input
392
- }], optionsMap: [{
393
- type: Input
394
- }], circleConfig: [{
395
- type: Input
396
- }], center: [{
397
- type: Input
398
- }], icon: [{
399
- type: Input
400
- }], markers: [{
401
- type: Input
402
- }], markerDragend: [{
403
- type: Output
404
- }], markerAdded: [{
405
- type: Output
406
- }], markerClicked: [{
407
- type: Output
408
- }] } });
409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhamlyaXRvcy1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VhamlyaXRvcy1tYXAvc3JjL2xpYi9ndWFqaXJpdG9zLW1hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFqaXJpdG9zLW1hcC9zcmMvbGliL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBb0IsVUFBVSxFQUFtQixNQUFNLFNBQVMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFHaEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBYSxrQkFBa0IsRUFBOEIsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFFckcsTUFBTSxr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RSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUM7NEJBQzVDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQWdCUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFZTyxZQUFZO3NCQUF4QixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQVVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBb0JJLGFBQWE7c0JBQXRCLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBpY29uLCBMYXRMbmcsIExhdExuZ0V4cHJlc3Npb24sIGxheWVyR3JvdXAsIExheWVyR3JvdXAsIE1hcCB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZsb2F0TGFiZWxUeXBlLCBNYXRGb3JtRmllbGRBcHBlYXJhbmNlLCBTdWJzY3JpcHRTaXppbmcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IENpcmNsZU1hcCwgREVGQVVMVF9NQVBfT1BUSU9OLCBJY29uLCBNYXBPcHRpb24sIE1hcmtlck1hcCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IExBVElUVURFX0xPTkdJVFVERSA9IC9eKC0/XFxkKyhcXC5cXGQrKT8pJC87XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2d1YWppcml0b3MtbWFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3VhamlyaXRvcy1tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR3VhamlyaXRvc01hcCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1YWppcml0b3NNYXApLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgR3VhamlyaXRvc01hcCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZFJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBtYXA6IE1hcDtcbiAgcHJpdmF0ZSBsYXllckdyb3VwOiBMYXllckdyb3VwID0gbmV3IEwuTGF5ZXJHcm91cCgpO1xuXG4gIHB1YmxpYyBtYXBNYXJrZXJzOiBXcml0YWJsZVNpZ25hbDxNYXJrZXJNYXBbXT4gPSBzaWduYWwoW10pO1xuICBwdWJsaWMgb3B0aW9uczogV3JpdGFibGVTaWduYWw8TWFwT3B0aW9uPiA9IHNpZ25hbChERUZBVUxUX01BUF9PUFRJT04pO1xuICBwdWJsaWMgY2lyY2xlOiBXcml0YWJsZVNpZ25hbDxDaXJjbGVNYXA+ID0gc2lnbmFsKG51bGwpO1xuXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgIGxhdGl0dWRlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKExBVElUVURFX0xPTkdJVFVERSldKSxcbiAgICBsb25naXR1ZGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oTEFUSVRVREVfTE9OR0lUVURFKV0pXG4gIH0pO1xuXG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnb3V0bGluZSc7XG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGUgPSAnYWx3YXlzJztcbiAgQElucHV0KCkgc3Vic2NyaXB0U2l6aW5nOiBTdWJzY3JpcHRTaXppbmcgPSAnZHluYW1pYyc7XG5cbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZGVuRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93SWNvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbWFwSWQ6IHN0cmluZyA9ICdtYXAnO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG1hcCBvcHRpb25zXG4gICAqL1xuICBASW5wdXQoKSBzZXQgb3B0aW9uc01hcChvcHRpb25zOiBQYXJ0aWFsPE1hcE9wdGlvbj4pIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zLnNldCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9ucygpLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNpcmNsZSBvbiB0aGUgbWFwXG4gICAqL1xuICBASW5wdXQoKSBzZXQgY2lyY2xlQ29uZmlnKGNpcmNsZTogQ2lyY2xlTWFwKSB7XG4gICAgaWYgKGNpcmNsZSkge1xuICAgICAgdGhpcy5jaXJjbGUuc2V0KGNpcmNsZSk7XG5cbiAgICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgICB0aGlzLmFkZENpcmNsZSh0aGlzLmNpcmNsZSgpPy5jZW50ZXIsIHRoaXMuY2lyY2xlKCk/LnJhZGl1cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IGNlbnRlcihjZW50ZXI6IE1hcmtlck1hcCkge1xuICAgIGlmIChjZW50ZXIpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMYXRMbmcoY2VudGVyLmxhdCwgY2VudGVyLmxuZykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG1hcmtlciBpY29uXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBJY29uID0ge1xuICAgIGljb25TaXplOiBbMjUsIDQxXSxcbiAgICBpY29uQW5jaG9yOiBbMTMsIDQxXSxcbiAgICBpY29uVXJsOiAnbGVhZmxldC9tYXJrZXItaWNvbi5wbmcnXG4gIH07XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgbWFya2Vyc1xuICAgKiBAcGFyYW0gbWFya2VycyAtIE1hcmtlcnMgYXJyYXlcbiAgICovXG4gIEBJbnB1dCgpIHNldCBtYXJrZXJzKG1hcmtlcnM6IE1hcmtlck1hcFtdKSB7XG4gICAgaWYgKG1hcmtlcnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5tYXBNYXJrZXJzLnNldChtYXJrZXJzKTtcblxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBsYXRpdHVkZTogdGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubGF0LFxuICAgICAgICBsb25naXR1ZGU6IHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxuZ1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMLkxhdExuZyh0aGlzLm1hcE1hcmtlcnMoKVswXS5sYXQsIHRoaXMubWFwTWFya2VycygpWzBdLmxuZykpO1xuXG4gICAgICBpZiAodGhpcy5tYXAgJiYgdGhpcy5sYXllckdyb3VwKSB7XG4gICAgICAgIHRoaXMuZHJhd01hcmtlcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2UgbGFuemEgY2FkYSB2ZXogcXVlIGNhbWJpYSB1biBtYXJjYWRvclxuICAgKi9cbiAgQE91dHB1dCgpIG1hcmtlckRyYWdlbmQ6IEV2ZW50RW1pdHRlcjxMYXRMbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogU2UgbGFuemEgY2FkYSB2ZXogcXVlIHNlIGHDsWFkZSB1biBtYXJjYWRvclxuICAgKi9cbiAgQE91dHB1dCgpIG1hcmtlckFkZGVkOiBFdmVudEVtaXR0ZXI8TWFya2VyTWFwPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KCkgbWFya2VyQ2xpY2tlZDogRXZlbnRFbWl0dGVyPE1hcmtlck1hcD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIERyYXdzIHRoZSBtYXJrZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3TWFya2VycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5sYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICB0aGlzLm1hcE1hcmtlcnMoKS5mb3JFYWNoKChtOiBNYXJrZXJNYXApOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5hZGRNYXJrZXIobSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1haW4gcHJvcGVydGllcyBvZiB0aGUgbWFwXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGluaXRNYXAoKTogdm9pZCB7XG4gICAgdGhpcy5tYXAgPSBMLm1hcCh0aGlzLm1hcElkLCB7XG4gICAgICBjZW50ZXI6IHRoaXMub3B0aW9ucygpPy5jZW50ZXIgYXMgTGF0TG5nRXhwcmVzc2lvbiA/PyBERUZBVUxUX01BUF9PUFRJT04uY2VudGVyLFxuICAgICAgZHJhZ2dpbmc6IHRoaXMub3B0aW9ucygpPy5kcmFnZ2FibGUgPz8gREVGQVVMVF9NQVBfT1BUSU9OLmRyYWdnYWJsZSxcbiAgICAgIHpvb206IHRoaXMub3B0aW9ucygpPy56b29tID8/IERFRkFVTFRfTUFQX09QVElPTi56b29tLFxuICAgICAgem9vbUNvbnRyb2w6IHRoaXMub3B0aW9ucygpPy56b29tQ29udHJvbCB8fCBERUZBVUxUX01BUF9PUFRJT04uem9vbUNvbnRyb2wsXG4gICAgICBzY3JvbGxXaGVlbFpvb206IHRoaXMub3B0aW9ucygpPy5zY3JvbGxXaGVlbFpvb20gfHwgREVGQVVMVF9NQVBfT1BUSU9OLnNjcm9sbFdoZWVsWm9vbSxcbiAgICAgIG1heFpvb206IDE4LFxuICAgICAgbWluWm9vbTogM1xuICAgIH0pO1xuXG4gICAgdGhpcy5sYXllckdyb3VwID0gbGF5ZXJHcm91cCgpLmFkZFRvKHRoaXMubWFwKTtcblxuICAgIEwudGlsZUxheWVyKCdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9ob3Qve3p9L3t4fS97eX0ucG5nJykuYWRkVG8odGhpcy5tYXApO1xuXG4gICAgdGhpcy5kcmF3TWFya2VycygpO1xuXG4gICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxhdCAmJiB0aGlzLm1hcE1hcmtlcnMoKT8uWzBdPy5sbmcpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMLkxhdExuZyh0aGlzLm1hcE1hcmtlcnMoKVswXS5sYXQsIHRoaXMubWFwTWFya2VycygpWzBdLmxuZykpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNpcmNsZSgpKSB7XG4gICAgICB0aGlzLmFkZENpcmNsZSh0aGlzLmNpcmNsZSgpPy5jZW50ZXIsIHRoaXMuY2lyY2xlKCk/LnJhZGl1cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucygpPy5hZGRNYXJrZXIpIHtcbiAgICAgIGxldCB0aGF0ID0gdGhpcztcbiAgICAgIHRoaXMubWFwLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlOiBMLkxlYWZsZXRNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGF0Lm1hcE1hcmtlcnMoKS5sZW5ndGggPT09IDAgfHwgKHRoYXQubWFwTWFya2VycygpLmxlbmd0aCA+IDAgJiYgIXRoYXQub3B0aW9ucygpPy5hbG9uZU1hcmtlcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdNYXJrZXI6IE1hcmtlck1hcCA9IHtcbiAgICAgICAgICAgIGxhdDogZS5sYXRsbmcubGF0LFxuICAgICAgICAgICAgbG5nOiBlLmxhdGxuZy5sbmcsXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRoYXQub3B0aW9ucygpPy5kcmFnZ2FibGUgPz8gREVGQVVMVF9NQVBfT1BUSU9OLmRyYWdnYWJsZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGF0LmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBsYXRpdHVkZTogZS5sYXRsbmcubGF0LFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBlLmxhdGxuZy5sbmdcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoYXQuYWRkTWFya2VyKG5ld01hcmtlcik7XG5cbiAgICAgICAgICB0aGF0Lm1hcmtlckFkZGVkLmVtaXQobmV3TWFya2VyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGF0LmRyYXdBbG9uZU1hcmtlcihlLmxhdGxuZy5sYXQsIGUubGF0bG5nLmxuZyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3cyBhIG1hcmtlciBhdCB0aGUgc3BlY2lmaWVkIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgaWYgdGhlIGZpcnN0IG1hcmtlcidzIGxhdGl0dWRlIGFuZCBsb25naXR1ZGVcbiAgICogYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBwcm92aWRlZCB2YWx1ZXMuIEl0IHVwZGF0ZXMgdGhlIGZpcnN0IG1hcmtlcidzIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgaWYgdGhlXG4gICAqIG1hcmtlciBhcnJheSBpcyBub3QgZW1wdHkuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsYXQgLSBUaGUgbGF0aXR1ZGUgb2YgdGhlIG1hcmtlclxuICAgKiBAcGFyYW0ge251bWJlcn0gbG5nIC0gVGhlIGxvbmdpdHVkZSBvZiB0aGUgbWFya2VyXG4gICAqL1xuICBwcml2YXRlIGRyYXdBbG9uZU1hcmtlcihsYXQ6IG51bWJlciwgbG5nOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXBNYXJrZXJzKCk/LlswXT8ubGF0ICYmIHRoaXMubWFwTWFya2VycygpPy5bMF0/LmxuZykge1xuICAgICAgaWYgKHRoaXMubWFwTWFya2VycygpWzBdLmxhdCAhPT0gbGF0IHx8IHRoaXMubWFwTWFya2VycygpWzBdLmxuZyAhPT0gbG5nKSB7XG4gICAgICAgIHRoaXMubWFwTWFya2Vycy51cGRhdGUoKG1hcmtlcnM6IE1hcmtlck1hcFtdKTogTWFya2VyTWFwW10gPT4ge1xuICAgICAgICAgIGlmIChtYXJrZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG1hcmtlcnNbMF0ubGF0ID0gbGF0O1xuICAgICAgICAgICAgbWFya2Vyc1swXS5sbmcgPSBsbmc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtYXJrZXJzO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRyYXdNYXJrZXJzKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG5ldyBMLkxhdExuZyh0aGlzLm1hcE1hcmtlcnMoKVswXS5sYXQsIHRoaXMubWFwTWFya2VycygpWzBdLmxuZykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWFya2VyIHRvIG1hcFxuICAgKiBAcGFyYW0gY2VudGVyIC0gY2VudGVyIG9mIHRoZSBjaXJjbGVcbiAgICogQHBhcmFtIHJhZGl1cyAtIHJhZGl1cyBvZiB0aGUgY2lyY2xlIGluIG1ldGVyc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhZGRDaXJjbGUoY2VudGVyOiBNYXJrZXJNYXAsIHJhZGl1czogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwICYmIGNlbnRlcj8ubGF0ICYmIGNlbnRlcj8ubG5nKSB7XG4gICAgICB0aGlzLmRyYXdNYXJrZXJzKCk7XG4gICAgICBMLmNpcmNsZU1hcmtlcihbY2VudGVyLmxhdCwgY2VudGVyLmxuZ10sIHsgcmFkaXVzOiByYWRpdXMgPz8gMTAgfSkuYWRkVG8odGhpcy5tYXApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWFya2VyIHRvIG1hcFxuICAgKiBAcGFyYW0gbWFya2VyIC0gUG9pbnQgb2YgdGhlIG1hcFxuICAgKiBAcGFyYW0gY2FuQWRkXG4gICAqL1xuICBwcml2YXRlIGFkZE1hcmtlcihtYXJrZXI6IE1hcmtlck1hcCwgY2FuQWRkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcCAmJiBtYXJrZXI/LmxhdCAmJiBtYXJrZXI/LmxuZykge1xuICAgICAgY29uc3QgbWFya2VyQWRkOiBMLk1hcmtlciA9IEwubWFya2VyKHtcbiAgICAgICAgbGF0OiBtYXJrZXIubGF0LFxuICAgICAgICBsbmc6IG1hcmtlci5sbmcsXG4gICAgICAgIGFsdDogbWFya2VyPy5hbHQgPz8gMCxcbiAgICAgIH0sIHtcbiAgICAgICAgZHJhZ2dhYmxlOiBtYXJrZXI/LmRyYWdnYWJsZSA/PyB0cnVlLFxuICAgICAgICBhdXRvUGFuOiB0cnVlXG4gICAgICB9KS5zZXRJY29uKFxuICAgICAgICBpY29uKHtcbiAgICAgICAgICBpY29uU2l6ZTogdGhpcy5pY29uPy5pY29uU2l6ZSxcbiAgICAgICAgICBpY29uQW5jaG9yOiB0aGlzLmljb24/Lmljb25BbmNob3IsXG4gICAgICAgICAgaWNvblVybDogdGhpcy5pY29uPy5pY29uVXJsXG4gICAgICAgIH0pXG4gICAgICApLmFkZFRvKHRoaXMubGF5ZXJHcm91cCk7XG5cbiAgICAgIGlmIChjYW5BZGQpIHtcbiAgICAgICAgdGhpcy5tYXBNYXJrZXJzLnVwZGF0ZSgobWFya2VyczogTWFya2VyTWFwW10pOiBNYXJrZXJNYXBbXSA9PiB7XG4gICAgICAgICAgbWFya2Vycy5wdXNoKG1hcmtlcik7XG4gICAgICAgICAgcmV0dXJuIG1hcmtlcnM7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBtYXJrZXJBZGQub24oJ2RyYWdlbmQnLCAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKG1hcmtlckFkZC5nZXRMYXRMbmcoKSk7XG4gICAgICAgIHRoaXMubWFya2VyRHJhZ2VuZC5lbWl0KG1hcmtlckFkZC5nZXRMYXRMbmcoKSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKG1hcmtlcj8ucG9wdXBDb250ZW50KSB7XG4gICAgICAgIG1hcmtlckFkZC5vbignbW91c2VvdmVyJywgKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGNvbnN0IHBvcHVwOiBMLlBvcHVwID0gTC5wb3B1cCh7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdndWFqaXJpdG9zLW1hcmtlci1wb3B1cCcsXG4gICAgICAgICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IG5ldyBMLlBvaW50KDAsIC0zMilcbiAgICAgICAgICB9KVxuICAgICAgICAgICAgLnNldExhdExuZyhtYXJrZXJBZGQuZ2V0TGF0TG5nKCkpXG4gICAgICAgICAgICAuc2V0Q29udGVudChtYXJrZXIucG9wdXBDb250ZW50KVxuICAgICAgICAgICAgLmFkZFRvKHRoaXMubGF5ZXJHcm91cCk7XG5cbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3VhamlyaXRvcy1tYXJrZXItcG9wdXAnKVxuICAgICAgICAgICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm1hcmtlckNsaWNrZWQuZW1pdChtYXJrZXIpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXJrZXI/LmNsaWNrYWJsZSkge1xuICAgICAgICBtYXJrZXJBZGQub24oJ2NsaWNrJywgKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMubWFya2VyQ2xpY2tlZC5lbWl0KG1hcmtlcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQdXQgdGhlIG1hcCBjZW50ZXIgb24gbWFya2VyIHBvc2l0aW9uXG4gICAqIEBwYXJhbSBtYXJrZXIgLSBQb2ludCBvZiB0aGUgbWFwXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlQ2VudGVyKG1hcmtlcjogTC5MYXRMbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBsYXRpdHVkZTogbWFya2VyLmxhdCxcbiAgICAgIGxvbmdpdHVkZTogbWFya2VyLmxuZ1xuICAgIH0pO1xuICAgIHRoaXMubWFwPy5zZXRWaWV3KG1hcmtlcik7XG4gIH1cblxuICAvKipcbiAgICogUHJvcGFnYXRlcyB0aGUgY2hhbmdlIHRvIG90aGVyIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBfIC0gYW4gYXJiaXRyYXJ5IHBhcmFtZXRlci5cbiAgICovXG4gIHByb3BhZ2F0ZUNoYW5nZShfOiBhbnkpOiB2b2lkIHtcbiAgfTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlXG4gICAqIG9mIHRoZSBjb250cm9sIGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBmbiAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWRcbiAgICogd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgY2hhbmdlcy5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGZvcm0gY29udHJvbCBpcyBcInRvdWNoZWRcIi5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBmb3JtLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRGlzYWJsZWQgLSBTcGVjaWZpZXMgd2hldGhlciB0aGUgZm9ybSBzaG91bGQgYmUgZGlzYWJsZWQgb3Igbm90LlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGEgdmFsdWUgdG8gdGhlIGZvcm0uXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgd3JpdHRlbi5cbiAgICovXG4gIHdyaXRlVmFsdWUoZGF0YTogeyBsYXRpdHVkZTogbnVtYmVyIHwgc3RyaW5nOyBsb25naXR1ZGU6IG51bWJlciB8IHN0cmluZyB9KTogdm9pZCB7XG4gICAgaWYgKGRhdGE/LmxhdGl0dWRlICYmIGRhdGE/LmxvbmdpdHVkZSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBsYXRpdHVkZTogZGF0YS5sYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlOiBkYXRhLmxvbmdpdHVkZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIHJldHVybiB0aGlzLmZvcm0uaW52YWxpZCA/IHsgd3JvbmdMb2NhdGlvbjogdHJ1ZSB9IDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBzZXRzIHVwIGEgbGlzdGVuZXIgZm9yIGNoYW5nZXMgaW4gdGhlIGZvcm0gdmFsdWUuXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3llZFJlZiksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChtYXJrZXI6IHsgbGF0aXR1ZGU6IHN0cmluZywgbG9uZ2l0dWRlOiBzdHJpbmcgfSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5mb3JtLnZhbHVlKTtcblxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMoKS5hbG9uZU1hcmtlciAmJiBtYXJrZXIubGF0aXR1ZGUgJiYgbWFya2VyLmxvbmdpdHVkZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWFwTWFya2VycygpPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRNYXJrZXIoe1xuICAgICAgICAgICAgICAgIGxhdDogTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksXG4gICAgICAgICAgICAgICAgbG5nOiBOdW1iZXIobWFya2VyLmxvbmdpdHVkZSksXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihuZXcgTC5MYXRMbmcoTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksIE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5kcmF3QWxvbmVNYXJrZXIoTnVtYmVyKG1hcmtlci5sYXRpdHVkZSksIE51bWJlcihtYXJrZXIubG9uZ2l0dWRlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRNYXAoKTtcbiAgfVxufVxuIiwiQGlmIChtYXBJZCkge1xuICA8ZGl2IGNsYXNzPVwibWFwLWNvbnRhaW5lclwiPlxuICAgIEBpZiAoIWhpZGRlbkZvcm0gJiYgb3B0aW9ucygpPy5hbG9uZU1hcmtlciAmJiBtYXBNYXJrZXJzKCk/Lmxlbmd0aCA8PSAxKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGF0LWxuZy1pbnB1dFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtjb2xvcl09XCJjb2xvclwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBjbGFzcz0ndy0xMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiPlxuICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJzaG93TGFiZWxcIj57eyBcImxhdGl0dWRcIiB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiIFtjb2xvcl09XCJjb2xvclwiICpuZ0lmPVwic2hvd0ljb25cIj5wbGFjZTwvbWF0LWljb24+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInbGF0aXR1ZCcgfCB0cmFuc2xhdGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiPlxuICAgICAgICAgIDxtYXQtZXJyb3I+e3sgJ0xhdGl0dWQgcmVxdWVyaWRhJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtjb2xvcl09XCJjb2xvclwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBjbGFzcz0ndy0xMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiPlxuICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJzaG93TGFiZWxcIj57eyBcImxvbmdpdHVkXCIgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIiBbY29sb3JdPVwiY29sb3JcIiAqbmdJZj1cInNob3dJY29uXCI+cGxhY2U8L21hdC1pY29uPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2xvbmdpdHVkJyB8IHRyYW5zbGF0ZVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiPlxuICAgICAgICAgIDxtYXQtZXJyb3I+e3sgJ0xvbmdpdHVkIHJlcXVlcmlkYScgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgW2lkXT1cIm1hcElkXCIgY2xhc3M9XCJtYXBcIlxuICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItcmFkaXVzJzogb3B0aW9ucygpPy5ib3JkZXJSYWRpdXMgPz8gJzhweCcsICdoZWlnaHQnOiBvcHRpb25zKCk/LmhlaWdodCA/PyAnNDAwcHgnfVwiPjwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2d1YWppcml0b3MtbWFwL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBndWFqaXJpdG9zLW1hcFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YWppcml0b3MtbWFwLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,50 +0,0 @@
1
- /**
2
- * Map options interface
3
- */
4
- export interface MapOption {
5
- center?: [number, number];
6
- draggable?: boolean;
7
- updateWithClick?: boolean;
8
- updateWithDoubleClick?: boolean;
9
- zoom?: number;
10
- borderRadius?: string;
11
- height?: string;
12
- scrollable?: boolean;
13
- zoomControl?: boolean;
14
- scrollWheelZoom?: boolean;
15
- addMarker?: boolean;
16
- aloneMarker?: boolean;
17
- }
18
- /**
19
- * Marker interface
20
- */
21
- export interface MarkerMap {
22
- lat: number;
23
- lng: number;
24
- id?: string;
25
- alt?: number;
26
- popupContent?: string;
27
- draggable?: boolean;
28
- clickable?: boolean;
29
- }
30
- /**
31
- * Icon interface
32
- */
33
- export interface Icon {
34
- iconSize: [number, number];
35
- iconAnchor: [number, number];
36
- iconUrl: string;
37
- iconRetinaUrl?: string;
38
- shadowUrl?: string;
39
- popupAnchor?: [number, number];
40
- tooltipAnchor?: [number, number];
41
- shadowSize?: [number, number];
42
- }
43
- /**
44
- * Circle map interface
45
- */
46
- export interface CircleMap {
47
- center: MarkerMap;
48
- radius: number;
49
- }
50
- export declare const DEFAULT_MAP_OPTION: MapOption;
@@ -1,130 +0,0 @@
1
- import { AfterViewInit, EventEmitter, OnInit, WritableSignal } from '@angular/core';
2
- import * as L from 'leaflet';
3
- import { LatLng } from 'leaflet';
4
- import { ControlValueAccessor, UntypedFormGroup, ValidationErrors, Validator } from '@angular/forms';
5
- import { FloatLabelType, MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
6
- import { ThemePalette } from '@angular/material/core';
7
- import { CircleMap, Icon, MapOption, MarkerMap } from '../interfaces/interfaces';
8
- import * as i0 from "@angular/core";
9
- export declare class GuajiritosMap implements OnInit, AfterViewInit, ControlValueAccessor, Validator {
10
- private _destroyedRef;
11
- private map;
12
- private layerGroup;
13
- mapMarkers: WritableSignal<MarkerMap[]>;
14
- options: WritableSignal<MapOption>;
15
- circle: WritableSignal<CircleMap>;
16
- form: UntypedFormGroup;
17
- appearance: MatFormFieldAppearance;
18
- color: ThemePalette;
19
- floatLabel: FloatLabelType;
20
- subscriptSizing: SubscriptSizing;
21
- readonly: boolean;
22
- hiddenForm: boolean;
23
- showIcon: boolean;
24
- showLabel: boolean;
25
- mapId: string;
26
- /**
27
- * Default map options
28
- */
29
- set optionsMap(options: Partial<MapOption>);
30
- /**
31
- * Add a circle on the map
32
- */
33
- set circleConfig(circle: CircleMap);
34
- set center(center: MarkerMap);
35
- /**
36
- * Default marker icon
37
- */
38
- icon: Icon;
39
- /**
40
- * List of markers
41
- * @param markers - Markers array
42
- */
43
- set markers(markers: MarkerMap[]);
44
- /**
45
- * Se lanza cada vez que cambia un marcador
46
- */
47
- markerDragend: EventEmitter<LatLng>;
48
- /**
49
- * Se lanza cada vez que se añade un marcador
50
- */
51
- markerAdded: EventEmitter<MarkerMap>;
52
- markerClicked: EventEmitter<MarkerMap>;
53
- /**
54
- * Draws the markers.
55
- */
56
- private drawMarkers;
57
- /**
58
- * Main properties of the map
59
- * @private
60
- */
61
- private initMap;
62
- /**
63
- * Draws a marker at the specified latitude and longitude if the first marker's latitude and longitude
64
- * are different from the provided values. It updates the first marker's latitude and longitude if the
65
- * marker array is not empty.
66
- *
67
- * @param {number} lat - The latitude of the marker
68
- * @param {number} lng - The longitude of the marker
69
- */
70
- private drawAloneMarker;
71
- /**
72
- * Add marker to map
73
- * @param center - center of the circle
74
- * @param radius - radius of the circle in meters
75
- * @private
76
- */
77
- private addCircle;
78
- /**
79
- * Add marker to map
80
- * @param marker - Point of the map
81
- * @param canAdd
82
- */
83
- private addMarker;
84
- /**
85
- * Put the map center on marker position
86
- * @param marker - Point of the map
87
- */
88
- changeCenter(marker: L.LatLng): void;
89
- /**
90
- * Propagates the change to other components.
91
- *
92
- * @param {any} _ - an arbitrary parameter.
93
- */
94
- propagateChange(_: any): void;
95
- /**
96
- * Sets the callback function to be called when the value
97
- * of the control changes.
98
- *
99
- * @param {any} fn - The callback function to be called
100
- * when the value of the control changes.
101
- */
102
- registerOnChange(fn: any): void;
103
- /**
104
- * Registers a callback function to be called when the form control is "touched".
105
- */
106
- registerOnTouched(): void;
107
- /**
108
- * Sets the disabled state of the form.
109
- *
110
- * @param {boolean} isDisabled - Specifies whether the form should be disabled or not.
111
- */
112
- setDisabledState(isDisabled: boolean): void;
113
- /**
114
- * Writes a value to the form.
115
- *
116
- * @param {any} data - The data to be written.
117
- */
118
- writeValue(data: {
119
- latitude: number | string;
120
- longitude: number | string;
121
- }): void;
122
- validate(): ValidationErrors;
123
- /**
124
- * Initializes the component and sets up a listener for changes in the form value.
125
- */
126
- ngOnInit(): void;
127
- ngAfterViewInit(): void;
128
- static ɵfac: i0.ɵɵFactoryDeclaration<GuajiritosMap, never>;
129
- static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosMap, "guajiritos-map", never, { "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "hiddenForm": { "alias": "hiddenForm"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "mapId": { "alias": "mapId"; "required": false; }; "optionsMap": { "alias": "optionsMap"; "required": false; }; "circleConfig": { "alias": "circleConfig"; "required": false; }; "center": { "alias": "center"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; }, { "markerDragend": "markerDragend"; "markerAdded": "markerAdded"; "markerClicked": "markerClicked"; }, never, never, true, never>;
130
- }
package/public-api.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './interfaces/interfaces';
2
- export * from './lib/guajiritos-map.component';