{"version":3,"file":"asoftwareworld-form-builder-form-control-gps.mjs","sources":["../../src/components/form-control/gps/google-map.service.ts","../../src/components/form-control/gps/gps-dialog.ts","../../src/components/form-control/gps/gps-dialog.html","../../src/components/form-control/gps/gps.ts","../../src/components/form-control/gps/gps.html","../../src/components/form-control/gps/gps.module.ts","../../src/components/form-control/gps/public_api.ts","../../src/components/form-control/gps/asoftwareworld-form-builder-form-control-gps.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { Injectable } from '@angular/core';\r\ndeclare const google: any;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class GoogleMapService {\r\n    autocompleteService: any;\r\n    private geoCoder: any;\r\n    searchedAddress: any[] = [];\r\n    latitude!: number;\r\n    longitude!: number;\r\n    placesService: any;\r\n\r\n    setCurrentLocation(): void {\r\n        this.geoCoder = new google.maps.Geocoder();\r\n        this.latitude = 31.67431470650697;\r\n        this.longitude = 75.64344802329514;\r\n        if ('geolocation' in navigator) {\r\n            navigator.geolocation.getCurrentPosition((position) => {\r\n                this.latitude = position.coords.latitude ? position.coords.latitude : 31.67431470650697;\r\n                this.longitude = position.coords.longitude ? position.coords.longitude : 75.64344802329514;\r\n                this.getAddress(this.latitude, this.longitude);\r\n            });\r\n        }\r\n    }\r\n\r\n    getNearestAddress(): Promise<any> {\r\n        this.placesService = new google.maps.places.PlacesService(document.createElement('div'));\r\n        this.setCurrentLocation();\r\n        const nearestAddress: any[] = [];\r\n        return new Promise((resolve, reject) => {\r\n            const userLocation = new google.maps.LatLng(this.latitude, this.longitude);\r\n            const request = {\r\n                location: userLocation,\r\n                radius: 1500,\r\n                types: ['establishment'],\r\n                rankby: 'distance'\r\n            };\r\n            this.placesService.nearbySearch(\r\n                request,\r\n                (options: any[], status: any) => {\r\n                    if (status === google.maps.places.PlacesServiceStatus.OK) {\r\n                        options.map(element =>  {\r\n                            const address = {\r\n                                id: element.place_id,\r\n                                label: element.name + ', ' + element.vicinity,\r\n                                alias: element.name,\r\n                                addressName: element.vicinity,\r\n                                latitude: element.geometry.location.lat(),\r\n                                longitude: element.geometry.location.lng(),\r\n                                icon: 'https://maps.gstatic.com/consumer/images/icons/2x/place_grey650.png'\r\n                            };\r\n                            nearestAddress.push(address);\r\n                        });\r\n                        this.searchedAddress = nearestAddress;\r\n                        resolve(this.searchedAddress);\r\n                    } else {\r\n                        reject(status);\r\n                    }\r\n                });\r\n        }).then();\r\n    }\r\n\r\n    getQueryPredictions(query: string): Promise<any> {\r\n        this.autocompleteService = new google.maps.places.AutocompleteService();\r\n        const request = {\r\n            input: query\r\n        };\r\n        let resultAddress: any[] = [];\r\n        return new Promise((resolve, reject) => {\r\n            this.autocompleteService.getQueryPredictions(request, (options: any[], status: any) => {\r\n                if (status === google.maps.places.PlacesServiceStatus.OK && options.length > 0) {\r\n                    options.map(element => {\r\n                        const address = {\r\n                            id: element.place_id,\r\n                            label: element.structured_formatting.main_text + ', ' + element.structured_formatting.secondary_text,\r\n                            alias: element.structured_formatting.main_text,\r\n                            addressName: element.structured_formatting.secondary_text,\r\n                            icon: 'https://maps.gstatic.com/consumer/images/icons/2x/place_grey650.png'\r\n                        };\r\n                        resultAddress.push(address);\r\n                    });\r\n                    this.searchedAddress = resultAddress;\r\n                    resolve(this.searchedAddress);\r\n                }\r\n                else if (status === google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {\r\n                    resultAddress = [];\r\n                    resolve(resultAddress);\r\n                }\r\n            });\r\n        }).then();\r\n    }\r\n\r\n    getAddress(latitude: number, longitude: number): Promise<any> {\r\n        this.geoCoder = new google.maps.Geocoder();\r\n        this.searchedAddress = [];\r\n        return new Promise((resolve, reject) => {\r\n            this.geoCoder.geocode({\r\n                location: {\r\n                    lat: latitude,\r\n                    lng: longitude\r\n                }\r\n            }, (results: any[], status: string) => {\r\n                if (status === google.maps.GeocoderStatus.OK) {\r\n                    const element = results[0];\r\n                    const address = {\r\n                        id: element.place_id,\r\n                        label: element.formatted_address,\r\n                        alias: element.formatted_address,\r\n                        addressName: element.formatted_address,\r\n                        icon: 'https://maps.gstatic.com/consumer/images/icons/2x/place_grey650.png',\r\n                        latitude,\r\n                        longitude,\r\n                    };\r\n                    this.searchedAddress.push(address);\r\n                    resolve(this.searchedAddress);\r\n                } else {\r\n                    reject(status);\r\n                }\r\n            });\r\n        }).then();\r\n    }\r\n\r\n    getDetails(data: any): Promise<any> {\r\n        let lat;\r\n        let lng;\r\n        return new Promise((resolve, reject) => {\r\n            this.placesService.getDetails({ placeId: data.id, fields: ['geometry', 'icon'] },\r\n                (details: { geometry: { location: { lat: () => any; lng: () => any; }; }; icon: any; }, status: any) => {\r\n                    if (status === google.maps.places.PlacesServiceStatus.OK) {\r\n                        lat = details.geometry.location.lat();\r\n                        lng = details.geometry.location.lng();\r\n                        const address = {\r\n                            id: data.id,\r\n                            label: data.label,\r\n                            alias: data.alias,\r\n                            addressName: data.addressName,\r\n                            latitude: lat,\r\n                            longitude: lng,\r\n                            icon: data.icon\r\n                        };\r\n                        resolve(address);\r\n                    } else {\r\n                        reject(status);\r\n                    }\r\n                });\r\n        }).then();\r\n    }\r\n\r\n    isLetter(value: string): boolean {\r\n        const letters = /[a-z A-Z]/g;\r\n        if (value && value.match(letters)) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Constants } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { GoogleMapService } from './google-map.service';\r\nimport { GpsControl } from './gps-control';\r\n\r\n@Component({\r\n    selector: 'asw-gps-dialog',\r\n    templateUrl: './gps-dialog.html'\r\n})\r\nexport class AswGpsDialog implements OnInit {\r\n    constants: any = Constants;\r\n    aswEditGpsForm!: FormGroup;\r\n    status!: boolean;\r\n    disabled!: boolean;\r\n    filteredAddress: any;\r\n    searchedAddress: any[] = [];\r\n    constructor(\r\n        private formBuilder: FormBuilder,\r\n        private googleMapService: GoogleMapService,\r\n        public dialogRef: MatDialogRef<AswGpsDialog>,\r\n        @Inject(MAT_DIALOG_DATA) public control: any) {\r\n    }\r\n\r\n    async ngOnInit(): Promise<void> {\r\n        this.validateFormBuilder();\r\n        this.searchedAddress = await this.googleMapService.getNearestAddress();\r\n        this.editProperty(this.control);\r\n        this.aswEditGpsForm.get('value')?.valueChanges.pipe(\r\n            startWith(''),\r\n            map(address => (address)),\r\n        ).subscribe(async address => {\r\n            await this.searchAddressFromExitingData(address);\r\n        });\r\n    }\r\n\r\n    validateFormBuilder(): void {\r\n        this.aswEditGpsForm = this.formBuilder.group({\r\n            id: ['', [Validators.required]],\r\n            customClass: [],\r\n            tooltip: ['', []],\r\n            label: ['', [Validators.required, Validators.minLength(2)]],\r\n            latitude: ['', []],\r\n            longitude: ['', []],\r\n            value: ['', []],\r\n            style: ['', [Validators.required]],\r\n            column: [''],\r\n            isRequired: [false],\r\n            isDisabled: [false]\r\n        });\r\n    }\r\n\r\n    editProperty(control: GpsControl): void {\r\n        this.aswEditGpsForm.setValue({\r\n            id: control.id,\r\n            customClass: control.customClass ?? '',\r\n            latitude: control.latitude,\r\n            longitude: control.longitude,\r\n            value: control.value ?? '',\r\n            tooltip: control.tooltip,\r\n            label: control.label,\r\n            column: control.column,\r\n            style: control.style,\r\n            isRequired: control.isRequired,\r\n            isDisabled: control.isDisabled ?? false\r\n        });\r\n    }\r\n\r\n    onNoClick(): void {\r\n        this.dialogRef.close();\r\n    }\r\n\r\n    onSubmit(): void {\r\n        if (this.aswEditGpsForm.invalid) {\r\n            return;\r\n        }\r\n        this.aswEditGpsForm.value.controlType = this.control.controlType;\r\n        this.dialogRef.close(this.aswEditGpsForm.value);\r\n    }\r\n\r\n    onStatusChange(event: any): void {\r\n        this.status = event.checked ? true : false;\r\n    }\r\n\r\n    onChange(event: any): void {\r\n        this.disabled = event.checked ? true : false;\r\n    }\r\n\r\n    private async searchAddressFromExitingData(address: string): Promise<void> {\r\n        const filteredAddress = this.searchedAddress.find(x => x.label === address);\r\n        if (filteredAddress) {\r\n            await this.selectedAddress(filteredAddress);\r\n        } else {\r\n            await this.getAddressFromGoogleApi(address);\r\n        }\r\n    }\r\n\r\n    private async selectedAddress(filteredAddress: any): Promise<void> {\r\n        if (!filteredAddress?.latitude && !filteredAddress?.longitude) {\r\n            filteredAddress = await this.googleMapService.getDetails(filteredAddress);\r\n        }\r\n        this.aswEditGpsForm.patchValue({\r\n            latitude: filteredAddress.latitude,\r\n            longitude: filteredAddress.longitude,\r\n        });\r\n    }\r\n\r\n    async getAddressFromGoogleApi(address: string): Promise<void> {\r\n        if (address) {\r\n            this.searchedAddress = await this.googleMapService.getQueryPredictions(address);\r\n            if (this.searchedAddress.length === 0) {\r\n                const isValidSearch = this.googleMapService.isLetter(address);\r\n                if (isValidSearch) {\r\n                    const lat = address.split(',')[0].trim();\r\n                    const lng = address.split(',')[1].trim();\r\n                    this.searchedAddress = await this.googleMapService.getAddress(Number(lat), Number(lng));\r\n                } else {\r\n                    this.searchedAddress = [];\r\n                    this.aswEditGpsForm.get('value')?.setErrors({ searchAddress: true });\r\n                }\r\n            }\r\n            this.filteredAddress = this.searchedAddress;\r\n        } else {\r\n            this.filteredAddress = this.searchedAddress;\r\n        }\r\n    }\r\n}\r\n","<h4 mat-dialog-title>Edit Property</h4>\r\n<form [formGroup]=\"aswEditGpsForm\" (ngSubmit)=\"onSubmit()\">\r\n    <mat-dialog-content class=\"mat-typography\">\r\n        <div class=\"asw-full-width\"><br>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Unique Id</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"id\"\r\n                                        placeholder=\"Enter Unique Id\"\r\n                                        matTooltip=\"Enter Unique Id\"\r\n                                        formControlName=\"id\" required>\r\n                        <mat-error class=\"asw-mat-error\" *ngFor=\"let validation of constants.accountValidationMessages.id\">\r\n                            <ng-container class=\"asw-mat-error\" *ngIf=\"aswEditGpsForm.get('id')?.hasError(validation.type) && (aswEditGpsForm.get('id')?.dirty || aswEditGpsForm.get('id')?.touched)\">\r\n                                {{validation.message}}\r\n                            </ng-container>\r\n                        </mat-error>\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Label</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        placeholder=\"Enter label\"\r\n                                        matTooltip=\"Enter label\"\r\n                                        formControlName=\"label\" required>\r\n                        <mat-error class=\"asw-mat-error\" *ngFor=\"let validation of constants.accountValidationMessages.label\">\r\n                            <ng-container class=\"asw-mat-error\" *ngIf=\"aswEditGpsForm.get('label')?.hasError(validation.type) && (aswEditGpsForm.get('label')?.dirty || aswEditGpsForm.get('label')?.touched)\">\r\n                                {{validation.message}}\r\n                            </ng-container>\r\n                        </mat-error>\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Custom CSS Class</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"customClass\"\r\n                                        placeholder=\"Custom CSS Class\"\r\n                                        matTooltip=\"Custom CSS Class\"\r\n                                        formControlName=\"customClass\">\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Tooltip</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        placeholder=\"Enter tooltip\"\r\n                                        matTooltip=\"Enter tooltip\"\r\n                                        formControlName=\"tooltip\">\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Column Size</mat-label>\r\n                        <mat-select formControlName=\"column\" matTooltip=\"Select column size\">\r\n                            <mat-option *ngFor=\"let column of constants.columns\" [value]=\"column.value\">\r\n                                {{column.label}}\r\n                            </mat-option>\r\n                        </mat-select>\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Textbox Style</mat-label>\r\n                        <mat-select formControlName=\"style\" matTooltip=\"Select textbox style\">\r\n                            <mat-option value=\"legacy\">Legacy</mat-option>\r\n                            <mat-option value=\"standard\">Standard</mat-option>\r\n                            <mat-option value=\"fill\">Fill</mat-option>\r\n                            <mat-option value=\"outline\">Outline</mat-option>                    \r\n                        </mat-select>\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>            \r\n            <div class=\"row\">\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Latitude</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"latitude\"\r\n                                        placeholder=\"Enter latitude\"\r\n                                        matTooltip=\"Enter latitude\"\r\n                                        formControlName=\"latitude\">\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Longitude</mat-label>\r\n                        <input matInput type=\"text\"\r\n                                        name=\"longitude\"\r\n                                        placeholder=\"Enter longitude\"\r\n                                        matTooltip=\"Enter longitude\"\r\n                                        formControlName=\"longitude\">\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-12\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                        <mat-label>Search Location</mat-label>\r\n                        <input matInput\r\n                               aria-label=\"location\"\r\n                               [matAutocomplete]=\"auto\"\r\n                               formControlName=\"value\">\r\n                        <mat-autocomplete #auto=\"matAutocomplete\">\r\n                            <mat-option *ngFor=\"let address of filteredAddress\" [value]=\"address.label\">\r\n                                <img class=\"example-option-img\" aria-hidden [src]=\"address.icon\" height=\"20\">\r\n                                <span>{{address.alias}}</span> \r\n                                <small> {{address.addressName}}</small>\r\n                            </mat-option>\r\n                        </mat-autocomplete>\r\n                        <mat-error class=\"asw-mat-error\" *ngFor=\"let validation of constants.accountValidationMessages.searchAddress\">\r\n                            <ng-container class=\"asw-mat-error\" *ngIf=\"aswEditGpsForm.get('value')?.errors?.searchAddress\">\r\n                                {{validation.message}}\r\n                            </ng-container>\r\n                        </mat-error>\r\n                    </mat-form-field>\r\n                </div>\r\n            </div>\r\n            <div class=\"row\">\r\n                <div class=\"col-md-4\">\r\n                    <mat-slide-toggle color=\"primary\"\r\n                            #isActive\r\n                            formControlName=\"isRequired\"\r\n                            (change)=\"onStatusChange($event)\">\r\n                            <ng-container *ngIf=\"status; else not\">\r\n                                NotRequired\r\n                            </ng-container>\r\n                            <ng-template #not>\r\n                                Required\r\n                            </ng-template>\r\n                    </mat-slide-toggle>\r\n                </div>\r\n                <div class=\"col-md-4\">\r\n                    <mat-slide-toggle color=\"primary\"\r\n                            #isDisable\r\n                            formControlName=\"isDisabled\"\r\n                            (change)=\"onChange($event)\">\r\n                            <ng-container *ngIf=\"disabled; else enabled\">\r\n                                Enabled\r\n                            </ng-container>\r\n                            <ng-template #enabled>\r\n                                Disabled\r\n                            </ng-template>\r\n                    </mat-slide-toggle>\r\n                </div>\r\n            </div>\r\n        </div>  \r\n    </mat-dialog-content>\r\n    <mat-dialog-actions align=\"end\">\r\n        <button type=\"button\"\r\n                class=\"btn btn-danger mr-2 mb-1 me-2\"\r\n                (click)=\"onNoClick()\">\r\n            No\r\n        </button>\r\n        <button type=\"submit\"\r\n                class=\"btn btn-primary mb-1\"\r\n                cdkFocusInitial>\r\n            Yes\r\n        </button>\r\n    </mat-dialog-actions>\r\n</form>\r\n\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AswConfirmDialog } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\nimport { Constants } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { GoogleMapService } from './google-map.service';\r\nimport { GpsControl } from './gps-control';\r\nimport { AswGpsDialog } from './gps-dialog';\r\n\r\n\r\n@Component({\r\n    selector: 'asw-gps',\r\n    templateUrl: './gps.html'\r\n})\r\nexport class AswGps implements OnInit {\r\n\r\n    searchedAddress: any[] = [];\r\n    filteredAddress: any;\r\n    constants: any = Constants;\r\n    @ViewChild('input') gpsForm!: HTMLFormElement;\r\n    /**\r\n     * Button control\r\n     */\r\n    @Input() control: GpsControl | null = null;\r\n\r\n    /**\r\n     * Button control index to help update or delete gps from drop area\r\n     */\r\n    @Input() controlIndex!: number;\r\n    @Input() isPreviewTemplate = false;\r\n\r\n    @Output() gpsUpdateEvent = new EventEmitter<{ control: GpsControl, index: number }>();\r\n    @Output() gpsDeleteEvent = new EventEmitter<number>();\r\n    @Output() gpsAddressChange = new EventEmitter<GpsControl>();\r\n    @Output() duplicateControl = new EventEmitter<GpsControl>();\r\n\r\n    constructor(\r\n        public dialog: MatDialog,\r\n        private googleMapService: GoogleMapService) { }\r\n\r\n    async ngOnInit(): Promise<void> {\r\n        if (this.control?.latitude && this.control.longitude && !this.control.value) {\r\n            const searchedAddress = await this.googleMapService.getAddress(Number(this.control?.latitude), Number(this.control.longitude));\r\n            this.control.value = searchedAddress[0].label;\r\n        }\r\n        this.searchedAddress = await this.googleMapService.getNearestAddress();\r\n        this.filteredAddress = this.searchedAddress;\r\n    }\r\n\r\n    /**\r\n     * Delete gps control based on control index\r\n     * @param control gps control items\r\n     * @param controlIndex gps control index\r\n     */\r\n    deleteGpsDialog(control: GpsControl, controlIndex: number): void {\r\n        const dialogRef = this.dialog.open(AswConfirmDialog, {\r\n            width: '350px',\r\n            data: { name: control.controlType, message: this.constants.messages.waringMessage }\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                this.gpsDeleteEvent.emit(controlIndex);\r\n            }\r\n        });\r\n    }\r\n\r\n    editGpsDialog(control: GpsControl, controlIndex: number): void {\r\n        const dialogRef = this.dialog.open(AswGpsDialog, {\r\n            disableClose: true,\r\n            width: '60%',\r\n            data: control\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                this.gpsUpdateEvent.emit({ control: result, index: controlIndex });\r\n            }\r\n        });\r\n    }\r\n\r\n    async onChange(address: string, control: GpsControl): Promise<void> {\r\n        const filteredAddress = this.searchedAddress.find(x => x.label === address);\r\n        if (filteredAddress) {\r\n            await this.selectedAddress(filteredAddress);\r\n        } else {\r\n            await this.getAddressFromGoogleApi(address);\r\n        }\r\n        this.gpsAddressChange.emit(control);\r\n    }\r\n\r\n    private async selectedAddress(filteredAddress: any): Promise<void> {\r\n        if (!filteredAddress?.latitude && !filteredAddress?.longitude) {\r\n            filteredAddress = await this.googleMapService.getDetails(filteredAddress);\r\n        }\r\n        if (this.control) {\r\n            this.control.latitude = filteredAddress.latitude;\r\n            this.control.longitude = filteredAddress.longitude;\r\n            this.control.value = filteredAddress.label;\r\n        }\r\n    }\r\n\r\n    async getAddressFromGoogleApi(address: string): Promise<void> {\r\n        if (address) {\r\n            this.searchedAddress = await this.googleMapService.getQueryPredictions(address);\r\n            if (this.searchedAddress.length === 0) {\r\n                const isValidSearch = this.googleMapService.isLetter(address);\r\n                if (isValidSearch) {\r\n                    const lat = address.split(',')[0].trim();\r\n                    const lng = address.split(',')[1].trim();\r\n                    this.searchedAddress = await this.googleMapService.getAddress(Number(lat), Number(lng));\r\n                } else {\r\n                    this.searchedAddress = [];\r\n                    this.gpsForm.control.setErrors({ searchAddress: true });\r\n                }\r\n            }\r\n            this.filteredAddress = this.searchedAddress;\r\n        } else {\r\n            this.filteredAddress = this.searchedAddress;\r\n        }\r\n    }\r\n\r\n    duplicateGpsControl(control: GpsControl): void {\r\n        this.duplicateControl.emit(control);\r\n    }\r\n}\r\n","<ng-container *ngIf=\"control as control\">\r\n    <mat-form-field [appearance]=\"control.style\" class=\"asw-mat-form-field {{control.customClass}}\">\r\n        <mat-label>{{control.label}}</mat-label>\r\n        <input matInput\r\n               [id]=\"control.id\"\r\n               [placeholder]=\"control.label\"\r\n               [matAutocomplete]=\"auto\"\r\n               [(ngModel)]=\"control.value\"\r\n               #input=\"ngModel\"\r\n               (ngModelChange)=\"onChange($event, control)\"\r\n               [matTooltip]=\"control.tooltip\"\r\n               [required]=\"control.isRequired\"\r\n               [disabled]=\"control.isDisabled ? true : false\">\r\n        <mat-autocomplete #auto=\"matAutocomplete\">\r\n            <mat-option *ngFor=\"let address of filteredAddress\" [value]=\"address.label\">\r\n                <img class=\"example-option-img\" aria-hidden [src]=\"address.icon\" height=\"20\">\r\n                <span>{{address.alias}}</span> \r\n                <small> {{address.addressName}}</small>\r\n            </mat-option>\r\n        </mat-autocomplete>\r\n        <mat-error class=\"asw-mat-error\" *ngIf=\"input.invalid && (input.dirty || input.touched)\">\r\n            <ng-container class=\"asw-mat-error\" *ngIf=\"input?.errors?.required\">\r\n                {{control.label}} is required\r\n            </ng-container>\r\n            <ng-container class=\"asw-mat-error\" *ngIf=\"input?.errors?.searchAddress\">\r\n                Sorry, {{control.value}} did not found.\r\n            </ng-container>\r\n        </mat-error>\r\n    </mat-form-field>\r\n    <div class=\"row\" *ngIf=\"isPreviewTemplate\">\r\n        <div class=\"col-md-12\">\r\n            <button mat-icon-button \r\n                    type=\"button\" \r\n                    matTooltip=\"Duplicate\" \r\n                    [matTooltipPosition]=\"'below'\" \r\n                    (click)=\"duplicateGpsControl(control)\">\r\n                <mat-icon>content_copy</mat-icon>\r\n            </button>\r\n            <button mat-icon-button \r\n                    type=\"button\" \r\n                    matTooltip=\"Edit\" \r\n                    [matTooltipPosition]=\"'below'\" \r\n                    (click)=\"editGpsDialog(control, controlIndex)\">\r\n                <mat-icon>edit</mat-icon>\r\n            </button>\r\n            <button mat-icon-button \r\n                    type=\"button\" \r\n                    matTooltip=\"Delete\" \r\n                    [matTooltipPosition]=\"'below'\" \r\n                    (click)=\"deleteGpsDialog(control, controlIndex)\">\r\n                <mat-icon>delete</mat-icon>\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-container>","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\n\r\nimport { AswGps } from './gps';\r\nimport { AswGpsDialog } from './gps-dialog';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatSelectModule,\r\n        MatInputModule,\r\n        MatDialogModule,\r\n        MatIconModule,\r\n        MatButtonModule,\r\n        MatTooltipModule,\r\n        AswConfirmDialogModule,\r\n        MatAutocompleteModule,\r\n        MatDividerModule,\r\n        MatSlideToggleModule\r\n    ],\r\n    declarations: [\r\n        AswGps,\r\n        AswGpsDialog\r\n    ],\r\n    exports: [\r\n        AswGps,\r\n        AswGpsDialog\r\n    ]\r\n})\r\nexport class AswGpsModule { }\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nexport * from './gps';\r\nexport * from './gps-dialog';\r\nexport * from './gps-control';\r\nexport * from './google-map.service';\r\nexport * from './gps.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.GoogleMapService","i3","i4","i6","i7","i8","i9","i10","i11"],"mappings":"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"}