@sumaris-net/ngx-components 18.3.30-alpha1 → 18.4.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.
@@ -120,7 +120,7 @@ export class LatLongTestPage {
120
120
  }
121
121
  stringify = JSON.stringify;
122
122
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LatLongTestPage, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PlatformService }], target: i0.ɵɵFactoryTarget.Component });
123
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: LatLongTestPage, selector: "app-latlong-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'mobile'\" (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'desktop'\" (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'dev'\" (click)=\"toggleMode('dev')\">\n <mat-label>Dev</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'temp'\" (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form #tabPanel class=\"form-container ion-padding\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n @if (mode === 'mobile') {\n <ng-container *ngTemplateOutlet=\"mainTest; context: { mobile: true }\"></ng-container>\n } @else if (mode === 'desktop') {\n <ng-container *ngTemplateOutlet=\"mainTest; context: { mobile: false }\"></ng-container>\n } @else if (mode === 'dev') {\n <ion-grid>\n <ion-row>\n <ion-col>\n <mat-checkbox (change)=\"toggleAppearance($event)\">Change apparence</mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-form-field [appearance]=\"appearance\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>LatLongFormat</mat-label>\n <mat-select #selectLatLongFormat [(value)]=\"selectedFormat\">\n <mat-option value=\"DDMM\" selected>DDMM</mat-option>\n <mat-option value=\"DDMMSS\">DDMMSS</mat-option>\n <mat-option value=\"DD\">DD</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n </ion-row>\n @switch (selectedFormat) {\n @case ('DDMM') {\n <ion-row>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'empty', latLongPattern: 'DDMM', required: false }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'enable', latLongPattern: 'DDMM', required: true }\n \"\n ></ng-container>\n </ion-col>\n <!-- <ion-col> -->\n <!-- <ng-container -->\n <!-- *ngTemplateOutlet=\"testV2; context: { formGroup: 'disable', latLongPattern: 'DDMM', required: true }\" -->\n <!-- ></ng-container> -->\n <!-- </ion-col> -->\n </ion-row>\n }\n @case ('DDMMSS') {\n <ion-row>\n <!-- DDMMSS -->\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'empty', latLongPattern: 'DDMMSS', required: false }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'enable', latLongPattern: 'DDMMSS', required: true }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'disable', latLongPattern: 'DDMMSS', required: true }\n \"\n ></ng-container>\n </ion-col>\n </ion-row>\n }\n @case ('DD') {\n <ion-row>\n <!-- DDMMSS -->\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'empty', latLongPattern: 'DD', required: false }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'enable', latLongPattern: 'DD', required: true }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'disable', latLongPattern: 'DD', required: true }\n \"\n ></ng-container>\n </ion-col>\n </ion-row>\n }\n }\n </ion-grid>\n } @else {\n <!-- Temporay TAB (for DEV) -->\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"-\"\n [required]=\"true\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n }\n </form>\n</ion-content>\n\n<ng-template #mainTest let-mobile=\"mobile\">\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <mat-checkbox (change)=\"toggleAppearance($event)\">Change apparence</mat-checkbox>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, with defaults</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'emptyRequired' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, required (no defaults)</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, required</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, required</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row>\n <ion-col>\n <ion-text><h4>With value</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form | formGetGroup: 'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Disabled control</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled control</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly (control is enable)</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"readonlyField.readonly = $event.checked\"\n [checked]=\"readonlyField.readonly\"\n ></mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With hint</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-hint align=\"end\">This is a long long hint</mat-hint>\n </mat-latlong-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n</ng-template>\n\n<ng-template #newComponent let-formGroupName=\"formGroup\" let-pattern=\"latLongPattern\" let-required=\"required\">\n <form *ngIf=\"form | formGetGroup: formGroupName as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">{{ formGroupName }}</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n <pre>invalid ? : {{ (formGroup | formGetControl: 'latitude').invalid }}</pre>\n <pre>touched ? : {{ (formGroup | formGetControl: 'latitude').touched }}</pre>\n <pre>errors : {{ formGroup | formGetGroup: 'latitude' | formError }}</pre>\n </small>\n </ion-text>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\" sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n [readonly]=\"true\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n [readonly]=\"true\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\" sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [required]=\"required\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col class=\"ion-no-padding\" sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [required]=\"required\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonRow, selector: "ion-row" }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i11.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i11.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i12.MatLatLongField, selector: "mat-latlong-field", inputs: ["formControl", "formControlName", "type", "latLongPattern", "maxDecimals", "required", "floatLabel", "placeholder", "defaultSign", "autofocus", "mobile", "degreesSymbolUnit", "minutesSymbolUnit", "secondsSymbolUnit", "clearable", "class", "tabindex", "appearance", "readonly", "subscriptSizing"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: i13.FormErrorPipe, name: "formError" }, { kind: "pipe", type: i13.FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: i13.FormGetGroupPipe, name: "formGetGroup" }] });
123
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: LatLongTestPage, selector: "app-latlong-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'mobile'\" (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'desktop'\" (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'dev'\" (click)=\"toggleMode('dev')\">\n <mat-label>Dev</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'temp'\" (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form #tabPanel class=\"form-container ion-padding\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n @if (mode === 'mobile') {\n <ng-container *ngTemplateOutlet=\"mainTest; context: { mobile: true }\"></ng-container>\n } @else if (mode === 'desktop') {\n <ng-container *ngTemplateOutlet=\"mainTest; context: { mobile: false }\"></ng-container>\n } @else if (mode === 'dev') {\n <ion-grid>\n <ion-row>\n <ion-col>\n <mat-checkbox (change)=\"toggleAppearance($event)\">Change apparence</mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-form-field [appearance]=\"appearance\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>LatLongFormat</mat-label>\n <mat-select #selectLatLongFormat [(value)]=\"selectedFormat\">\n <mat-option value=\"DDMM\" selected>DDMM</mat-option>\n <mat-option value=\"DDMMSS\">DDMMSS</mat-option>\n <mat-option value=\"DD\">DD</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n </ion-row>\n @switch (selectedFormat) {\n @case ('DDMM') {\n <ion-row>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'empty', latLongPattern: 'DDMM', required: false }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'enable', latLongPattern: 'DDMM', required: true }\n \"\n ></ng-container>\n </ion-col>\n <!-- <ion-col> -->\n <!-- <ng-container -->\n <!-- *ngTemplateOutlet=\"testV2; context: { formGroup: 'disable', latLongPattern: 'DDMM', required: true }\" -->\n <!-- ></ng-container> -->\n <!-- </ion-col> -->\n </ion-row>\n }\n @case ('DDMMSS') {\n <ion-row>\n <!-- DDMMSS -->\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'empty', latLongPattern: 'DDMMSS', required: false }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'enable', latLongPattern: 'DDMMSS', required: true }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'disable', latLongPattern: 'DDMMSS', required: true }\n \"\n ></ng-container>\n </ion-col>\n </ion-row>\n }\n @case ('DD') {\n <ion-row>\n <!-- DDMMSS -->\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'empty', latLongPattern: 'DD', required: false }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'enable', latLongPattern: 'DD', required: true }\n \"\n ></ng-container>\n </ion-col>\n <ion-col>\n <ng-container\n *ngTemplateOutlet=\"\n newComponent;\n context: { formGroup: 'disable', latLongPattern: 'DD', required: true }\n \"\n ></ng-container>\n </ion-col>\n </ion-row>\n }\n }\n </ion-grid>\n } @else {\n <!-- Temporay TAB (for DEV) -->\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"-\"\n [required]=\"true\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n }\n </form>\n</ion-content>\n\n<ng-template #mainTest let-mobile=\"mobile\">\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <mat-checkbox (change)=\"toggleAppearance($event)\">Change apparence</mat-checkbox>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, with defaults</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'emptyRequired' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, required (no defaults)</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, required</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, required</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row>\n <ion-col>\n <ion-text><h4>With value</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form | formGetGroup: 'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Disabled control</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled control</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly (control is enable)</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"readonlyField.readonly = $event.checked\"\n [checked]=\"readonlyField.readonly\"\n ></mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With hint</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [mobile]=\"mobile\"\n >\n <mat-hint align=\"end\">This is a long long hint</mat-hint>\n </mat-latlong-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n</ng-template>\n\n<ng-template #newComponent let-formGroupName=\"formGroup\" let-pattern=\"latLongPattern\" let-required=\"required\">\n <form *ngIf=\"form | formGetGroup: formGroupName as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">{{ formGroupName }}</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n <pre>invalid ? : {{ (formGroup | formGetControl: 'latitude').invalid }}</pre>\n <pre>touched ? : {{ (formGroup | formGetControl: 'latitude').touched }}</pre>\n <pre>errors : {{ formGroup | formGetGroup: 'latitude' | formError }}</pre>\n </small>\n </ion-text>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\" sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n [readonly]=\"true\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n [readonly]=\"true\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\" sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n [required]=\"required\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col class=\"ion-no-padding\" sizeLg=\"6\">\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n [latLongPattern]=\"pattern\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n [required]=\"required\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonRow, selector: "ion-row" }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i11.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i11.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i12.MatLatLongField, selector: "mat-latlong-field", inputs: ["formControl", "formControlName", "type", "latLongPattern", "maxDecimals", "required", "floatLabel", "placeholder", "defaultSign", "autofocus", "mobile", "clearable", "class", "tabindex", "appearance", "readonly", "subscriptSizing"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: i13.FormErrorPipe, name: "formError" }, { kind: "pipe", type: i13.FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: i13.FormGetGroupPipe, name: "formGetGroup" }] });
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: LatLongTestPage, decorators: [{
126
126
  type: Component,
@@ -24,7 +24,6 @@ import { TextFormTestingPage } from './text/testing/text-form.testing';
24
24
  import { MaskitoTestPage } from '../testing/maskito.test';
25
25
  import { MaskitoDirective } from '@maskito/angular';
26
26
  import { FormFieldCustomControlExample } from './test/test-component';
27
- //import { LatLongTest2Page } from './latlong/testing/latlong.test2';
28
27
  import { SharedMatLatLongModule } from './latlong/material.latlong.module';
29
28
  import * as i0 from "@angular/core";
30
29
  import * as i1 from "@ngx-translate/core";
@@ -39,8 +38,7 @@ export const SHARED_MATERIAL_TESTING_PAGES = [
39
38
  { label: 'Autocomplete field', page: '/testing/shared/autocomplete' },
40
39
  { label: 'Boolean field', page: '/testing/shared/boolean' },
41
40
  { label: 'Lat/Long field', page: '/testing/shared/latlong' },
42
- { label: 'Lat/Long field 2', page: '/testing/shared/latlong2' },
43
- { label: 'TEST field', page: '/testing/shared/test' },
41
+ { label: 'Custom field example', page: '/testing/shared/custom' },
44
42
  //{ label: 'Numeric pad component', page: '/testing/shared/numpad' },
45
43
  { label: 'Text form', page: '/testing/shared/text-form' },
46
44
  { label: 'Swipe component', page: '/testing/shared/swipe' },
@@ -97,13 +95,8 @@ const routes = [
97
95
  pathMatch: 'full',
98
96
  component: LatLongTestPage,
99
97
  },
100
- // {
101
- // path: 'latlong2',
102
- // pathMatch: 'full',
103
- // component: LatLongTest2Page,
104
- // },
105
98
  {
106
- path: 'test',
99
+ path: 'custom',
107
100
  pathMatch: 'full',
108
101
  component: FormFieldCustomControlExample,
109
102
  },
@@ -153,7 +146,6 @@ export class MaterialTestingModule {
153
146
  AutocompleteTestPage,
154
147
  BooleanTestPage,
155
148
  LatLongTestPage,
156
- //LatLongTest2Page,
157
149
  //NumpadTestPage,
158
150
  TextFormTestingPage,
159
151
  SwipeTestPage,
@@ -177,7 +169,6 @@ export class MaterialTestingModule {
177
169
  AutocompleteTestPage,
178
170
  BooleanTestPage,
179
171
  LatLongTestPage,
180
- //LatLongTest2Page,
181
172
  //NumpadTestPage,
182
173
  TextFormTestingPage,
183
174
  SwipeTestPage,
@@ -222,7 +213,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
222
213
  AutocompleteTestPage,
223
214
  BooleanTestPage,
224
215
  LatLongTestPage,
225
- //LatLongTest2Page,
226
216
  //NumpadTestPage,
227
217
  TextFormTestingPage,
228
218
  SwipeTestPage,
@@ -242,7 +232,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
242
232
  AutocompleteTestPage,
243
233
  BooleanTestPage,
244
234
  LatLongTestPage,
245
- //LatLongTest2Page,
246
235
  //NumpadTestPage,
247
236
  TextFormTestingPage,
248
237
  SwipeTestPage,
@@ -253,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
253
242
  ],
254
243
  }]
255
244
  }] });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwudGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC50ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFh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aUJBQWlCO1lBQ2pCLFdBQVc7WUFFWCxzQkFBc0IsRUFxQnRCLG9CQUFvQjtZQUNwQixZQUFZOzs0RkFtQkgscUJBQXFCO2tCQXJEakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3QkFDN0IsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixzQkFBc0I7cUJBQ3ZCO29CQUNELFlBQVksRUFBRTt3QkFDWixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNoYXJlZFRlc3RzUGFnZSwgVGVzdGluZ1BhZ2UgfSBmcm9tICcuLi90ZXN0aW5nL3Rlc3RzLnBhZ2UnO1xuaW1wb3J0IHsgU2hhcmVkTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVRpbWVUZXN0UGFnZSB9IGZyb20gJy4vZGF0ZXRpbWUvdGVzdGluZy9tYXQtZGF0ZS10aW1lLnRlc3QnO1xuaW1wb3J0IHsgRGF0ZVRlc3RQYWdlIH0gZnJvbSAnLi9kYXRldGltZS90ZXN0aW5nL21hdC1kYXRlLnRlc3QnO1xuaW1wb3J0IHsgU2hhcmVkUGlwZXNNb2R1bGUgfSBmcm9tICcuLi9waXBlcy9waXBlcy5tb2R1bGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVRlc3RQYWdlIH0gZnJvbSAnLi4vdGVzdGluZy9vYnNlcnZhYmxlLnRlc3QnO1xuaW1wb3J0IHsgRGF0ZVNob3J0VGVzdFBhZ2UgfSBmcm9tICcuL2RhdGV0aW1lL3Rlc3RpbmcvbWF0LWRhdGVzaG9ydC50ZXN0JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVRlc3RQYWdlIH0gZnJvbSAnLi9hdXRvY29tcGxldGUvdGVzdGluZy9hdXRvY29tcGxldGUudGVzdCc7XG5pbXBvcnQgeyBMYXRMb25nVGVzdFBhZ2UgfSBmcm9tICcuL2xhdGxvbmcvdGVzdGluZy9sYXRsb25nLnRlc3QnO1xuaW1wb3J0IHsgU3dpcGVUZXN0UGFnZSB9IGZyb20gJy4vc3dpcGUvdGVzdGluZy9zd2lwZS50ZXN0JztcbmltcG9ydCB7IENoaXBzVGVzdFBhZ2UgfSBmcm9tICcuL2NoaXBzL3Rlc3RpbmcvY2hpcHMudGVzdCc7XG5pbXBvcnQgeyBNYXRCYWRnZVRlc3RQYWdlIH0gZnJvbSAnLi9iYWRnZS9iYWRnZS50ZXN0JztcbmltcG9ydCB7IFNoYXJlZEJhZGdlTW9kdWxlIH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5tb2R1bGUnO1xuaW1wb3J0IHsgRHVyYXRpb25UZXN0UGFnZSB9IGZyb20gJy4vZHVyYXRpb24vdGVzdGluZy9tYXQtZHVyYXRpb24udGVzdCc7XG5pbXBvcnQgeyBNYXRDb21tb25UZXN0UGFnZSB9IGZyb20gJy4vdGVzdGluZy9jb21tb24udGVzdCc7XG5pbXBvcnQgeyBCb29sZWFuVGVzdFBhZ2UgfSBmcm9tICcuL2Jvb2xlYW4vdGVzdGluZy9ib29sZWFuLnRlc3QucGFnZSc7XG5pbXBvcnQgeyBUZXh0Rm9ybVRlc3RpbmdQYWdlIH0gZnJvbSAnLi90ZXh0L3Rlc3RpbmcvdGV4dC1mb3JtLnRlc3RpbmcnO1xuaW1wb3J0IHsgTWFza2l0b1Rlc3RQYWdlIH0gZnJvbSAnLi4vdGVzdGluZy9tYXNraXRvLnRlc3QnO1xuaW1wb3J0IHsgTWFza2l0b0RpcmVjdGl2ZSB9IGZyb20gJ0BtYXNraXRvL2FuZ3VsYXInO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ3VzdG9tQ29udHJvbEV4YW1wbGUgfSBmcm9tICcuL3Rlc3QvdGVzdC1jb21wb25lbnQnO1xuLy9pbXBvcnQgeyBMYXRMb25nVGVzdDJQYWdlIH0gZnJvbSAnLi9sYXRsb25nL3Rlc3RpbmcvbGF0bG9uZy50ZXN0Mic7XG5pbXBvcnQgeyBTaGFyZWRNYXRMYXRMb25nTW9kdWxlIH0gZnJvbSAnLi9sYXRsb25nL21hdGVyaWFsLmxhdGxvbmcubW9kdWxlJztcblxuZXhwb3J0IGNvbnN0IFNIQVJFRF9NQVRFUklBTF9URVNUSU5HX1BBR0VTOiBUZXN0aW5nUGFnZVtdID0gW1xuICB7IGxhYmVsOiAnU2hhcmVkIE1hdGVyaWFsIGNvbXBvbmVudHMnLCBkaXZpZGVyOiB0cnVlIH0sXG4gIHsgbGFiZWw6ICdDb21tb24gZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2NvbW1vbicgfSxcbiAgeyBsYWJlbDogJ0RhdGUvVGltZSBmaWVsZCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvZGF0ZXRpbWUnIH0sXG4gIHsgbGFiZWw6ICdEYXRlIGZpZWxkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9kYXRlJyB9LFxuICB7IGxhYmVsOiAnRGF0ZSBzaG9ydCBmaWVsZCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvZGF0ZXNob3J0JyB9LFxuICB7IGxhYmVsOiAnRHVyYXRpb24gZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2R1cmF0aW9uJyB9LFxuICB7IGxhYmVsOiAnQXV0b2NvbXBsZXRlIGZpZWxkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9hdXRvY29tcGxldGUnIH0sXG4gIHsgbGFiZWw6ICdCb29sZWFuIGZpZWxkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9ib29sZWFuJyB9LFxuICB7IGxhYmVsOiAnTGF0L0xvbmcgZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2xhdGxvbmcnIH0sXG4gIHsgbGFiZWw6ICdMYXQvTG9uZyBmaWVsZCAyJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9sYXRsb25nMicgfSxcbiAgeyBsYWJlbDogJ1RFU1QgZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL3Rlc3QnIH0sXG4gIC8veyBsYWJlbDogJ051bWVyaWMgcGFkIGNvbXBvbmVudCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvbnVtcGFkJyB9LFxuICB7IGxhYmVsOiAnVGV4dCBmb3JtJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC90ZXh0LWZvcm0nIH0sXG5cbiAgeyBsYWJlbDogJ1N3aXBlIGNvbXBvbmVudCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvc3dpcGUnIH0sXG4gIHsgbGFiZWw6ICdDaGlwcyBjb21wb25lbnQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2NoaXBzJyB9LFxuXG4gIHsgbGFiZWw6ICdTaGFyZWQgZGlyZWN0aXZlcycsIGRpdmlkZXI6IHRydWUgfSxcbiAgeyBsYWJlbDogJ0JhZGdlIGRpcmVjdGl2ZScsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvYmFkZ2UnIH0sXG5cbiAgeyBsYWJlbDogJ1NoYXJlZCB1dGlscycsIGRpdmlkZXI6IHRydWUgfSxcbiAgeyBsYWJlbDogJ09ic2VydmFibGUnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL29ic2VydmFibGUnIH0sXG4gIHsgbGFiZWw6ICdNYXNraXRvJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9tYXNraXRvJyB9LFxuXTtcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFNoYXJlZFRlc3RzUGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdjb21tb24nLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogTWF0Q29tbW9uVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZGF0ZXRpbWUnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogRGF0ZVRpbWVUZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdkYXRlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IERhdGVUZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdkYXRlc2hvcnQnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogRGF0ZVNob3J0VGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZHVyYXRpb24nLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogRHVyYXRpb25UZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdhdXRvY29tcGxldGUnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogQXV0b2NvbXBsZXRlVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnYm9vbGVhbicsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBCb29sZWFuVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnbGF0bG9uZycsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBMYXRMb25nVGVzdFBhZ2UsXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBwYXRoOiAnbGF0bG9uZzInLFxuICAvLyAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAvLyAgIGNvbXBvbmVudDogTGF0TG9uZ1Rlc3QyUGFnZSxcbiAgLy8gfSxcbiAge1xuICAgIHBhdGg6ICd0ZXN0JyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IEZvcm1GaWVsZEN1c3RvbUNvbnRyb2xFeGFtcGxlLFxuICB9LFxuICAvLyB7XG4gIC8vICAgcGF0aDogJ251bXBhZCcsXG4gIC8vICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gIC8vICAgY29tcG9uZW50OiBOdW1wYWRUZXN0UGFnZVxuICAvLyB9LFxuICB7XG4gICAgcGF0aDogJ3RleHQtZm9ybScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBUZXh0Rm9ybVRlc3RpbmdQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3N3aXBlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFN3aXBlVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnY2hpcHMnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogQ2hpcHNUZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdiYWRnZScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBNYXRCYWRnZVRlc3RQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ29ic2VydmFibGUnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogT2JzZXJ2YWJsZVRlc3RQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ21hc2tpdG8nLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogTWFza2l0b1Rlc3RQYWdlLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNoYXJlZE1hdGVyaWFsTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxuICAgIFNoYXJlZFBpcGVzTW9kdWxlLFxuICAgIFNoYXJlZEJhZGdlTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hc2tpdG9EaXJlY3RpdmUsXG4gICAgU2hhcmVkTWF0TGF0TG9uZ01vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTWF0Q29tbW9uVGVzdFBhZ2UsXG4gICAgRGF0ZVRpbWVUZXN0UGFnZSxcbiAgICBEYXRlVGVzdFBhZ2UsXG4gICAgRGF0ZVNob3J0VGVzdFBhZ2UsXG4gICAgRHVyYXRpb25UZXN0UGFnZSxcbiAgICBBdXRvY29tcGxldGVUZXN0UGFnZSxcbiAgICBCb29sZWFuVGVzdFBhZ2UsXG4gICAgTGF0TG9uZ1Rlc3RQYWdlLFxuICAgIC8vTGF0TG9uZ1Rlc3QyUGFnZSxcbiAgICAvL051bXBhZFRlc3RQYWdlLFxuICAgIFRleHRGb3JtVGVzdGluZ1BhZ2UsXG4gICAgU3dpcGVUZXN0UGFnZSxcbiAgICBDaGlwc1Rlc3RQYWdlLFxuICAgIE1hdEJhZGdlVGVzdFBhZ2UsXG4gICAgT2JzZXJ2YWJsZVRlc3RQYWdlLFxuICAgIE1hc2tpdG9UZXN0UGFnZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNoYXJlZE1hdGVyaWFsTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBNYXRDb21tb25UZXN0UGFnZSxcbiAgICBEYXRlVGltZVRlc3RQYWdlLFxuICAgIERhdGVUZXN0UGFnZSxcbiAgICBEYXRlU2hvcnRUZXN0UGFnZSxcbiAgICBEdXJhdGlvblRlc3RQYWdlLFxuICAgIEF1dG9jb21wbGV0ZVRlc3RQYWdlLFxuICAgIEJvb2xlYW5UZXN0UGFnZSxcbiAgICBMYXRMb25nVGVzdFBhZ2UsXG4gICAgLy9MYXRMb25nVGVzdDJQYWdlLFxuICAgIC8vTnVtcGFkVGVzdFBhZ2UsXG4gICAgVGV4dEZvcm1UZXN0aW5nUGFnZSxcbiAgICBTd2lwZVRlc3RQYWdlLFxuICAgIENoaXBzVGVzdFBhZ2UsXG4gICAgTWF0QmFkZ2VUZXN0UGFnZSxcbiAgICBPYnNlcnZhYmxlVGVzdFBhZ2UsXG4gICAgTWFza2l0b1Rlc3RQYWdlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRlc3RpbmdNb2R1bGUge31cbiJdfQ==
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwudGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC50ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFh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b0I7d0JBQ3BCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUM3QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLHNCQUFzQjtxQkFDdkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTaGFyZWRUZXN0c1BhZ2UsIFRlc3RpbmdQYWdlIH0gZnJvbSAnLi4vdGVzdGluZy90ZXN0cy5wYWdlJztcbmltcG9ydCB7IFNoYXJlZE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERhdGVUaW1lVGVzdFBhZ2UgfSBmcm9tICcuL2RhdGV0aW1lL3Rlc3RpbmcvbWF0LWRhdGUtdGltZS50ZXN0JztcbmltcG9ydCB7IERhdGVUZXN0UGFnZSB9IGZyb20gJy4vZGF0ZXRpbWUvdGVzdGluZy9tYXQtZGF0ZS50ZXN0JztcbmltcG9ydCB7IFNoYXJlZFBpcGVzTW9kdWxlIH0gZnJvbSAnLi4vcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7IE9ic2VydmFibGVUZXN0UGFnZSB9IGZyb20gJy4uL3Rlc3Rpbmcvb2JzZXJ2YWJsZS50ZXN0JztcbmltcG9ydCB7IERhdGVTaG9ydFRlc3RQYWdlIH0gZnJvbSAnLi9kYXRldGltZS90ZXN0aW5nL21hdC1kYXRlc2hvcnQudGVzdCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVUZXN0UGFnZSB9IGZyb20gJy4vYXV0b2NvbXBsZXRlL3Rlc3RpbmcvYXV0b2NvbXBsZXRlLnRlc3QnO1xuaW1wb3J0IHsgTGF0TG9uZ1Rlc3RQYWdlIH0gZnJvbSAnLi9sYXRsb25nL3Rlc3RpbmcvbGF0bG9uZy50ZXN0JztcbmltcG9ydCB7IFN3aXBlVGVzdFBhZ2UgfSBmcm9tICcuL3N3aXBlL3Rlc3Rpbmcvc3dpcGUudGVzdCc7XG5pbXBvcnQgeyBDaGlwc1Rlc3RQYWdlIH0gZnJvbSAnLi9jaGlwcy90ZXN0aW5nL2NoaXBzLnRlc3QnO1xuaW1wb3J0IHsgTWF0QmFkZ2VUZXN0UGFnZSB9IGZyb20gJy4vYmFkZ2UvYmFkZ2UudGVzdCc7XG5pbXBvcnQgeyBTaGFyZWRCYWRnZU1vZHVsZSB9IGZyb20gJy4vYmFkZ2UvYmFkZ2UubW9kdWxlJztcbmltcG9ydCB7IER1cmF0aW9uVGVzdFBhZ2UgfSBmcm9tICcuL2R1cmF0aW9uL3Rlc3RpbmcvbWF0LWR1cmF0aW9uLnRlc3QnO1xuaW1wb3J0IHsgTWF0Q29tbW9uVGVzdFBhZ2UgfSBmcm9tICcuL3Rlc3RpbmcvY29tbW9uLnRlc3QnO1xuaW1wb3J0IHsgQm9vbGVhblRlc3RQYWdlIH0gZnJvbSAnLi9ib29sZWFuL3Rlc3RpbmcvYm9vbGVhbi50ZXN0LnBhZ2UnO1xuaW1wb3J0IHsgVGV4dEZvcm1UZXN0aW5nUGFnZSB9IGZyb20gJy4vdGV4dC90ZXN0aW5nL3RleHQtZm9ybS50ZXN0aW5nJztcbmltcG9ydCB7IE1hc2tpdG9UZXN0UGFnZSB9IGZyb20gJy4uL3Rlc3RpbmcvbWFza2l0by50ZXN0JztcbmltcG9ydCB7IE1hc2tpdG9EaXJlY3RpdmUgfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7IEZvcm1GaWVsZEN1c3RvbUNvbnRyb2xFeGFtcGxlIH0gZnJvbSAnLi90ZXN0L3Rlc3QtY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlZE1hdExhdExvbmdNb2R1bGUgfSBmcm9tICcuL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5tb2R1bGUnO1xuXG5leHBvcnQgY29uc3QgU0hBUkVEX01BVEVSSUFMX1RFU1RJTkdfUEFHRVM6IFRlc3RpbmdQYWdlW10gPSBbXG4gIHsgbGFiZWw6ICdTaGFyZWQgTWF0ZXJpYWwgY29tcG9uZW50cycsIGRpdmlkZXI6IHRydWUgfSxcbiAgeyBsYWJlbDogJ0NvbW1vbiBmaWVsZCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvY29tbW9uJyB9LFxuICB7IGxhYmVsOiAnRGF0ZS9UaW1lIGZpZWxkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9kYXRldGltZScgfSxcbiAgeyBsYWJlbDogJ0RhdGUgZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2RhdGUnIH0sXG4gIHsgbGFiZWw6ICdEYXRlIHNob3J0IGZpZWxkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9kYXRlc2hvcnQnIH0sXG4gIHsgbGFiZWw6ICdEdXJhdGlvbiBmaWVsZCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvZHVyYXRpb24nIH0sXG4gIHsgbGFiZWw6ICdBdXRvY29tcGxldGUgZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2F1dG9jb21wbGV0ZScgfSxcbiAgeyBsYWJlbDogJ0Jvb2xlYW4gZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2Jvb2xlYW4nIH0sXG4gIHsgbGFiZWw6ICdMYXQvTG9uZyBmaWVsZCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvbGF0bG9uZycgfSxcbiAgeyBsYWJlbDogJ0N1c3RvbSBmaWVsZCBleGFtcGxlJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9jdXN0b20nIH0sXG4gIC8veyBsYWJlbDogJ051bWVyaWMgcGFkIGNvbXBvbmVudCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvbnVtcGFkJyB9LFxuICB7IGxhYmVsOiAnVGV4dCBmb3JtJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC90ZXh0LWZvcm0nIH0sXG5cbiAgeyBsYWJlbDogJ1N3aXBlIGNvbXBvbmVudCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvc3dpcGUnIH0sXG4gIHsgbGFiZWw6ICdDaGlwcyBjb21wb25lbnQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2NoaXBzJyB9LFxuXG4gIHsgbGFiZWw6ICdTaGFyZWQgZGlyZWN0aXZlcycsIGRpdmlkZXI6IHRydWUgfSxcbiAgeyBsYWJlbDogJ0JhZGdlIGRpcmVjdGl2ZScsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvYmFkZ2UnIH0sXG5cbiAgeyBsYWJlbDogJ1NoYXJlZCB1dGlscycsIGRpdmlkZXI6IHRydWUgfSxcbiAgeyBsYWJlbDogJ09ic2VydmFibGUnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL29ic2VydmFibGUnIH0sXG4gIHsgbGFiZWw6ICdNYXNraXRvJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9tYXNraXRvJyB9LFxuXTtcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFNoYXJlZFRlc3RzUGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdjb21tb24nLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogTWF0Q29tbW9uVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZGF0ZXRpbWUnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogRGF0ZVRpbWVUZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdkYXRlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IERhdGVUZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdkYXRlc2hvcnQnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogRGF0ZVNob3J0VGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZHVyYXRpb24nLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogRHVyYXRpb25UZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdhdXRvY29tcGxldGUnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogQXV0b2NvbXBsZXRlVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnYm9vbGVhbicsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBCb29sZWFuVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnbGF0bG9uZycsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBMYXRMb25nVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnY3VzdG9tJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IEZvcm1GaWVsZEN1c3RvbUNvbnRyb2xFeGFtcGxlLFxuICB9LFxuICAvLyB7XG4gIC8vICAgcGF0aDogJ251bXBhZCcsXG4gIC8vICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gIC8vICAgY29tcG9uZW50OiBOdW1wYWRUZXN0UGFnZVxuICAvLyB9LFxuICB7XG4gICAgcGF0aDogJ3RleHQtZm9ybScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBUZXh0Rm9ybVRlc3RpbmdQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3N3aXBlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFN3aXBlVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnY2hpcHMnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogQ2hpcHNUZXN0UGFnZSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdiYWRnZScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBNYXRCYWRnZVRlc3RQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ29ic2VydmFibGUnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogT2JzZXJ2YWJsZVRlc3RQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ21hc2tpdG8nLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogTWFza2l0b1Rlc3RQYWdlLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNoYXJlZE1hdGVyaWFsTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxuICAgIFNoYXJlZFBpcGVzTW9kdWxlLFxuICAgIFNoYXJlZEJhZGdlTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hc2tpdG9EaXJlY3RpdmUsXG4gICAgU2hhcmVkTWF0TGF0TG9uZ01vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTWF0Q29tbW9uVGVzdFBhZ2UsXG4gICAgRGF0ZVRpbWVUZXN0UGFnZSxcbiAgICBEYXRlVGVzdFBhZ2UsXG4gICAgRGF0ZVNob3J0VGVzdFBhZ2UsXG4gICAgRHVyYXRpb25UZXN0UGFnZSxcbiAgICBBdXRvY29tcGxldGVUZXN0UGFnZSxcbiAgICBCb29sZWFuVGVzdFBhZ2UsXG4gICAgTGF0TG9uZ1Rlc3RQYWdlLFxuICAgIC8vTnVtcGFkVGVzdFBhZ2UsXG4gICAgVGV4dEZvcm1UZXN0aW5nUGFnZSxcbiAgICBTd2lwZVRlc3RQYWdlLFxuICAgIENoaXBzVGVzdFBhZ2UsXG4gICAgTWF0QmFkZ2VUZXN0UGFnZSxcbiAgICBPYnNlcnZhYmxlVGVzdFBhZ2UsXG4gICAgTWFza2l0b1Rlc3RQYWdlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2hhcmVkTWF0ZXJpYWxNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIE1hdENvbW1vblRlc3RQYWdlLFxuICAgIERhdGVUaW1lVGVzdFBhZ2UsXG4gICAgRGF0ZVRlc3RQYWdlLFxuICAgIERhdGVTaG9ydFRlc3RQYWdlLFxuICAgIER1cmF0aW9uVGVzdFBhZ2UsXG4gICAgQXV0b2NvbXBsZXRlVGVzdFBhZ2UsXG4gICAgQm9vbGVhblRlc3RQYWdlLFxuICAgIExhdExvbmdUZXN0UGFnZSxcbiAgICAvL051bXBhZFRlc3RQYWdlLFxuICAgIFRleHRGb3JtVGVzdGluZ1BhZ2UsXG4gICAgU3dpcGVUZXN0UGFnZSxcbiAgICBDaGlwc1Rlc3RQYWdlLFxuICAgIE1hdEJhZGdlVGVzdFBhZ2UsXG4gICAgT2JzZXJ2YWJsZVRlc3RQYWdlLFxuICAgIE1hc2tpdG9UZXN0UGFnZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUZXN0aW5nTW9kdWxlIHt9XG4iXX0=