@sumaris-net/ngx-components 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"exports":[{"from":"./src/app/vendor"}],"metadata":{"ENVIRONMENT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":31},"arguments":["ENV"]},"Environment":{"__symbolic":"class","members":{}},"DATE_ISO_PATTERN":"YYYY-MM-DDTHH:mm:ss.SSSZ","DEFAULT_PLACEHOLDER_CHAR":"_","PUBKEY_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":2,"character":29,"module":"./src/app/shared/constants"},"SPACE_PLACEHOLDER_CHAR":" ","KEYBOARD_HIDE_DELAY_MS":250,"scrollFactory":{"__symbolic":"function","parameters":["overlay"],"value":{"__symbolic":"error","message":"Lambda not supported","line":41,"character":9,"module":"./src/app/shared/shared.module"}},"SharedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":44,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":46,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":47,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":48,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":49,"character":4},{"__symbolic":"reference","module":"ngx-color-picker","name":"ColorPickerModule","line":50,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":51,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":52,"character":4},{"__symbolic":"reference","module":"ngx-markdown","name":"MarkdownModule","line":53,"character":4},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedHotkeysModule"}],"declarations":[{"__symbolic":"reference","name":"ToolbarComponent"},{"__symbolic":"reference","name":"ModalToolbarComponent"},{"__symbolic":"reference","name":"AppFormField"},{"__symbolic":"reference","name":"AppLoadingSpinner"},{"__symbolic":"reference","name":"AppHelpModal"}],"exports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":69,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":70,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":71,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":72,"character":4},{"__symbolic":"reference","module":"ngx-color-picker","name":"ColorPickerModule","line":73,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":74,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":75,"character":4},{"__symbolic":"reference","module":"ngx-markdown","name":"MarkdownModule","line":76,"character":4},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedHotkeysModule"},{"__symbolic":"reference","name":"ToolbarComponent"},{"__symbolic":"reference","name":"ModalToolbarComponent"},{"__symbolic":"reference","name":"AppFormField"},{"__symbolic":"reference","name":"AppLoadingSpinner"},{"__symbolic":"reference","name":"AppHelpModal"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ionic/angular","name":"IonicRouteStrategy","line":7,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"shouldReuseRoute":[{"__symbolic":"method"}]}},"SharedRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":45,"character":4}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/router","name":"RouteReuseStrategy","line":48,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"}},{"provide":{"__symbolic":"reference","name":"ComponentDirtyGuard"},"useClass":{"__symbolic":"reference","name":"ComponentDirtyGuard"}}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"SharedMaterialModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":87,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":44,"character":2},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":45,"character":2},{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSortModule","line":46,"character":2},{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorModule","line":47,"character":2},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":48,"character":2},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":49,"character":2},{"__symbolic":"reference","module":"@angular/cdk/table","name":"CdkTableModule","line":50,"character":2},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":51,"character":2},{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionModule","line":52,"character":2},{"__symbolic":"reference","module":"@angular/material/toolbar","name":"MatToolbarModule","line":53,"character":2},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":54,"character":2},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":55,"character":2},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":56,"character":2},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":57,"character":2},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":58,"character":2},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":59,"character":2},{"__symbolic":"reference","module":"@angular/material/tabs","name":"MatTabsModule","line":60,"character":2},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":61,"character":2},{"__symbolic":"reference","module":"@angular/material/stepper","name":"MatStepperModule","line":62,"character":2},{"__symbolic":"reference","module":"@angular/material/button-toggle","name":"MatButtonToggleModule","line":63,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":64,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":65,"character":2},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":66,"character":2},{"__symbolic":"reference","module":"@angular/material/badge","name":"MatBadgeModule","line":67,"character":2},{"__symbolic":"reference","module":"@angular/material/slide-toggle","name":"MatSlideToggleModule","line":68,"character":2},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":69,"character":2},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":70,"character":2},{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"ScrollingModule","line":71,"character":2},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":72,"character":2},{"__symbolic":"reference","module":"@angular/material/divider","name":"MatDividerModule","line":73,"character":2},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":74,"character":2},{"__symbolic":"reference","name":"SharedMatAutocompleteModule"},{"__symbolic":"reference","name":"SharedMatLatLongModule"},{"__symbolic":"reference","name":"SharedMatDateTimeModule"},{"__symbolic":"reference","name":"SharedMatDurationModule"},{"__symbolic":"reference","name":"SharedMatBooleanModule"},{"__symbolic":"reference","name":"SharedMatNumpadModule"},{"__symbolic":"reference","name":"SharedMatSwipeModule"},{"__symbolic":"reference","name":"MaterialChipsModule"},{"__symbolic":"reference","name":"ɵc"}],"exports":[{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":44,"character":2},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":45,"character":2},{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSortModule","line":46,"character":2},{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorModule","line":47,"character":2},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":48,"character":2},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":49,"character":2},{"__symbolic":"reference","module":"@angular/cdk/table","name":"CdkTableModule","line":50,"character":2},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":51,"character":2},{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionModule","line":52,"character":2},{"__symbolic":"reference","module":"@angular/material/toolbar","name":"MatToolbarModule","line":53,"character":2},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":54,"character":2},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":55,"character":2},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":56,"character":2},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":57,"character":2},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":58,"character":2},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":59,"character":2},{"__symbolic":"reference","module":"@angular/material/tabs","name":"MatTabsModule","line":60,"character":2},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":61,"character":2},{"__symbolic":"reference","module":"@angular/material/stepper","name":"MatStepperModule","line":62,"character":2},{"__symbolic":"reference","module":"@angular/material/button-toggle","name":"MatButtonToggleModule","line":63,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":64,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":65,"character":2},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":66,"character":2},{"__symbolic":"reference","module":"@angular/material/badge","name":"MatBadgeModule","line":67,"character":2},{"__symbolic":"reference","module":"@angular/material/slide-toggle","name":"MatSlideToggleModule","line":68,"character":2},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":69,"character":2},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":70,"character":2},{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"ScrollingModule","line":71,"character":2},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":72,"character":2},{"__symbolic":"reference","module":"@angular/material/divider","name":"MatDividerModule","line":73,"character":2},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":74,"character":2},{"__symbolic":"reference","name":"SharedMatAutocompleteModule"},{"__symbolic":"reference","name":"SharedMatLatLongModule"},{"__symbolic":"reference","name":"SharedMatDateTimeModule"},{"__symbolic":"reference","name":"SharedMatDurationModule"},{"__symbolic":"reference","name":"SharedMatBooleanModule"},{"__symbolic":"reference","name":"SharedMatNumpadModule"},{"__symbolic":"reference","name":"SharedMatSwipeModule"},{"__symbolic":"reference","name":"MaterialChipsModule"},{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{}},"SharedMatBooleanModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":25,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":26,"character":4},{"__symbolic":"reference","module":"ngx-material-timepicker","name":"NgxMaterialTimepickerModule","line":27,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":28,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"MatBooleanField"}],"declarations":[{"__symbolic":"reference","name":"MatBooleanField"}]}]}],"members":{}},"MatBooleanField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":33,"character":1},"arguments":[{"selector":"mat-boolean-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":24,"character":11},"useExisting":{"__symbolic":"reference","name":"MatBooleanField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":40,"character":19},"member":"OnPush"},"template":"<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n","styles":[":host{width:100%}.mat-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-form-field.mat-boolean-field-button{margin-top:-4px}.mat-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis:calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"style":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"buttonsColCount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3},"arguments":["class"]}]}],"yesLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"noLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"showButtonIcons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"yesIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"noIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"onPressEnter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3},"arguments":["keyup.enter"]}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"yesButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":98,"character":3},"arguments":["yesButton"]}]}],"noButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":99,"character":3},"arguments":["noButton"]}]}],"checkboxButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":100,"character":3},"arguments":["checkboxButton"]}]}],"fakeInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":101,"character":3},"arguments":["fakeInput"]}]}],"suffixDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":102,"character":3},"arguments":["suffix",{"static":false}]}]}],"suffixInjections":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":103,"character":3},"arguments":["injectMatSuffix"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":109,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":106,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":107,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":108,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":109,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"_onFocusFakeInput":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"onRadioValueChanged":[{"__symbolic":"method"}],"onCheckboxValueChanged":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SharedMatAutocompleteModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"ScrollingModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":22,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":31,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":32,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":35,"character":4},{"__symbolic":"reference","name":"MatAutocompleteField"}],"declarations":[{"__symbolic":"reference","name":"MatAutocompleteField"}]}]}],"members":{}},"MatAutocompleteField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":114,"character":1},"arguments":[{"selector":"mat-autocomplete-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":108,"character":11},"useExisting":{"__symbolic":"reference","name":"MatAutocompleteField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":120,"character":19},"member":"OnPush"},"template":"<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- readonly -->\n <ng-container>\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n","styles":[":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}.fact-scroll-viewport{height:100%;width:100%}.fact-item{height:54px;display:flex}.fact-item .fact-date{min-width:100px;text-align:center;font-size:24pt}.fact-item .fact-date,.fact-item .fact-text{height:100%;align-items:center;justify-content:center;display:flex}.fact-item .fact-text{border-radius:10px}cdk-virtual-scroll-viewport{border:1px solid #000}cdk-virtual-scroll-viewport li{list-style:none}"]}]}],"members":{"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":155,"character":3}}]}],"logPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":156,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":157,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":158,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":159,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":160,"character":3}}]}],"suggestFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":161,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":162,"character":3}}]}],"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":163,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":164,"character":3}}]}],"debounceTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":165,"character":3}}]}],"displayWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":166,"character":3}}]}],"displayAttributes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":167,"character":3}}]}],"displayColumnSizes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":168,"character":3}}]}],"displayColumnNames":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":169,"character":3}}]}],"highlightAccent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":170,"character":3}}]}],"showAllOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":171,"character":3}}]}],"showPanelOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":172,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":173,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":174,"character":3}}]}],"i18nPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":175,"character":3}}]}],"noResultMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":176,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":177,"character":3},"arguments":["class"]}]}],"panelWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":178,"character":3}}]}],"matAutocompletePosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":179,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":180,"character":3}}]}],"itemSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":182,"character":3}}]}],"fetchMoreThreshold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":183,"character":3}}]}],"suggestLengthThreshold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":184,"character":3}}]}],"showLoadingSpinner":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":185,"character":3}}]}],"animationsDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":187,"character":3},"arguments":["@.disabled"]}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":190,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":202,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":211,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":220,"character":3}}]}],"onClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":246,"character":3},"arguments":["click"]}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":247,"character":3},"arguments":["blur"]}]}],"onFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":248,"character":3},"arguments":["focus"]}]}],"onDropButtonClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":250,"character":3},"arguments":["dropButtonClick"]}]}],"onKeydownEscape":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":251,"character":3},"arguments":["keydown.escape"]}]}],"onKeyupEnter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":252,"character":3},"arguments":["keyup.enter"]}]}],"matSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":254,"character":3},"arguments":["matSelect"]}]}],"matInputText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":255,"character":3},"arguments":["matInputText"]}]}],"matAutocomplete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":256,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocomplete","line":256,"character":13}]}]}],"matAutocompleteTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":257,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteTrigger","line":257,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":273,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":272,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":273,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"reloadItems":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"filterInputTextFocusInEvent":[{"__symbolic":"method"}],"filterInputTextBlurEvent":[{"__symbolic":"method"}],"filterMatSelectFocusEvent":[{"__symbolic":"method"}],"filterMatSelectBlurEvent":[{"__symbolic":"method"}],"toggleSearch":[{"__symbolic":"method"}],"clearValue":[{"__symbolic":"method"}],"_initAutocompleteInfiniteScroll":[{"__symbolic":"method"}],"_initMatSelectInfiniteScroll":[{"__symbolic":"method"}],"closePanel":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"fetchMore":[{"__symbolic":"method"}],"updateImplicitValue":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"getAutocompletePanel":[{"__symbolic":"method"}],"getMatSelectPanel":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}]}},"MatAutocompleteFieldConfig":{"__symbolic":"interface"},"MatAutocompleteConfigHolder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":58,"character":32,"module":"./src/app/shared/material/autocomplete/material.autocomplete"}]}],"add":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"MatAutocompleteFieldAddOptions":{"__symbolic":"interface"},"MaterialChipsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":21,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":31,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":32,"character":4},"member":"forChild"}}],"declarations":[{"__symbolic":"reference","name":"MatChipsField"}],"exports":[{"__symbolic":"reference","name":"MatChipsField"}]}]}],"members":{}},"MatChipsField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"mat-chips-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":20,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"MatChipsField"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":25,"character":19},"member":"OnPush"},"template":"<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\" class=\"material-chips\" [class.mat-form-field-disabled]=\"disabled\">\n <div matPrefix>\n <ng-content select=\"[matPrefix]\"></ng-content>\n </div>\n <mat-label>{{placeholder}}</mat-label>\n <mat-chip-list #chipList>\n <mat-chip\n *ngFor=\"let item of value\"\n [selectable]=\"false\"\n [removable]=\"!disabled\"\n (removed)=\"remove(item)\">\n {{displayWith(item)}}\n <mat-icon matChipRemove *ngIf=\"!disabled\">cancel</mat-icon>\n </mat-chip>\n\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autoCombo\"\n [formControl]=\"inputControl\"\n [appAutofocus]=\"appAutofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"disabled\"\n [hidden]=\"disabled\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (blur)=\"blurred.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (keyup.arrowdown)=\"!autoCombo.showPanel && onDropButtonClick.emit($event)\"\n [matChipInputFor]=\"chipList\"\n >\n </mat-chip-list>\n\n <!-- autocomplete -->\n <mat-autocomplete #autoCombo=\"matAutocomplete\"\n (optionSelected)=\"add($event)\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"class\">\n <ng-container *ngIf=\"(filteredItems$ | async) as items\">\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"isLast\" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: itemCount} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <!-- No item option -->\n <mat-option *ngIf=\"!items.length\" class=\"ion-no-padding\" [disabled]=\"true\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row>\n <ion-col *ngFor=\"let attr of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"getPropertyByPath(item, attr) | highlight: { search: inputControl.value, withAccent: highlightAccent } \"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n <ng-content matSuffix select=\"[matSuffix]\"></ng-content>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n </mat-form-field>\n\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n","styles":[":host{position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}"]}]}],"members":{"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"logPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"suggestFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"debounceTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"displayWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"displayAttributes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"displayColumnSizes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"displayColumnNames":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"highlightAccent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"showAllOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"showPanelOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"appAutofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"i18nPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"noResultMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"clicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":58,"character":3}}]}],"blurred":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":59,"character":3}}]}],"focused":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":60,"character":3}}]}],"matInputText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":62,"character":3},"arguments":["matInputText"]}]}],"autocompleteTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":63,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteTrigger","line":63,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":79,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":78,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":79,"character":38}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"reloadItems":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"filterInputTextFocusEvent":[{"__symbolic":"method"}],"clearValue":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"fadeInAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":5,"character":4},"arguments":["fadeInAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":8,"character":8},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":11,"character":12},"arguments":[{"opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":14,"character":12},"arguments":[".3s",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":14,"character":27},"arguments":[{"opacity":1}]}]}]]}]]},"fadeInOutAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":20,"character":4},"arguments":["fadeInOutAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":23,"character":8},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":26,"character":12},"arguments":[{"opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":29,"character":12},"arguments":[".3s",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":29,"character":27},"arguments":[{"opacity":1}]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":33,"character":8},"arguments":[":leave",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":35,"character":12},"arguments":[".5s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":35,"character":39},"arguments":[{"opacity":0}]}]}]]}]]},"slideInOutAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":43,"character":4},"arguments":["slideInOutAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":46,"character":8},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":46,"character":19},"arguments":[{"position":"relative","top":0,"left":0,"right":0,"bottom":0,"opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":57,"character":8},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":60,"character":12},"arguments":[{"left":"400%","opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":70,"character":12},"arguments":[".3s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":70,"character":39},"arguments":[{"left":0,"opacity":0.8}]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":80,"character":8},"arguments":[":leave",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":82,"character":12},"arguments":[".5s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":82,"character":39},"arguments":[{"left":"400%","opacity":0}]}]}]]}]]},"slideUpDownAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":94,"character":2},"arguments":["slideUpDownAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":97,"character":4},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":97,"character":15},"arguments":[{"transform":"translateY(0)","opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":103,"character":4},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":106,"character":6},"arguments":[{"transform":"translateY(-400%)","opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":112,"character":6},"arguments":[".3s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":112,"character":33},"arguments":[{"transform":"translateY(0)","opacity":1}]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":119,"character":4},"arguments":[":leave",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":121,"character":6},"arguments":[".5s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":121,"character":33},"arguments":[{"transform":"translateY(-100%)","opacity":0}]}]}]]}]]},"MatPaginatorI18n":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorIntl","line":6,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":24,"character":33}]}],"translateLabels":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MatStepperI18n":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/material/stepper","name":"MatStepperIntl","line":5,"character":36},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":7,"character":33}]}],"translateLabels":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"SharedMatDateTimeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":19,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":21,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":23,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MatMomentDateModule","line":31,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":32,"character":4},{"__symbolic":"reference","module":"ngx-material-timepicker","name":"NgxMaterialTimepickerModule","line":33,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":34,"character":4},"member":"forChild"}},{"__symbolic":"reference","name":"SharedDirectivesModule"}],"exports":[{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":38,"character":4},{"__symbolic":"reference","name":"MatDate"},{"__symbolic":"reference","name":"MatDateTime"},{"__symbolic":"reference","name":"MatDateShort"}],"declarations":[{"__symbolic":"reference","name":"MatDate"},{"__symbolic":"reference","name":"MatDateTime"},{"__symbolic":"reference","name":"MatDateShort"}]}]}],"members":{}},"MatDateShort":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":29,"character":1},"arguments":[{"selector":"mat-date-short-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":19,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDateShort"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":36,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n","styles":[":host{display:inline-block;width:100%;position:relative}:host [no-padding]{--ion-grid-column-padding:0}:host [nowrap]{flex-wrap:nowrap}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md,mat-form-field ion-datetime{padding:0!important}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"datePicker1":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":88,"character":3},"arguments":["datePicker1"]}]}],"datePicker2":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":89,"character":3},"arguments":["datePicker2"]}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":91,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":103,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":104,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":98,"character":14},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment/moment","name":"Moment","line":99,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":100,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":101,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":102,"character":16},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":103,"character":34},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":104,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onDatePickerChange":[{"__symbolic":"method"}],"updatePattern":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"openDatePickerIfMobile":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"closeDatePicker":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"waitKeyboardHide":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatDateTime":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":60,"character":1},"arguments":[{"selector":"mat-date-time-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":40,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDateTime"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":67,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n","styles":[":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md{padding:0!important}ion-row.no-wrap{flex-wrap:nowrap}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]}]}],"members":{"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"datePicker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":133,"character":3},"arguments":["datePicker"]}]}],"timePicker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":134,"character":3},"arguments":["timePicker"]}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":136,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":145,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":139,"character":22},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":140,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":141,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":142,"character":25},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":143,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":144,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":145,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"updatePattern":[{"__symbolic":"method"}],"onDatePickerChange":[{"__symbolic":"method"}],"onTimePickerChange":[{"__symbolic":"method"}],"openDatePickerIfMobile":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"openTimePickerIfMobile":[{"__symbolic":"method"}],"openTimePicker":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"emitChange":[{"__symbolic":"method"}],"hideKeyboard":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatDate":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":49,"character":1},"arguments":[{"selector":"mat-date-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":40,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDate"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":56,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n </mat-form-field>\n\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n\n","styles":[":host{display:inline-block;width:100%;position:relative}:host [no-padding]{--ion-grid-column-padding:0}:host [nowrap]{flex-wrap:nowrap}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md,mat-form-field ion-datetime{padding:0!important}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"datePicker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":101,"character":3},"arguments":["datePicker"]}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":103,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":115,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":116,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":110,"character":14},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":111,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":112,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":113,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":114,"character":16},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":115,"character":34},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":116,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onDatePickerChange":[{"__symbolic":"method"}],"updatePattern":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"openDatePickerIfMobile":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"waitKeyboardHide":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatLatLongField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":35,"character":1},"arguments":[{"selector":"mat-latlong-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":41,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"MatLatLongField"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":46,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formatFn(value, formatFnOptions)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <ion-col class=\"text ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #inputElement\n type=\"text\"\n autocomplete=\"off\"\n [textMask]=\"textMaskConfig\"\n [formControl]=\"textFormControl\"\n [placeholder]=\"inputPlaceholder|translate\"\n (keypress)=\"onKeypress($event)\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (focus)=\"_onFocus($event)\"\n (blur)=\"_onBlur($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n\n <div *ngIf=\"!showSignControl\" matSuffix #injectMatSuffix></div>\n\n <!--<div matSuffix *ngIf=\"!showSignControl\"><ng-content select=\"[matSuffix]\"></ng-content></div>-->\n\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n\n <!-- errors -->\n <ng-container *ngIf=\"formControl.touched\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('latitude')\" translate>ERROR.FIELD_NOT_VALID_LATITUDE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('longitude')\" translate>ERROR.FIELD_NOT_VALID_LONGITUDE</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </ng-container>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n </mat-form-field>\n </ion-col>\n\n <!-- sign -->\n <ion-col class=\"sign ion-no-padding\" [ngSwitch]=\"type\" *ngIf=\"showSignControl\">\n\n <!-- sign on latitude -->\n <mat-form-field *ngSwitchCase=\"'latitude'\"\n floatLabel=\"never\"\n [class.mat-form-field-invalid]=\"formControl.touched && signFormControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.LAT_LONG.LAT_SIGN_PLACEHOLDER</mat-label>\n <mat-select [formControl]=\"signFormControl\"\n [tabindex]=\"tabindex+1\">\n <mat-option [value]=\"1\">{{'COMMON.LAT_LONG.LAT_SIGN_N'|translate}}</mat-option>\n <mat-option [value]=\"-1\" >{{'COMMON.LAT_LONG.LAT_SIGN_S'|translate}}</mat-option>\n </mat-select>\n\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- sign on longitude -->\n <mat-form-field floatLabel=\"never\"\n *ngSwitchCase=\"'longitude'\"\n [class.mat-form-field-invalid]=\"formControl.touched && signFormControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.LAT_LONG.LONG_SIGN_PLACEHOLDER</mat-label>\n <mat-select [formControl]=\"signFormControl\"\n [tabindex]=\"tabindex+2\">\n <mat-option [value]=\"1\" translate>{{'COMMON.LAT_LONG.LONG_SIGN_E'|translate}}</mat-option>\n <mat-option [value]=\"-1\" translate>{{'COMMON.LAT_LONG.LONG_SIGN_W'|translate}}</mat-option>\n </mat-select>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n","styles":[":host{display:inline-block;width:100%;min-width:140px;position:relative;--ion-grid-column-padding:0}mat-form-field .datetime-md{padding:0!important}ion-row{flex-wrap:nowrap}ion-row ion-col.text{min-width:80px}ion-row ion-col.sign{min-width:60px;max-width:70px}mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}"]}]}],"members":{"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"pattern":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3},"arguments":["latLongPattern"]}]}],"defaultSign":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"maxDecimals":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":103,"character":3}}]}],"onFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":106,"character":3}}]}],"inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":109,"character":3},"arguments":["inputElement"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":116,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":112,"character":22},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":113,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":114,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":115,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":116,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"_onFocus":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"moveCaretToSeparator":[{"__symbolic":"method"}],"onKeypress":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SharedMatLatLongModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":25,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":26,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":27,"character":4},"member":"forChild"}},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":28,"character":4}],"exports":[{"__symbolic":"reference","name":"MatLatLongField"}],"declarations":[{"__symbolic":"reference","name":"MatLatLongField"}]}]}],"members":{}},"SharedMatDurationModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":22,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":23,"character":4},{"__symbolic":"reference","module":"ngx-material-timepicker","name":"NgxMaterialTimepickerModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MatMomentDateModule","line":26,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":27,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"MatDuration"}],"declarations":[{"__symbolic":"reference","name":"MatDuration"}]}]}],"members":{}},"MatDuration":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":47,"character":1},"arguments":[{"selector":"mat-duration-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":36,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDuration"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":54,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{ formControl.value|duration }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput type=\"text\"\n autocomplete=\"off\"\n [formControl]=\"textControl\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.DURATION_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n\n <!-- errors -->\n <mat-error *ngIf=\"!formControl.hasError('required') && textControl.hasError('pattern')\" translate>ERROR.FIELD_NOT_VALID_PATTERN</mat-error>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors.min }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors.max }}</mat-error>\n\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n</ng-template>\n\n","styles":[":host{display:inline-block;min-width:140px;position:relative;--ion-grid-column-padding:0}:host,mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"maxDecimals":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":101,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":113,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":108,"character":14},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":109,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":110,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":111,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":112,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":113,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"moveCaretToSeparator":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SharedMatNumpadModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":17,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":18,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"MatNumpadComponent"},{"__symbolic":"reference","name":"NumpadDirective"},{"__symbolic":"reference","name":"MatNumpadContainerComponent"},{"__symbolic":"reference","name":"MatNumpadContent"},{"__symbolic":"reference","name":"AppendToInputDirective"}],"declarations":[{"__symbolic":"reference","name":"MatNumpadContainerComponent"},{"__symbolic":"reference","name":"MatNumpadComponent"},{"__symbolic":"reference","name":"MatNumpadContent"},{"__symbolic":"reference","name":"NumpadDirective"},{"__symbolic":"reference","name":"AppendToInputDirective"}]}]}],"members":{}},"NumpadDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":6,"character":1},"arguments":[{"selector":"[matNumpad]","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":10,"character":15},"useExisting":{"__symbolic":"reference","name":"NumpadDirective"},"multi":true}],"host":{"[disabled]":"disabled","(click)":"onClick($event)","(change)":"updateValue($event.target.value)","(blur)":"onTouched()","$quoted$":["[disabled]","(click)","(change)","(blur)"]}}]}],"members":{"keymap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"numpad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["matNumpad"]}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"decimal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"disableClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":62,"character":34}]}],"updateValue":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":81,"character":3},"arguments":["click",["$event"]]}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"registerNumpad":[{"__symbolic":"method"}],"applyingKey":[{"__symbolic":"method"}],"updateInputValue":[{"__symbolic":"method"}]}},"AppendToInputDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[appendNumpadToInput]"}]}],"members":{"inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":5},"arguments":["appendNumpadToInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":17,"character":39,"context":{"typeName":"HTMLElement"},"module":"./src/app/shared/material/numpad/numpad.append-to-input.directive"}]},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":18,"character":34}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"changePosition":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":64,"character":5},"arguments":["window:scroll"]}]}],"append":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}],"defineElementYByDirection":[{"__symbolic":"method"}],"defineElementXByDirection":[{"__symbolic":"method"}]}},"AnimationState":{"ENTER":"enter","ENTER_INPUT":"enter-input","LEAVE":"leave"},"MatNumpadContainerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"mat-numpad-container","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":14,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":17,"character":4},"arguments":["numpadBackdrop",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":18,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":18,"character":17},"arguments":[{"opacity":0,"background":"transparent"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":19,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":19,"character":34},"arguments":[{"opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":20,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":20,"character":34},"arguments":[{"opacity":0}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":21,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":"* => ","right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":22,"character":8},"arguments":[{"opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":23,"character":8},"arguments":["0.4s cubic-bezier(0.25, 0.8, 0.25, 1)"]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":25,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},"right":" => "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":26,"character":8},"arguments":[{"opacity":1}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":27,"character":8},"arguments":["0.2s cubic-bezier(0.25, 0.8, 0.25, 1)"]}]]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":32,"character":4},"arguments":["numpadFadeIn",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":33,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":33,"character":17},"arguments":[{"opacity":1,"transform":"scale(1)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":34,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":34,"character":34},"arguments":[{"opacity":1,"transform":"scale(1)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":35,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":35,"character":34},"arguments":[{"opacity":0,"transform":"scale(0.9)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":37,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":"* => ","right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":38,"character":8},"arguments":[{"opacity":0,"transform":"scale(0.6)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":39,"character":8},"arguments":["0.2s ease-out"]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":41,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},"right":" => "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":42,"character":8},"arguments":["0.2s ease-out"]}]]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":46,"character":4},"arguments":["numpadPanelExpansion",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":47,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":47,"character":17},"arguments":[{"opacity":1,"transform":"scaleY(0) translateY(-50%)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":48,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":48,"character":34},"arguments":[{"opacity":1,"transform":"scale(1) translateY(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":49,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":49,"character":34},"arguments":[{"opacity":0,"transform":"scale(1) translateY(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":52,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":"* => ","right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":53,"character":8},"arguments":["0.2s ease-out"]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":55,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},"right":" => "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":56,"character":8},"arguments":["0.2s ease-out"]}]]}]]}],"template":"<div class=\"numpad-backdrop-overlay\"\n *ngIf=\"!noBackdrop\"\n (click)=\"overlayClick($event)\"\n [@numpadBackdrop]=\"backdropState\">\n</div>\n<div class=\"numpad-overlay\">\n <mat-numpad-content [appendToInput]=\"appendToInput\"\n [inputElement]=\"inputElement\" cdkTrapFocus>\n <div class=\"numpad {{position}}\"\n [class.panel]=\"appendToInput\"\n [@numpadPanelExpansion]=\"panelState\"\n (@numpadPanelExpansion.done)=\"animationDone($event)\"\n [@numpadFadeIn]=\"modalState\"\n (@numpadFadeIn.done)=\"animationDone($event)\">\n <ion-grid>\n <ion-row *ngFor=\"let row of filteredKeymap | async\">\n <ion-col size=\"{{12/columnCount}}\" *ngFor=\"let item of row\">\n <ion-button mat-button expand=\"block\"\n *ngIf=\"item\"\n [color]=\"item.color || 'secondary'\"\n (click)=\"onButtonClick($event, item)\">\n <ion-icon *ngIf=\"item.icon; else label\" slot=\"icon-only\" [name]=\"item.icon\"></ion-icon>\n <ng-template #label>\n <ion-label>{{ (item.label || item.key) | translate }}</ion-label>\n </ng-template>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </mat-numpad-content>\n</div>\n","styles":[":host{display:inline-block;max-width:300px;--ion-grid-padding:0;--ion-grid-column-padding:0;--background-color:#fff;--padding:8px}.numpad-backdrop-overlay{position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(0,0,0,.32);z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent}.numpad-overlay{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;pointer-events:none}.numpad{width:300px;border-radius:4px;outline:none;position:static;z-index:1000;pointer-events:auto;background-color:var(--background-color,transparent);padding:var(--padding,5px);box-shadow:0 14px 45px rgba(0,0,0,.25),0 10px 18px rgba(0,0,0,.22)}.numpad.panel{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":84,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onButtonClick":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":131,"character":3},"arguments":["window:keydown",["$event"]]}]}],"overlayClick":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"animationDone":[{"__symbolic":"method"}],"defineFilteredKeymap":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatNumpadContent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"mat-numpad-content","template":"<div [appendNumpadToInput]=\"inputElement\" *ngIf=\"appendToInput; else modal\">\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<ng-template #modal>\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n"}]}],"members":{"appendToInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":7,"character":5}}]}],"inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":5}}]}]}},"MatNumpadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"mat-numpad","template":""}]}],"members":{"keymap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"decimal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"appendToInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"disableAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"noBackdrop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"keypress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":24,"character":3}}]}],"closed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":25,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"registerInput":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}},"SharedMatSwipeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":16,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":17,"character":4},"member":"forChild"}},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":20,"character":4}],"exports":[{"__symbolic":"reference","name":"MatSwipeField"}],"declarations":[{"__symbolic":"reference","name":"MatSwipeField"}]}]}],"members":{}},"MatSwipeField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"mat-swipe-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":13,"character":11},"useExisting":{"__symbolic":"reference","name":"MatSwipeField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"template":"<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n","styles":[":host{display:inline-block;width:100%;position:relative}input.hidden{display:none}.slides-container .swiper-slide{font-size:16px!important}.slides-container.hidden{visibility:hidden;height:0!important}.button-next,.button-prev{position:absolute;top:calc(50% - 20px);z-index:10}.button-prev{left:0;right:auto}.button-next{left:auto;right:0}"]}]}],"members":{"logPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"compareWithFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"displayWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"displayAttributes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"appAutofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["class"]}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"onClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":112,"character":3},"arguments":["click"]}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":114,"character":3},"arguments":["blur"]}]}],"onFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":116,"character":3},"arguments":["focus"]}]}],"fakeInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":118,"character":3},"arguments":["fakeInput"]}]}],"slides":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":120,"character":3},"arguments":["slides",{"static":true}]}]}],"prevButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":122,"character":3},"arguments":["prevButton"]}]}],"nextButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":123,"character":3},"arguments":["nextButton"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":139,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":138,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":139,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_onFocusFakeInput":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"clearValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"previous":[{"__symbolic":"method"}],"next":[{"__symbolic":"method"}],"reachStart":[{"__symbolic":"method"}],"reachEnd":[{"__symbolic":"method"}],"slidesLoaded":[{"__symbolic":"method"}],"slideChanged":[{"__symbolic":"method"}],"loadItems":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"updateSlides":[{"__symbolic":"method"}],"slideTo":[{"__symbolic":"method"}],"updateButtons":[{"__symbolic":"method"}],"getSlides":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}]}},"selectInputContent":{"__symbolic":"function"},"selectInputRange":{"__symbolic":"function"},"getCaretPosition":{"__symbolic":"function"},"moveInputCaretToSeparator":{"__symbolic":"function"},"filterNumberInput":{"__symbolic":"function"},"focusInput":{"__symbolic":"function"},"setTabIndex":{"__symbolic":"function"},"InputElement":{"__symbolic":"interface"},"isInputElement":{"__symbolic":"function","parameters":["object"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵe"},"arguments":[{"__symbolic":"reference","name":"object"}]},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"in","left":"value","right":{"__symbolic":"reference","name":"object"}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"in","left":"tabindex","right":{"__symbolic":"reference","name":"object"}},"right":{"__symbolic":"binop","operator":"in","left":"tabIndex","right":{"__symbolic":"reference","name":"object"}}}}}},"asInputElement":{"__symbolic":"function"},"tabindexComparator":{"__symbolic":"function"},"CanGainFocusOptions":{"__symbolic":"interface"},"GetFocusableInputOptions":{"__symbolic":"interface"},"canHaveFocus":{"__symbolic":"function"},"getFocusableInputElements":{"__symbolic":"function"},"focusNextInput":{"__symbolic":"function"},"focusPreviousInput":{"__symbolic":"function"},"AppFormField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"app-form-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":31,"character":15},"useExisting":{"__symbolic":"reference","name":"AppFormField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":36,"character":19},"member":"OnPush"},"template":"<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{max:\n definition.maximumNumberDecimals} }}</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\"\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of definition.values\" [value]=\"item.key || item\">{{ (item.value || item) | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n","styles":[":host{display:inline-block;position:relative}"]}]}],"members":{"definition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["class"]}]}],"onKeyupEnter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":3},"arguments":["keyup.enter"]}]}],"matInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":79,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":85,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":82,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":83,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":84,"character":24},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":85,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"filterAlphanumericalInput":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"getDisplayValueFn":[{"__symbolic":"method"}],"getColorContrast":[{"__symbolic":"method"}],"computeNumberInputStep":[{"__symbolic":"method"}],"computeValuesFromToken":[{"__symbolic":"method"}],"checkAndResolveFormControl":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}]}},"AppLoadingSpinner":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-loading-spinner","template":"\n <ion-spinner *ngIf=\"loading; else content\" [color]=\"color\" [name]=\"name\"></ion-spinner>\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n "}]}],"members":{"loading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}]}},"DisplayFn":{"__symbolic":"interface"},"CompareWithFn":{"__symbolic":"interface"},"FormFieldType":{"__symbolic":"interface"},"FormFieldDefinition":{"__symbolic":"interface"},"FormFieldDefinitionMap":{"__symbolic":"interface"},"FormFieldValuesHolder":{"__symbolic":"class","members":{"getAsBoolean":[{"__symbolic":"method"}],"getAsInt":[{"__symbolic":"method"}],"getAsNumbers":[{"__symbolic":"method"}],"getAsStrings":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"ToolbarToken":{"__symbolic":"class","members":{"doBackClick":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}]}},"ToolbarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"app-toolbar","providers":[{"provide":{"__symbolic":"reference","name":"ToolbarToken"},"useExisting":{"__symbolic":"reference","name":"ToolbarComponent"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"<ion-header [class]=\"class\">\n <ion-toolbar [color]=\"color\">\n\n <ion-buttons slot=\"start\">\n\n <!-- back button -->\n <ion-button class=\"back-button\"\n *ngIf=\"canGoBack\"\n (click)=\"doBackClick($event)\"\n routerDirection=\"back\" >\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n\n <!-- show menu button -->\n <ion-menu-toggle [hidden]=\"canGoBack || !canShowMenu\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\" collapse=\"true\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- search bar -->\n <ion-searchbar #searchbar animated\n type=\"search\"\n *ngIf=\"hasSearch\"\n [class.cdk-visually-hidden]=\"!showSearchBar\"\n show-cancel-button=\"always\"\n (ionChange)=\"onSearch.emit($event)\"\n (ionCancel)=\"toggleSearchBar()\">\n </ion-searchbar>\n\n <!-- search button -->\n <ion-button (click)=\"toggleSearchBar()\"\n *ngIf=\"hasSearch && !showSearchBar\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n\n <!-- close button -->\n <ion-button *ngIf=\"hasClose\"\n (tap)=\"tapClose($event)\"\n class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n\n <!-- validate button -->\n <ion-button *ngIf=\"hasValidate\"\n (tap)=\"tapValidate($event)\"\n class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"save\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n\n <!-- progress bar -->\n <mat-progress-bar [color]=\"color\" [mode]=\"progressBarMode$ | async\">\n </mat-progress-bar>\n</ion-header>\n","styles":[""]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"backHref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"defaultBackHref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"hasValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"hasClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"hasSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"canGoBack":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"canShowMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"onValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":80,"character":3}}]}],"onClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":81,"character":3}}]}],"onValidateAndClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":82,"character":3}}]}],"onBackClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":3}}]}],"onSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":84,"character":3}}]}],"searchbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":89,"character":3},"arguments":["searchbar",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":95,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":92,"character":20},{"__symbolic":"reference","module":"@ionic/angular","name":"IonRouterOutlet","line":93,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":94,"character":16},{"__symbolic":"reference","name":"ProgressBarService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"toggleSearchBar":[{"__symbolic":"method"}],"doBackClick":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}],"tapClose":[{"__symbolic":"method"}],"tapValidate":[{"__symbolic":"method"}]}},"ModalToolbarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-modal-toolbar","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<ion-header>\n <ion-toolbar [color]=\"color\">\n <ion-buttons slot=\"start\">\n <ion-button visible-xs visible-sm visible-mobile\n (click)=\"cancel.emit()\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\">\n\n <ng-content select=\"ion-button[slot=end]\"></ng-content>\n\n <ion-spinner *ngIf=\"showSpinner\"></ion-spinner>\n\n <ion-button visible-xs visible-sm visible-mobile\n *ngIf=\"canValidate\"\n (click)=\"validate.emit($event)\">\n <ion-icon slot=\"icon-only\" *ngIf=\"validateIcon?.icon\" [name]=\"validateIcon.icon\"></ion-icon>\n <mat-icon slot=\"icon-only\" *ngIf=\"validateIcon?.matIcon\" >{{validateIcon.matIcon}}</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n","styles":[""]}]}],"members":{"modalName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"showSpinner":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"canValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"validateIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"cancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3}}]}],"validate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Hotkeys"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ProgressInterceptor":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ProgressBarService"}]}],"intercept":[{"__symbolic":"method"}]}},"ShowToastOptions":{"__symbolic":"interface"},"Toasts":{"__symbolic":"class","members":{},"statics":{"counter":0,"stackSize":0}},"AppHelpModalOptions":{"__symbolic":"interface"},"AppHelpModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-help-modal","template":"<app-modal-toolbar color=\"light\"\n [title]=\"title\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\">\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent\"\n [data]=\"markdownContent\"\n (ready)=\"markAsLoaded()\"\n emoji>\n </markdown>\n\n <markdown *ngIf=\"docUrl\"\n [src]=\"docUrl + '.md'\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji></markdown>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n\n\n"}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"markdownContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"docUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"showError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":29,"character":26},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":30,"character":26},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":33,"character":27},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":34,"character":20}]}],"close":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"onLoadError":[{"__symbolic":"method"}]}},"CanLeave":{"__symbolic":"interface"},"ComponentDirtyGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":19,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":20,"character":25}]}],"canDeactivate":[{"__symbolic":"method"}]}},"SharedDirectivesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"AutofocusDirective"}],"exports":[{"__symbolic":"reference","name":"AutofocusDirective"}]}]}],"members":{}},"AutofocusDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":11,"character":1},"arguments":[{"selector":"[autofocus], input[appAutofocus]","inputs":["shouldFocusElement: appAutofocus","timerDelay: autofocusDelay"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":16},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":30,"character":14},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":31,"character":36}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"startFocusWorkflow":[{"__symbolic":"method"}],"stopFocusWorkflow":[{"__symbolic":"method"}]}},"SharedPipesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":23,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":24,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":25,"character":4}],"declarations":[{"__symbolic":"reference","name":"PropertyGetPipe"},{"__symbolic":"reference","name":"DateFormatPipe"},{"__symbolic":"reference","name":"DateDiffDurationPipe"},{"__symbolic":"reference","name":"DurationPipe"},{"__symbolic":"reference","name":"DateFromNowPipe"},{"__symbolic":"reference","name":"LatLongFormatPipe"},{"__symbolic":"reference","name":"LatitudeFormatPipe"},{"__symbolic":"reference","name":"LongitudeFormatPipe"},{"__symbolic":"reference","name":"HighlightPipe"},{"__symbolic":"reference","name":"NumberFormatPipe"},{"__symbolic":"reference","name":"FileSizePipe"},{"__symbolic":"reference","name":"MathAbsPipe"},{"__symbolic":"reference","name":"OddPipe"},{"__symbolic":"reference","name":"EvenPipe"},{"__symbolic":"reference","name":"NotEmptyArrayPipe"},{"__symbolic":"reference","name":"EmptyArrayPipe"},{"__symbolic":"reference","name":"ArrayLengthPipe"},{"__symbolic":"reference","name":"ArrayFirstPipe"},{"__symbolic":"reference","name":"ArrayPluckPipe"},{"__symbolic":"reference","name":"ArrayIncludesPipe"},{"__symbolic":"reference","name":"ArrayFilterPipe"},{"__symbolic":"reference","name":"MapGetPipe"},{"__symbolic":"reference","name":"MapKeysPipe"},{"__symbolic":"reference","name":"MapValuesPipe"},{"__symbolic":"reference","name":"IsNilOrBlankPipe"},{"__symbolic":"reference","name":"IsNotNilOrBlankPipe"},{"__symbolic":"reference","name":"ToStringPipe"},{"__symbolic":"reference","name":"StrLengthPipe"},{"__symbolic":"reference","name":"TranslateContextPipe"},{"__symbolic":"reference","name":"TranslatablePipe"},{"__symbolic":"reference","name":"NgInitDirective"},{"__symbolic":"reference","name":"FormErrorTranslatePipe"}],"exports":[{"__symbolic":"reference","name":"PropertyGetPipe"},{"__symbolic":"reference","name":"DateFormatPipe"},{"__symbolic":"reference","name":"DateFromNowPipe"},{"__symbolic":"reference","name":"DateDiffDurationPipe"},{"__symbolic":"reference","name":"DurationPipe"},{"__symbolic":"reference","name":"LatLongFormatPipe"},{"__symbolic":"reference","name":"LatitudeFormatPipe"},{"__symbolic":"reference","name":"LongitudeFormatPipe"},{"__symbolic":"reference","name":"HighlightPipe"},{"__symbolic":"reference","name":"NumberFormatPipe"},{"__symbolic":"reference","name":"FileSizePipe"},{"__symbolic":"reference","name":"MathAbsPipe"},{"__symbolic":"reference","name":"OddPipe"},{"__symbolic":"reference","name":"EvenPipe"},{"__symbolic":"reference","name":"NotEmptyArrayPipe"},{"__symbolic":"reference","name":"EmptyArrayPipe"},{"__symbolic":"reference","name":"ArrayLengthPipe"},{"__symbolic":"reference","name":"ArrayFirstPipe"},{"__symbolic":"reference","name":"ArrayPluckPipe"},{"__symbolic":"reference","name":"MapGetPipe"},{"__symbolic":"reference","name":"MapKeysPipe"},{"__symbolic":"reference","name":"MapValuesPipe"},{"__symbolic":"reference","name":"IsNilOrBlankPipe"},{"__symbolic":"reference","name":"IsNotNilOrBlankPipe"},{"__symbolic":"reference","name":"ToStringPipe"},{"__symbolic":"reference","name":"StrLengthPipe"},{"__symbolic":"reference","name":"ArrayIncludesPipe"},{"__symbolic":"reference","name":"ArrayFilterPipe"},{"__symbolic":"reference","name":"TranslateContextPipe"},{"__symbolic":"reference","name":"TranslatablePipe"},{"__symbolic":"reference","name":"NgInitDirective"},{"__symbolic":"reference","name":"FormErrorTranslatePipe"}]}]}],"members":{}},"DateFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":6,"character":1},"arguments":[{"name":"dateFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MomentDateAdapter","line":17,"character":27},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":18,"character":25}]}],"transform":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DateFromNowPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"dateFromNow"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MomentDateAdapter","line":12,"character":25}]}],"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DateDiffDurationPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":8,"character":1},"arguments":[{"name":"dateDiffDuration"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":17,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":18,"character":23}]}],"transform":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LatLongFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"latLongFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LatitudeFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":19,"character":1},"arguments":[{"name":"latitudeFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"LongitudeFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":27,"character":1},"arguments":[{"name":"longitudeFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":30,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"HighlightPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"highlight"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"NumberFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"numberFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PropertyGetPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"propertyGet"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DurationPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"duration"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":13,"character":23}]}],"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"FileSizePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":33,"character":1},"arguments":[{"name":"fileSize"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"MathAbsPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"mathAbs"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EvenPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":17,"character":1},"arguments":[{"name":"even"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"OddPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":28,"character":1},"arguments":[{"name":"odd"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"NotEmptyArrayPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isNotEmptyArray"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"EmptyArrayPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":17,"character":1},"arguments":[{"name":"isEmptyArray"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayLengthPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":31,"character":1},"arguments":[{"name":"isArrayLength"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayFirstPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":52,"character":1},"arguments":[{"name":"arrayFirst"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayPluckPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":62,"character":1},"arguments":[{"name":"arrayPluck"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayIncludesPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":74,"character":1},"arguments":[{"name":"arrayIncludes"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayFilterPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":85,"character":1},"arguments":[{"name":"arrayFilter"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"MapGetPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"mapGet"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MapKeysPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":16,"character":1},"arguments":[{"name":"mapKeys"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MapValuesPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":28,"character":1},"arguments":[{"name":"mapValues"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsNotNilOrBlankPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isNotNilOrBlank"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsNilOrBlankPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":13,"character":1},"arguments":[{"name":"isNilOrBlank"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":23,"character":1},"arguments":[{"name":"toString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":26,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"StrLengthPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":34,"character":1},"arguments":[{"name":"strLength"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":37,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TranslateContextPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"translateContext"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TranslateContextService"}]}],"transform":[{"__symbolic":"method"}]}},"TranslatablePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":24,"character":1},"arguments":[{"name":"translatable"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":27,"character":1}}],"members":{"transform":[{"__symbolic":"method"}]}},"NgInitDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[ngInit]"}]}],"members":{"ngInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":7,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"FormErrorTranslatePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":6,"character":1},"arguments":[{"name":"translateFormError","pure":false}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FormErrorTranslator"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":20,"character":18}]}],"transform":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_updateValue":[{"__symbolic":"method"}],"_dispose":[{"__symbolic":"method"}]}},"AudioType":{"__symbolic":"interface"},"Sound":{"__symbolic":"interface"},"AudioProvider":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":34,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":35,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":32,"character":24},{"__symbolic":"reference","module":"@ionic-native/native-audio/ngx","name":"NativeAudio","line":33,"character":37},{"__symbolic":"reference","module":"@ionic-native/vibration/ngx","name":"Vibration","line":34,"character":35},{"__symbolic":"reference","module":"@ionic-native/audio-management/ngx","name":"AudioManagement","line":35,"character":41}]}],"playBeepConfirm":[{"__symbolic":"method"}],"playBeepError":[{"__symbolic":"method"}],"playStartupSound":[{"__symbolic":"method"}],"preload":[{"__symbolic":"method"}],"play":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}],"vibrate":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"readAudioMode":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"FileService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root","deps":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":13,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":14,"character":4}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":35,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":31,"character":22},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":34,"character":18},null]}],"getImages":[{"__symbolic":"method"}],"getImage":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IStartableService":{"__symbolic":"interface"},"StartableService":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":25,"character":5}}]],"parameters":[{"__symbolic":"error","message":"Expression form not supported","line":25,"character":37,"module":"./src/app/shared/services/startable-service.class"}]}],"start":[{"__symbolic":"method"}],"stop":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}]}},"Page":{"__symbolic":"interface"},"FetchMoreFn":{"__symbolic":"interface"},"LoadResult":{"__symbolic":"interface"},"SuggestFn":{"__symbolic":"interface"},"SuggestService":{"__symbolic":"interface"},"FilterFn":{"__symbolic":"interface"},"FilterFnFactory":{"__symbolic":"interface"},"EntityServiceLoadOptions":{"__symbolic":"interface"},"IEntityService":{"__symbolic":"interface"},"EntitiesServiceWatchOptions":{"__symbolic":"interface"},"IEntitiesService":{"__symbolic":"interface"},"LoadResultByPageFn":{"__symbolic":"interface"},"IEntityFullService":{"__symbolic":"interface"},"mergeLoadResult":{"__symbolic":"function","parameters":["res1","res2"],"value":{"data":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res1"},"member":"data"},"right":[]},"member":"concat"},"arguments":[{"__symbolic":"spread","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res2"},"member":"data"}}]},"total":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res1"},"member":"total"},"right":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res1"},"member":"data"},"member":"length"}},"right":0},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res2"},"member":"total"},"right":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res2"},"member":"data"},"member":"length"}},"right":0}}}},"EntitiesService":{"__symbolic":"class","arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":101,"character":1}}],"members":{"ngOnDestroy":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}]}},"InMemoryEntitiesServiceOptions":{"__symbolic":"interface"},"InMemoryEntitiesService":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"EntitiesService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":58,"character":24,"module":"./src/app/shared/services/memory-entity-service.class"},{"__symbolic":"error","message":"Expression form not supported","line":59,"character":26,"module":"./src/app/shared/services/memory-entity-service.class"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":60,"character":45,"context":{"typeName":"T"},"module":"./src/app/shared/services/memory-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":60,"character":48,"context":{"typeName":"F"},"module":"./src/app/shared/services/memory-entity-service.class"}]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"sort":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}],"addSortByReplacement":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"markAsSaving":[{"__symbolic":"method"}],"markAsSaved":[{"__symbolic":"method"}]}},"ProgressMode":{"__symbolic":"interface"},"ProgressBarService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"list":[{"__symbolic":"method"}],"increase":[{"__symbolic":"method"}],"decrease":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TranslateContextService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":11,"character":25}]}],"get":[{"__symbolic":"method"}],"instant":[{"__symbolic":"method"}],"contextualKeys":[{"__symbolic":"method"}],"contextualKey":[{"__symbolic":"method"}],"findFirstValid":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CallableWithProgressionFn":{"__symbolic":"interface"},"CallableWithProgressionOptions":{"__symbolic":"interface"},"JobUtils":{"__symbolic":"class","members":{},"statics":{"defers":{"__symbolic":"function","parameters":["runnableList","opts"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"runnableList"},"member":"map"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":14,"character":28,"module":"./src/app/shared/services/job.utils"}]}},"defer":{"__symbolic":"function","parameters":["runnable","opts"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"defer","line":18,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":18,"character":37,"module":"./src/app/shared/services/job.utils"}]}}}},"APP_FORM_ERROR_I18N_KEYS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":44},"arguments":["appFormErrorKeys"]},"IFormControlPathTranslator":{"__symbolic":"interface"},"FormErrorTranslatorOptions":{"__symbolic":"interface"},"FormErrorTranslator":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_FORM_ERROR_I18N_KEYS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":28,"character":23},{"__symbolic":"reference","name":"ObjectMap"}]}],"translateErrors":[{"__symbolic":"method"}],"translateControlPath":[{"__symbolic":"method"}],"translateError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"KeyType":{"__symbolic":"interface"},"KeyValueType":{"__symbolic":"interface"},"KeysEnum":{"__symbolic":"interface"},"ObjectMap":{"__symbolic":"interface"},"ObjectMapEntry":{"__symbolic":"interface"},"PropertiesMap":{"__symbolic":"interface"},"Property":{"__symbolic":"interface"},"PropertiesArray":{"__symbolic":"interface"},"IconRef":{"__symbolic":"interface"},"DATE_UNIX_TIMESTAMP":"X","DATE_UNIX_MS_TIMESTAMP":"x","DateUtils":{"__symbolic":"class","members":{},"statics":{"min":{"__symbolic":"function","parameters":["date1","date2"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"date1"},"right":{"__symbolic":"reference","name":"date2"}},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"date1"},"member":"isSameOrBefore"},"arguments":[{"__symbolic":"reference","name":"date2"}]}},"thenExpression":{"__symbolic":"reference","name":"date1"},"elseExpression":{"__symbolic":"reference","name":"date2"}}},"max":{"__symbolic":"function","parameters":["date1","date2"],"value":{"__symbolic":"if","condition":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"date1"}},"thenExpression":{"__symbolic":"reference","name":"date2"},"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"date2"}},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"date1"},"member":"isSameOrAfter"},"arguments":[{"__symbolic":"reference","name":"date2"}]}},"thenExpression":{"__symbolic":"reference","name":"date1"},"elseExpression":{"__symbolic":"reference","name":"date2"}}}},"equals":{"__symbolic":"function","parameters":["date1","date2"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"DateUtils"},"member":"isSame"},"arguments":[{"__symbolic":"reference","name":"date1"},{"__symbolic":"reference","name":"date2"}]}}}},"toDateISOString":{"__symbolic":"function"},"fromDateISOString":{"__symbolic":"function"},"fromUnixTimestamp":{"__symbolic":"function","parameters":["timeInSec"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"moment"},"arguments":[{"__symbolic":"reference","name":"timeInSec"},"X"]}},"fromUnixMsTimestamp":{"__symbolic":"function","parameters":["timeInMs"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"moment"},"arguments":[{"__symbolic":"reference","name":"timeInMs"},"x"]}},"toDuration":{"__symbolic":"function"},"isNil":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}}},"isNilOrBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":8,"character":47,"module":"./src/app/shared/functions"},"right":"string"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"trim"}},"right":""}}}},"isNotNil":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}}},"isNotNilOrBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"error","message":"Expression form not supported","line":14,"character":47,"module":"./src/app/shared/functions"},"right":"string"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"trim"}},"right":""}}}},"isNotNilOrNaN":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"error","message":"Expression form not supported","line":17,"character":47,"module":"./src/app/shared/functions"},"right":"number"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}}}},"isNilOrNaN":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":20,"character":47,"module":"./src/app/shared/functions"},"right":"number"},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}}},"isNotEmptyArray":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":">","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"length"},"right":0}}},"firstArrayValue":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotEmptyArray"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"thenExpression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":0},"elseExpression":{"__symbolic":"reference","name":"undefined"}}},"isEmptyArray":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"length"}}}},"isNotNilString":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":32,"character":46,"module":"./src/app/shared/functions"},"right":"string"}},"right":false}},"notNilOrDefault":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"reference","name":"obj"},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"arraySize":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotEmptyArray"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"length"}},"right":0}},"arrayGroupBy":{"__symbolic":"function"},"arrayDistinct":{"__symbolic":"function"},"nullIfUndefined":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"thenExpression":null,"elseExpression":{"__symbolic":"reference","name":"obj"}}},"trimEmptyToNull":{"__symbolic":"function"},"toBoolean":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":"false"},"thenExpression":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"obj"}}},"elseExpression":false},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toNumber":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"pre","operator":"+","operand":{"__symbolic":"reference","name":"obj"}},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toFloat":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseFloat"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toInt":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseInt"},"arguments":[{"__symbolic":"reference","name":"obj"},0]},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toNotNil":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"reference","name":"obj"},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"removeDuplicatesFromArray":{"__symbolic":"function"},"startsWithUpperCase":{"__symbolic":"function","parameters":["input","search"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"input"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"input"},"member":"toUpperCase"}},"member":"startsWith"},"arguments":[{"__symbolic":"reference","name":"search"}]}}},"matchUpperCase":{"__symbolic":"function","parameters":["input","regexp"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"input"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"input"},"member":"toUpperCase"}},"member":"match"},"arguments":[{"__symbolic":"reference","name":"regexp"}]}}}}},"noTrailingSlash":{"__symbolic":"function"},"replaceAll":{"__symbolic":"function"},"removeEnd":{"__symbolic":"function","parameters":["value","end"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"value"},"member":"endsWith"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"end"},"right":""}]},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"value"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"value"},"member":"length"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"end"},"member":"length"}}]},"elseExpression":{"__symbolic":"reference","name":"value"}}},"changeCaseToUnderscore":{"__symbolic":"function"},"removeDiacritics":{"__symbolic":"function","parameters":["text"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"text"},"member":"normalize"},"arguments":["NFD"]},"member":"replace"},"arguments":[{"__symbolic":"error","message":"Expression form not supported","line":131,"character":39,"module":"./src/app/shared/functions"},""]}},"suggestFromArray":{"__symbolic":"function"},"suggestFromStringArray":{"__symbolic":"function"},"joinPropertiesPath":{"__symbolic":"function"},"joinProperties":{"__symbolic":"function"},"propertyPathComparator":{"__symbolic":"function","parameters":["path"],"value":{"__symbolic":"error","message":"Lambda not supported","line":227,"character":9,"module":"./src/app/shared/functions"}},"propertyComparator":{"__symbolic":"function","parameters":["key","defaultValue"],"value":{"__symbolic":"error","message":"Lambda not supported","line":235,"character":9,"module":"./src/app/shared/functions"}},"propertiesPathComparator":{"__symbolic":"function"},"sort":{"__symbolic":"function"},"isInt":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"value"}]},"right":{"__symbolic":"error","message":"Reference to a local symbol","line":264,"character":6,"context":{"name":"INTEGER_REGEXP"},"module":"./src/app/shared/functions"}}},"isNumber":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"value"}]},"right":{"__symbolic":"error","message":"Reference to a local symbol","line":268,"character":6,"context":{"name":"NUMBER_REGEXP"},"module":"./src/app/shared/functions"}}},"isNumberRange":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"value"}]},"right":{"__symbolic":"error","message":"Reference to a local symbol","line":273,"character":6,"context":{"name":"NUMBER_RANGE_REGEXP"},"module":"./src/app/shared/functions"}}},"getPropertyByPath":{"__symbolic":"function"},"getProperty":{"__symbolic":"function"},"getPropertyByPathAsString":{"__symbolic":"function"},"sleep":{"__symbolic":"function"},"round":{"__symbolic":"function"},"equalsOrNil":{"__symbolic":"function","parameters":["value1","value2"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"value1"},"right":{"__symbolic":"reference","name":"value2"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNil"},"arguments":[{"__symbolic":"reference","name":"value1"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNil"},"arguments":[{"__symbolic":"reference","name":"value2"}]}}}},"removeAll":{"__symbolic":"function"},"remove":{"__symbolic":"function","parameters":["array","predicate"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"array"},"member":"slice"}},"member":"find"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":348,"character":28,"module":"./src/app/shared/functions"}]}},"capitalizeFirstLetter":{"__symbolic":"function"},"uncapitalizeFirstLetter":{"__symbolic":"function"},"splitByProperty":{"__symbolic":"function","parameters":["array","propertyName"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"array"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":367,"character":30,"module":"./src/app/shared/functions"},{}]}},"splitById":{"__symbolic":"function","parameters":["array"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"array"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":377,"character":30,"module":"./src/app/shared/functions"},{}]}},"equals":{"__symbolic":"function"},"Beans":{"__symbolic":"class","members":{},"statics":{"isEmpty":{"__symbolic":"function","parameters":["data","keys","opts"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNil"},"arguments":[{"__symbolic":"reference","name":"data"}]},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"isArray"},"arguments":[{"__symbolic":"reference","name":"keys"}]},"thenExpression":{"__symbolic":"reference","name":"keys"},"elseExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"keys"},"right":{"__symbolic":"reference","name":"data"}}]}},"member":"findIndex"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":461,"character":17,"module":"./src/app/shared/functions"}]},"right":-1}}}}},"filterNotNil":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"filter","line":7,"character":18},"arguments":[{"__symbolic":"reference","name":"isNotNil"}]}]}},"firstNotNil":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"first","line":10,"character":18},"arguments":[{"__symbolic":"reference","name":"isNotNil"}]}]}},"filterTrue":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"filter","line":13,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":13,"character":25,"module":"./src/app/shared/observables"}]}]}},"filterFalse":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"filter","line":16,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":16,"character":25,"module":"./src/app/shared/observables"}]}]}},"firstTruePromise":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"first","line":19,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":19,"character":24,"module":"./src/app/shared/observables"}]}]},"member":"toPromise"}}},"firstFalsePromise":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"first","line":22,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":22,"character":24,"module":"./src/app/shared/observables"}]}]},"member":"toPromise"}}},"firstNotNilPromise":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"firstNotNil"},"arguments":[{"__symbolic":"reference","name":"obs"}]},"member":"toPromise"}}},"chainPromises":{"__symbolic":"function","parameters":["defers"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"defers"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":28,"character":31,"module":"./src/app/shared/observables"},null]}},"WaitForOptions":{"__symbolic":"interface"},"waitFor":{"__symbolic":"function"},"PromiseEventPayload":{"__symbolic":"interface"},"PromiseEvent":{"__symbolic":"interface"},"createPromiseEventEmitter":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"EventEmitter","line":12,"character":13},"arguments":[true]}},"createPromiseEvent":{"__symbolic":"function"},"emitPromiseEvent":{"__symbolic":"function","parameters":["emitter","eventType","initArg"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Promise"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":30,"character":24,"module":"./src/app/shared/events"}]}},"CompletableEvent":{"__symbolic":"interface"},"fromScrollEndEvent":{"__symbolic":"function"},"Alerts":{"__symbolic":"class","members":{}},"SharedHotkeysModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":12,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":13,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"HotkeysDialogComponent"}],"declarations":[{"__symbolic":"reference","name":"HotkeysDialogComponent"}],"providers":[{"__symbolic":"reference","name":"Hotkeys"}]}]}],"members":{}},"Hotkeys":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":32,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"EventManager","line":30,"character":36},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":31,"character":30},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":33,"character":39}]}],"addShortcut":[{"__symbolic":"method"}],"openHelpModal":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"HotkeysDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"template":"<table>\n <tbody>\n <tr *ngFor=\"let keys of hotkeys\">\n <td>{{ keys[1] | translate }}</td>\n\n <td class=\"text-right\">\n <kbd>{{ keys[0] }}</kbd>\n </td>\n </tr>\n </tbody>\n</table>\n","styles":[":host table{border-collapse:collapse;width:100%;margin-bottom:1rem;color:#212529}:host th{font-weight:500;text-align:left;vertical-align:bottom;padding:.75rem;border-bottom:2px solid #dee2e6}:host td,:host th{border-top:1px solid #dee2e6}:host td{vertical-align:top;padding:.75rem .75rem .75rem 0}:host kbd{margin-right:6px;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-size:12px;line-height:10px;padding:3px 5px;vertical-align:middle}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":10,"character":22}]}]],"parameters":[null]}],"ngOnInit":[{"__symbolic":"method"}]}},"Color":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"number"}]},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"string"}]}],"rgba":[{"__symbolic":"method"}]},"statics":{"get":{"__symbolic":"function","parameters":["name"],"value":{"__symbolic":"index","expression":{},"index":{"__symbolic":"reference","name":"name"}}},"transparent":{"__symbolic":"error","message":"Lambda not supported","line":59,"character":23}}},"ColorName":{"__symbolic":"interface"},"ColorScale":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","name":"any"}]}],"getValueColor":[{"__symbolic":"method"}],"computeLegend":[{"__symbolic":"method"}]},"statics":{"custom":{"__symbolic":"error","message":"Lambda not supported","line":131,"character":18},"default":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColorScale"},"member":"custom"},"arguments":[25]}},"fix":{"__symbolic":"function","parameters":["length","colorName"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"apply"},"arguments":[null,{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Array"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"length"},"right":25}]}]},"member":"map"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"String"},"member":"prototype"},"member":"valueOf"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Color"},"member":"get"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"colorName"},"right":"primary"}]},"member":"rgba"},"arguments":[0.5]}]}}}},"ColorScaleLegend":{"__symbolic":"interface"},"ColorScaleOptions":{"__symbolic":"interface"},"ColorGradientOptions":{"__symbolic":"interface"},"ColorScaleLegendItem":{"__symbolic":"interface"},"rgbToHex":{"__symbolic":"function","parameters":["r","g","b"],"value":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":"#","right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}}},"rgbArrayToHex":{"__symbolic":"function","parameters":["rgb"],"value":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":"#","right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}}},"hexToRgbArray":{"__symbolic":"function"},"hexToRgb":{"__symbolic":"function"},"mixHex":{"__symbolic":"function"},"getColorShade":{"__symbolic":"function","parameters":["color"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"mixHex"},"arguments":["#000000",{"__symbolic":"reference","name":"color"},12]}},"getColorTint":{"__symbolic":"function","parameters":["color"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"mixHex"},"arguments":["#ffffff",{"__symbolic":"reference","name":"color"},10]}},"getColorContrast":{"__symbolic":"function"},"HAMMER_TAP_TIME":250,"HAMMER_PRESS_TIME":400,"AppGestureConfig":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/platform-browser","name":"HammerGestureConfig","line":11,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildHammer":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"HammerSwipeAction":{"__symbolic":"interface"},"HammerSwipeEvent":{"__symbolic":"interface"},"HammerTapEvent":{"__symbolic":"interface"},"SharedValidators":{"__symbolic":"class","members":{},"statics":{"_REGEXP_CACHE":{"__symbolic":"error","message":"Expression form not supported","line":14,"character":16},"I18N_ERROR_KEYS":{"required":"ERROR.FIELD_REQUIRED","min":"ERROR.FIELD_MIN","max":"ERROR.FIELD_MAX","minlength":"ERROR.FIELD_MIN_LENGTH","maxlength":"ERROR.FIELD_MAX_LENGTH","pubkey":"ERROR.FIELD_NOT_VALID_PUBKEY","validDate":"ERROR.FIELD_NOT_VALID_DATE","dateIsAfter":"ERROR.FIELD_NOT_VALID_DATE_AFTER","dateRange":"ERROR.FIELD_NOT_VALID_DATE_RANGE","dateMinDuration":"ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION","dateMaxDuration":"ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION","maxDecimals":"ERROR.FIELD_MAXIMUM_DECIMALS","integer":"ERROR.FIELD_NOT_VALID_INTEGER","email":"ERROR.FIELD_NOT_VALID_EMAIL","latitude":"ERROR.FIELD_NOT_VALID_LATITUDE","longitude":"ERROR.FIELD_NOT_VALID_LONGITUDE","pattern":"ERROR.FIELD_NOT_VALID_PATTERN","unique":"ERROR.FIELD_NOT_UNIQUE","entity":"ERROR.FIELD_INVALID"},"dateIsAfter":{"__symbolic":"function","parameters":["previousValue","errorParam","granularity"],"value":{"__symbolic":"error","message":"Lambda not supported","line":140,"character":11,"module":"./src/app/shared/validator/validators"}},"copyParentErrors":{"__symbolic":"function","parameters":["errorNames"],"value":{"__symbolic":"error","message":"Lambda not supported","line":193,"character":11,"module":"./src/app/shared/validator/validators"}}}},"SharedFormGroupValidators":{"__symbolic":"class","members":{"first":[{"__symbolic":"method"}]},"statics":{"dateMinDuration":{"__symbolic":"function","parameters":["startDateField","endDateField","minDuration","durationUnit"],"value":{"__symbolic":"error","message":"Lambda not supported","line":282,"character":11,"module":"./src/app/shared/validator/validators"}},"requiredIf":{"__symbolic":"function","parameters":["fieldName","anotherFieldToCheck"],"value":{"__symbolic":"error","message":"Lambda not supported","line":304,"character":11,"module":"./src/app/shared/validator/validators"}},"requiredIfTrue":{"__symbolic":"function","parameters":["fieldName","anotherFieldToCheck"],"value":{"__symbolic":"error","message":"Lambda not supported","line":320,"character":11,"module":"./src/app/shared/validator/validators"}},"requiredIfEmpty":{"__symbolic":"function","parameters":["fieldName","anotherFieldToCheck"],"value":{"__symbolic":"error","message":"Lambda not supported","line":336,"character":11,"module":"./src/app/shared/validator/validators"}},"propagateIfDirty":{"__symbolic":"function","parameters":["fieldName","fieldNameToPropagate","valueToPropagate"],"value":{"__symbolic":"error","message":"Lambda not supported","line":350,"character":11,"module":"./src/app/shared/validator/validators"}}}},"SharedFormArrayValidators":{"__symbolic":"class","members":{},"statics":{"uniqueEntity":{"__symbolic":"function","parameters":["controlName"],"value":{"__symbolic":"error","message":"Lambda not supported","line":381,"character":11,"module":"./src/app/shared/validator/validators"}},"validSumMaxValue":{"__symbolic":"function","parameters":["controlName","max"],"value":{"__symbolic":"error","message":"Lambda not supported","line":435,"character":11,"module":"./src/app/shared/validator/validators"}}}},"LatLongPattern":{"__symbolic":"interface"},"LAT_LONG_PATTERNS":["DDMMSS","DDMM","DD"],"LatLongFormatOptions":{"__symbolic":"class","members":{}},"LatLongFormatFn":{"__symbolic":"interface"},"LAT_LONG_DEFAULT_MAX_DECIMALS":3,"formatLatitude":{"__symbolic":"function"},"formatLongitude":{"__symbolic":"function"},"parseLatitudeOrLongitude":{"__symbolic":"function"},"SharedTestingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":9,"character":4},"member":"forChild"}},{"__symbolic":"reference","name":"MaterialTestingModule"}],"exports":[{"__symbolic":"reference","name":"MaterialTestingModule"}]}]}],"members":{}},"MaterialTestingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":59,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":61,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":62,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":63,"character":4},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":65,"character":4},"member":"forChild"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":66,"character":4},"member":"forChild"},"arguments":[[{"path":"","pathMatch":"full","component":{"__symbolic":"reference","name":"MaterialTestingPage"}},{"path":"autocomplete","pathMatch":"full","component":{"__symbolic":"reference","name":"AutocompleteTestPage"}},{"path":"datetime","pathMatch":"full","component":{"__symbolic":"reference","name":"DateTimeTestPage"}},{"path":"latlong","pathMatch":"full","component":{"__symbolic":"reference","name":"LatLongTestPage"}},{"path":"swipe","pathMatch":"full","component":{"__symbolic":"reference","name":"SwipeTestPage"}},{"path":"chips","pathMatch":"full","component":{"__symbolic":"reference","name":"ChipsTestPage"}},{"path":"badge-icon","pathMatch":"full","component":{"__symbolic":"reference","name":"ɵf"}}]]}],"declarations":[{"__symbolic":"reference","name":"MaterialTestingPage"},{"__symbolic":"reference","name":"DateTimeTestPage"},{"__symbolic":"reference","name":"AutocompleteTestPage"},{"__symbolic":"reference","name":"LatLongTestPage"},{"__symbolic":"reference","name":"SwipeTestPage"},{"__symbolic":"reference","name":"ChipsTestPage"},{"__symbolic":"reference","name":"ɵf"}],"exports":[{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":80,"character":4},{"__symbolic":"reference","name":"DateTimeTestPage"},{"__symbolic":"reference","name":"MaterialTestingPage"},{"__symbolic":"reference","name":"AutocompleteTestPage"},{"__symbolic":"reference","name":"LatLongTestPage"},{"__symbolic":"reference","name":"SwipeTestPage"},{"__symbolic":"reference","name":"ChipsTestPage"}]}]}],"members":{}},"TestingPage":{"__symbolic":"interface"},"APP_TESTING_PAGES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":37},"arguments":["testingPages"]},"MaterialTestingPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-material-testing","template":"\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Material components</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <ion-list>\n\n <ion-item-divider>Shared Material components</ion-item-divider>\n\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./datetime')\">\n Date/Time field\n </ion-item>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./autocomplete')\">\n Autocomplete field\n </ion-item>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./latlong')\">\n Lat/Long field\n </ion-item>\n<!-- <ion-item tappable class=\"text-1x\" (click)=\"openPage('./numpad')\">-->\n<!-- Numeric pad component-->\n<!-- </ion-item>-->\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./swipe')\">\n Swipe component\n </ion-item>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./chips')\">\n Chips component\n </ion-item>\n\n <ion-item-divider>Directive</ion-item-divider>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./badge-icon')\">\n Badge icon directive\n </ion-item>\n\n <ng-container *ngIf=\"pages && pages.length\">\n <ion-item-divider>Other components</ion-item-divider>\n\n <ion-item *ngFor=\"let item of pages\"\n tappable class=\"text-1x\"\n (click)=\"openPage(item.page)\">{{item.label}}</ion-item>\n\n </ng-container>\n </ion-list>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":19},"arguments":[{"__symbolic":"reference","name":"APP_TESTING_PAGES"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":18,"character":23},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":19,"character":24},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":20,"character":27},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"openPage":[{"__symbolic":"method"}]}},"AutocompleteTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":37,"character":1},"arguments":[{"selector":"app-autocomplete-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Autocomplete field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <!-- Tab nav - mobile/desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link\n [active]=\"mode==='mobile'\"\n (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='memory'\"\n (click)=\"toggleMode('memory')\">\n <mat-label>Memory leak debug</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!--<ion-grid *ngIf=\"mode === 'temp'\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable&lt;any[]&gt;</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n </ion-grid>-->\n\n\n <ion-grid *ngIf=\"mode === 'memory'\">\n\n <!-- debugging memory leak -->\n <ion-row>\n <ion-col>\n <ion-text><h4>Debug memory leak</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Items type\">\n <mat-select (selectionChange)=\"memoryAutocompleteFieldName=$event.value\" [value]=\"memoryAutocompleteFieldName\">\n <mat-option value=\"entity-$items\">Observable</mat-option>\n <mat-option value=\"entity-suggestFn\">Suggest function</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n <ion-col size=\"1\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Mobile ?\">\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [checked]=\"memoryMobile\">\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\" color=\"tertiary\">Start</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\" color=\"tertiary\">Stop</ion-button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n *ngIf=\"!memoryHide && memoryAutocompleteFieldName\"\n [config]=\"autocompleteFields.get(memoryAutocompleteFieldName)\"\n [mobile]=\"memoryMobile\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-memory-leak]'\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n <!-- Mobile mode -->\n <ion-grid *ngIf=\"mode === 'mobile'\">\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Suggest() function\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, suggestFn: (searchText, filter) =&gt; any[]</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-1]'\"\n [required]=\"true\"\n placeholder=\"Suggest field\"\n ></mat-autocomplete-field>\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\">\n Items is an Observable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-observable]'\"\n ></mat-autocomplete-field>\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\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\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\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Change filter\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <ion-button (click)=\"updateFilter('entity-items-filter')\">Filter on: {{autocompleteFields.get('entity-items-filter').filter?.searchAttribute }}</ion-button>\n </ion-col>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-filter]'\"\n ></mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"min-width-large\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"true\"\n class=\"min-width-large\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n </mat-autocomplete-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\n <!-- Desktop mode -->\n <ion-grid *ngIf=\"mode === 'desktop'\">\n <ion-row>\n <ion-col>\n <ion-text><h4>Desktop mode</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n items from suggest function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;\nsuggestLengthThreshold: '3'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-desktop-suggest]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an array\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: [], value: {{stringify(form.controls.entity.value)}}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [logPrefix]=\"'[combo-desktop-array-1]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\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-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\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\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-missing]'\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\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\">\n Full size panel\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class: 'mat-autocomplete-panel-full-size'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [compareWith]=\"compareWithFn\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\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\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-disable]'\"\n ></mat-autocomplete-field>\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\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"mat-autocomplete-panel-full-size\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n class=\"mat-autocomplete-panel-full-size\"\n panelWidth=\"100vw\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>panelWidth: string</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n <ion-col size=\"3\">\n <mat-checkbox #showIcons [checked]=\"false\">\n Icons ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n <mat-icon matPrefix *ngIf=\"showIcons.checked\">keyboard_arrow_right</mat-icon>\n <mat-icon matSuffix *ngIf=\"showIcons.checked\">keyboard_arrow_left</mat-icon>\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":56,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"loadItems":[{"__symbolic":"method"}],"entityToString":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"compareWithFn":[{"__symbolic":"method"}],"toggleMode":[{"__symbolic":"method"}],"startMemoryTimer":[{"__symbolic":"method"}],"stopMemoryTimer":[{"__symbolic":"method"}],"updateFilter":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}]}},"LatLongTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-latlong-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\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 class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!-- Empty value -->\n <form *ngIf=\"form.get('empty') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Empty, with defaults</h4></ion-text></ion-col></ion-row>\n\n <ion-row >\n\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD, defaultSign '-'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\">\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 formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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 <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM, defaultSign '+'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\">\n\n <mat-icon matPrefix >room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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 formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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 <!-- Mobile + DDMM -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Mobile=true\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n mobile=\"true\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\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.get('enable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row><ion-col><ion-text><h4>With value</h4></ion-text></ion-col></ion-row>\n\n <ion-row>\n\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\">\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\">\n Format DDMM\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\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\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMMSS\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\">\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.get('disable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Disabled control</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\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 formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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\">\n Readonly (control is enable)\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field #readonlyField [formControl]=\"form.get('enable.latitude')\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\">\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 </ion-row>\n </ion-grid>\n </form>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":15,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"geoPosition":[{"__symbolic":"method"}]}},"SwipeTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-swipe-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Swipe test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <h1>Swipe page:</h1>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n <!-- empty -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"empty\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [tabindex]=\"1\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- date -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Date\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"date\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"2\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled empty\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"disabledEmpty\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"3\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n<!-- read-only-->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled with date\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"disabledDate\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"4\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":23,"character":27},{"__symbolic":"reference","name":"DateFormatPipe"}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"displayDate":[{"__symbolic":"method"}],"compareDate":[{"__symbolic":"method"}]}},"DateTimeTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-data-time-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Date/Time field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <!-- debugging memory leak -->\n <ion-row><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\">Start timer</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\">Stop timer</ion-button>\n </ion-col>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"never\">\n <input matInput type=\"text\" hidden>\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [value]=\"memoryMobile\">\n Mobile ?\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n <ion-col>\n <mat-date-time-field formControlName=\"empty\"\n *ngIf=\"!memoryHide\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"memoryMobile\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-col>\n </ion-row>\n\n <!-- Mobile mode -->\n <ion-row><ion-col><ion-text><h4>Mobile mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <!-- debug console -->\n <ion-row>\n <!-- buttons -->\n <ion-col size=\"2\">\n <!-- submit form -->\n <ion-button (click)=\"doSubmit($event)\"\n fill=\"outline\">\n <ion-icon name=\"checkmark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n <!-- clear log -->\n <ion-button (click)=\"clearLogPanel()\"\n fill=\"outline\">\n <ion-icon name=\"trash\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col size=\"10\" *ngIf=\"showLogPanel\">\n <ion-text color=\"primary\">Log:<br/></ion-text>\n <div class=\"ion-padding-start\">\n <ion-text color=\"medium\">\n <small [innerHTML]=\"logContent\"></small>\n </ion-text>\n </div>\n </ion-col>\n </ion-row>\n\n <!-- Desktop mode -->\n <ion-row><ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly toggle\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.readonly.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <mat-date-time-field #readonlyField formControlName=\"readonly\"\n placeholder=\"Date/Time\"\n [readonly]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":29,"character":24},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":30,"character":27},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":31,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"log":[{"__symbolic":"method"}],"clearLogPanel":[{"__symbolic":"method"}],"startMemoryTimer":[{"__symbolic":"method"}],"stopMemoryTimer":[{"__symbolic":"method"}]}},"ChipsTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"app-chips-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Chips field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Suggest() function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <pre><small>suggestFn: (searchText, filter) =&gt; any[]</small></pre>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [logPrefix]=\"'[mat-chips-empty] '\"\n [compareWith]=\"compareWithFn\"\n ></mat-chips-field>\n {{stringify(form.controls.entity.value)}}\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\">\n Suggest() function with initial value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <pre><small>suggestFn: (searchText, filter) =&gt; any[]</small></pre>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"entityInitial\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[mat-chips-initialized] '\"\n ></mat-chips-field>\n {{stringify(form.controls.entityInitial.value)}}\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\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[mat-chips-disabled] '\"\n ></mat-chips-field>\n {{stringify(form.controls.disableEntity.value)}}\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\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[mat-chips-readonly] '\"\n [readonly]=\"true\"\n ></mat-chips-field>\n {{stringify(form.controls.entity.value)}}\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":37,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"loadItems":[{"__symbolic":"method"}],"entityToString":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"compareWithFn":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}]}},"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":34,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"SharedModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":37,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":38,"character":4},{"__symbolic":"reference","name":"AppGraphQLModule"},{"__symbolic":"reference","module":"ionic-cache","name":"CacheModule","line":40,"character":4},{"__symbolic":"reference","module":"@ionic/storage","name":"IonicStorageModule","line":41,"character":4},{"__symbolic":"reference","module":"ngx-jdenticon","name":"NgxJdenticonModule","line":42,"character":4},{"__symbolic":"reference","name":"AppMenuModule"}],"declarations":[{"__symbolic":"reference","name":"IsOnFieldModePipe"},{"__symbolic":"reference","name":"IsNotOnFieldModePipe"},{"__symbolic":"reference","name":"PersonToStringPipe"},{"__symbolic":"reference","name":"IsLoginAccountPipe"},{"__symbolic":"reference","name":"AccountToStringPipe"},{"__symbolic":"reference","name":"DepartmentToStringPipe"},{"__symbolic":"reference","name":"HomePage"},{"__symbolic":"reference","name":"AboutModal"},{"__symbolic":"reference","name":"AuthForm"},{"__symbolic":"reference","name":"AuthModal"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"RegisterConfirmPage"},{"__symbolic":"reference","name":"AccountPage"},{"__symbolic":"reference","name":"SettingsPage"},{"__symbolic":"reference","name":"SelectPeerModal"},{"__symbolic":"reference","name":"AppInstallUpgradeCard"},{"__symbolic":"reference","name":"TableSelectColumnsComponent"},{"__symbolic":"reference","name":"ActionsColumnComponent"},{"__symbolic":"reference","name":"EntityMetadataComponent"},{"__symbolic":"reference","name":"FormButtonsBarComponent"},{"__symbolic":"reference","name":"AppPropertiesForm"},{"__symbolic":"reference","name":"AppListForm"},{"__symbolic":"reference","name":"ɵl"}],"exports":[{"__symbolic":"reference","name":"SharedModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":83,"character":4},{"__symbolic":"reference","name":"AppGraphQLModule"},{"__symbolic":"reference","name":"AppMenuModule"},{"__symbolic":"reference","name":"IsOnFieldModePipe"},{"__symbolic":"reference","name":"IsNotOnFieldModePipe"},{"__symbolic":"reference","name":"PersonToStringPipe"},{"__symbolic":"reference","name":"IsLoginAccountPipe"},{"__symbolic":"reference","name":"AccountToStringPipe"},{"__symbolic":"reference","name":"HomePage"},{"__symbolic":"reference","name":"AuthForm"},{"__symbolic":"reference","name":"AuthModal"},{"__symbolic":"reference","name":"TableSelectColumnsComponent"},{"__symbolic":"reference","name":"ActionsColumnComponent"},{"__symbolic":"reference","name":"EntityMetadataComponent"},{"__symbolic":"reference","name":"FormButtonsBarComponent"},{"__symbolic":"reference","name":"AboutModal"},{"__symbolic":"reference","name":"AppPropertiesForm"},{"__symbolic":"reference","name":"AppListForm"},{"__symbolic":"reference","name":"AppInstallUpgradeCard"},{"__symbolic":"reference","name":"DepartmentToStringPipe"},{"__symbolic":"reference","name":"ɵl"}]}]}],"members":{}},"Account":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Person"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"AccountVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"asPerson":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":12,"character":9}}},"accountToString":{"__symbolic":"function","parameters":["data"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"data"},"right":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"firstName"},"right":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"firstName"},"right":" "}},"right":""},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"lastName"},"right":""}}},"right":""}},"Software":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"SoftwareVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":17,"character":8}}},"Configuration":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Software"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"ConfigurationVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"clone":[{"__symbolic":"method"}],"copy":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"getPropertyAsBoolean":[{"__symbolic":"method"}],"getPropertyAsInt":[{"__symbolic":"method"}],"getPropertyAsNumbers":[{"__symbolic":"method"}],"getPropertyAsStrings":[{"__symbolic":"method"}],"getProperty":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":59,"character":9}}},"Department":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseReferential"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"DepartmentVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"ENTITY_NAME":"Department","fromObject":{"__symbolic":"error","message":"Variable not initialized","line":8,"character":9}}},"departmentToString":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"name"}},"right":{"__symbolic":"reference","name":"undefined"}}},"departmentsToString":{"__symbolic":"function","parameters":["data","separator"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"data"},"right":[]},"member":"map"},"arguments":[{"__symbolic":"reference","name":"departmentToString"}]},"member":"join"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"separator"},"right":", "}]}},"Cloneable":{"__symbolic":"interface"},"entityToString":{"__symbolic":"function","parameters":["obj","properties"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"joinPropertiesPath"},"arguments":[{"__symbolic":"reference","name":"obj"},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"properties"},"right":["name"]}]}},"right":{"__symbolic":"reference","name":"undefined"}}},"EntityAsObjectOptions":{"__symbolic":"interface"},"IEntity":{"__symbolic":"interface"},"ITreeItemEntity":{"__symbolic":"interface"},"Entity":{"__symbolic":"class","arity":4,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"clone":[{"__symbolic":"method"}],"copy":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]},"statics":{"TYPENAME":{"__symbolic":"error","message":"Variable not initialized","line":56,"character":9}}},"isInstanceOf":{"__symbolic":"function"},"EntityUtils":{"__symbolic":"class","members":{},"statics":{"isNotEmpty":{"__symbolic":"function","parameters":["obj","checkedAttribute"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"obj"}}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":null}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":{"__symbolic":"reference","name":"undefined"}}}},"isEmpty":{"__symbolic":"function","parameters":["obj","checkedAttribute"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"obj"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":{"__symbolic":"reference","name":"undefined"}}}},"getArrayAsMap":{"__symbolic":"function","parameters":["source"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"source"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":138,"character":33,"module":"./src/app/core/services/model/entity.model"},{}]}},"getPropertyArrayAsObject":{"__symbolic":"function","parameters":["source"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"source"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":154,"character":33,"module":"./src/app/core/services/model/entity.model"},{}]}},"sort":{"__symbolic":"function","parameters":["data","sortBy","sortDirection"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"sort"},"arguments":[{"__symbolic":"error","message":"Expression form not supported","line":195,"character":21,"module":"./src/app/core/services/model/entity.model"}]}},"compareValue":{"__symbolic":"function","parameters":["value1","value2","direction"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"value1"},"right":{"__symbolic":"reference","name":"value2"}},"thenExpression":0,"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":">","left":{"__symbolic":"reference","name":"value1"},"right":{"__symbolic":"reference","name":"value2"}},"thenExpression":{"__symbolic":"reference","name":"direction"},"elseExpression":{"__symbolic":"binop","operator":"*","left":-1,"right":{"__symbolic":"reference","name":"direction"}}}}},"isLocal":{"__symbolic":"function","parameters":["entity"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"entity"},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"entity"},"member":"id"}]},"right":{"__symbolic":"binop","operator":"<","left":{"__symbolic":"pre","operator":"+","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"entity"},"member":"id"}},"right":0}}}},"isRemote":{"__symbolic":"function","parameters":["entity"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"entity"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isLocal"},"arguments":[{"__symbolic":"reference","name":"entity"}]}}}},"isLocalId":{"__symbolic":"function","parameters":["id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"id"}]},"right":{"__symbolic":"binop","operator":"<","left":{"__symbolic":"pre","operator":"+","operand":{"__symbolic":"reference","name":"id"}},"right":0}}}}},"IEntityFilter":{"__symbolic":"interface"},"EntityFilter":{"__symbolic":"class","arity":5,"extends":{"__symbolic":"reference","name":"Entity"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asPodObject":[{"__symbolic":"method"}],"isEmpty":[{"__symbolic":"method"}],"countNotEmptyCriteria":[{"__symbolic":"method"}],"asFilterFn":[{"__symbolic":"method"}],"buildFilter":[{"__symbolic":"method"}],"isCriteriaNotEmpty":[{"__symbolic":"method"}]}},"EntityFilterUtils":{"__symbolic":"class","members":{},"statics":{"isEntityFilter":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"asPodObject"}},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"asFilterFn"}},"right":true},"right":false}}}},"SynchronizationHistory":{"__symbolic":"interface"},"HistoryPageReference":{"__symbolic":"interface"},"StatusIds":{"DISABLE":0,"ENABLE":1,"TEMPORARY":2,"DELETED":3,"ALL":99},"Peer":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"PeerVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":10,"character":9}}},"UserProfileLabel":{"__symbolic":"interface"},"PRIORITIZED_AUTHORITIES":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[["ADMIN","SUPERVISOR","USER","GUEST"]]},"Person":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"PersonVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":18,"character":9}}},"PersonUtils":{"__symbolic":"class","members":{},"statics":{"personToString":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"lastName"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"firstName"}}},"right":{"__symbolic":"reference","name":"undefined"}}},"personsToString":{"__symbolic":"function","parameters":["data","separator"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"data"},"right":[]},"member":"map"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"PersonUtils"},"member":"personToString"}]},"member":"join"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"separator"},"right":", "}]}}}},"IReferentialRef":{"__symbolic":"interface"},"ReferentialRef":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"ReferentialVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":179,"character":9}}},"BaseReferential":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"Entity"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]}},"Referential":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseReferential"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"ReferentialVO"}]}],"members":{},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":101,"character":9}}},"ReferentialUtils":{"__symbolic":"class","members":{},"statics":{"isNotEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isNotEmpty"},"arguments":[{"__symbolic":"reference","name":"obj"},"id"]}},"isNotEmptyReferential":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isNotEmpty"},"arguments":[{"__symbolic":"reference","name":"obj"},"id"]}},"isEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isEmpty"},"arguments":[{"__symbolic":"reference","name":"obj"},"id"]}},"equals":{"__symbolic":"function","parameters":["o1","o2"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"equals"},"arguments":[{"__symbolic":"reference","name":"o1"},{"__symbolic":"reference","name":"o2"},"id"]}}}},"ReferentialAsObjectOptions":{"__symbolic":"interface"},"referentialToString":{"__symbolic":"function","parameters":["obj","properties"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"joinPropertiesPath"},"arguments":[{"__symbolic":"reference","name":"obj"},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"properties"},"right":["label","name"]}]}},"right":{"__symbolic":"reference","name":"undefined"}}},"referentialsToString":{"__symbolic":"function","parameters":["values","properties","separator"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"values"},"right":[]},"member":"map"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":11,"character":28,"module":"./src/app/core/services/model/referential.model"}]},"member":"join"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"separator"},"right":", "}]}},"IStatus":{"__symbolic":"interface"},"StatusList":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[[{"id":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StatusIds"},"member":"ENABLE"},"icon":"checkmark","label":"REFERENTIAL.STATUS_ENUM.ENABLE"},{"id":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StatusIds"},"member":"DISABLE"},"icon":"close","label":"REFERENTIAL.STATUS_ENUM.DISABLE"},{"id":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StatusIds"},"member":"TEMPORARY"},"icon":"help","label":"REFERENTIAL.STATUS_ENUM.TEMPORARY"}]]},"StatusById":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"splitById"},"arguments":[{"__symbolic":"reference","name":"StatusList"}]}]},"MINIFY_ENTITY_FOR_LOCAL_STORAGE":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"minify":true,"keepTypename":true,"keepEntityName":true,"keepLocalId":true}]},"MINIFY_ENTITY_FOR_POD":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"minify":true,"keepTypename":false,"keepEntityName":false,"keepLocalId":false}]},"UsageMode":{"__symbolic":"interface"},"LocaleConfig":{"__symbolic":"interface"},"APP_LOCALES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":31},"arguments":["locales"]},"OfflineFeature":{"__symbolic":"interface"},"LocalSettings":{"__symbolic":"interface"},"UserSettings":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"UserSettingsVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"merge":[{"__symbolic":"method"}],"asLocalSettings":[{"__symbolic":"method"}]},"statics":{"SETTINGS_PROPERTIES":["locale","latLongFormat"],"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":43,"character":9}}},"AppGraphQLModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":5,"character":4}],"exports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":8,"character":4}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"WatchQueryOptions":{"__symbolic":"interface"},"MutateQueryOptions":{"__symbolic":"interface"},"APP_GRAPHQL_TYPE_POLICIES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":65,"character":45},"arguments":["graphqlTypePolicies"]},"GraphqlService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":68,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":105,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":105,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_GRAPHQL_TYPE_POLICIES"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":98,"character":22},{"__symbolic":"reference","module":"apollo-angular","name":"Apollo","line":99,"character":20},{"__symbolic":"reference","module":"apollo-angular/http","name":"HttpLink","line":100,"character":22},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":102,"character":21},{"__symbolic":"reference","name":"CryptoService"},null,{"__symbolic":"reference","module":"@apollo/client/core","name":"TypePolicies","line":105,"character":73}]}],"setAuthToken":[{"__symbolic":"method"}],"setAuthBasic":[{"__symbolic":"method"}],"addResolver":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"watchQueryRef":[{"__symbolic":"method"}],"queryRefValuesChanges":[{"__symbolic":"method"}],"watchQuery":[{"__symbolic":"method"}],"mutate":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"insertIntoQueryCache":[{"__symbolic":"method"}],"addManyToQueryCache":[{"__symbolic":"method"}],"removeFromCachedQueryById":[{"__symbolic":"method"}],"removeFromCachedQueryByIds":[{"__symbolic":"method"}],"updateToQueryCache":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"registerCustomError":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"resetClient":[{"__symbolic":"method"}],"onApolloError":[{"__symbolic":"method"}],"toApolloError":[{"__symbolic":"method"}],"createAppErrorByCode":[{"__symbolic":"method"}],"getI18nErrorMessageByCode":[{"__symbolic":"method"}],"toAppError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsLoginAccountPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isLogin"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AccountToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":14,"character":1},"arguments":[{"name":"accountToString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DepartmentToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"departmentToString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PersonToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"personToString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsOnFieldModePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"isOnField"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsNotOnFieldModePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":16,"character":1},"arguments":[{"name":"isNotOnField"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PlatformService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":32,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":60,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":61,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":62,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":63,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":64,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":47,"character":22},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":48,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":49,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":50,"character":23},{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MomentDateAdapter","line":51,"character":25},{"__symbolic":"reference","name":"EntitiesStorage"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"ionic-cache","name":"CacheService","line":57,"character":19},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":58,"character":21},{"__symbolic":"reference","name":"AudioProvider"},null,{"__symbolic":"reference","module":"@ionic-native/status-bar/ngx","name":"StatusBar","line":61,"character":35},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":62,"character":34},{"__symbolic":"reference","module":"@ionic-native/splash-screen/ngx","name":"SplashScreen","line":63,"character":38},{"__symbolic":"reference","module":"@ionic-native/in-app-browser/ngx","name":"InAppBrowser","line":64,"character":33},{"__symbolic":"reference","module":"@ionic-native/downloader/ngx","name":"Downloader","line":65,"character":36}]}],"is":[{"__symbolic":"method"}],"isWebOrDesktop":[{"__symbolic":"method"}],"isAndroidCordova":[{"__symbolic":"method"}],"width":[{"__symbolic":"method"}],"height":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"getDownloadingJob":[{"__symbolic":"method"}],"download":[{"__symbolic":"method"}],"configureCordovaPlugins":[{"__symbolic":"method"}],"configureTranslate":[{"__symbolic":"method"}],"configureCache":[{"__symbolic":"method"}],"storageReady":[{"__symbolic":"method"}],"migrateStorage":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"onStartupError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ConnectionType":{"__symbolic":"interface"},"AuthTokenType":{"__symbolic":"interface"},"getConnectionType":{"__symbolic":"function"},"NetworkEventType":{"__symbolic":"interface"},"NetworkService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":63,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":110,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":110,"character":12}]}],null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":118,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":119,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":120,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":122,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":111,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":112,"character":23},{"__symbolic":"reference","name":"CryptoService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":114,"character":21},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"ionic-cache","name":"CacheService","line":116,"character":19},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":117,"character":18},null,{"__symbolic":"reference","module":"@ionic-native/network/ngx","name":"Network","line":119,"character":33},{"__symbolic":"reference","module":"@ionic-native/splash-screen/ngx","name":"SplashScreen","line":120,"character":38},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":121,"character":35},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":122,"character":41}]}],"on":[{"__symbolic":"method"}],"tryOnline":[{"__symbolic":"method"}],"showOfflineToast":[{"__symbolic":"method"}],"checkPeerAlive":[{"__symbolic":"method"}],"checkPeerCompatible":[{"__symbolic":"method"}],"getNodeInfo":[{"__symbolic":"method"}],"setForceOffline":[{"__symbolic":"method"}],"showSelectPeerModal":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"ngOnAfterStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"stopRefreshTimer":[{"__symbolic":"method"}],"startRefreshTimer":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"onDeviceConnectionChanged":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"getDefaultPeers":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"emit":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"Fragments":{"__symbolic":"error","message":"Tagged template expressions are not supported in metadata","line":28,"character":10,"module":"./src/app/core/services/config.service"},"APP_CONFIG_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":86,"character":38},"arguments":["defaultOptions"]},"ConfigService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":88,"character":1},"arguments":[{"providedIn":"root","deps":[{"__symbolic":"reference","name":"APP_CONFIG_OPTIONS"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":113,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":114,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":114,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_CONFIG_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":106,"character":24},{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":108,"character":23},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"FileService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":111,"character":31},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":112,"character":25},null,{"__symbolic":"reference","name":"FormFieldDefinitionMap"}]}],"ngOnStart":[{"__symbolic":"method"}],"loadDefault":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"getCacheStatistics":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"loadOrRestoreLocally":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"storeLocally":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CORE_CONFIG_OPTIONS":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"LOGO":{"key":"sumaris.logo","label":"CONFIGURATION.OPTIONS.LOGO","type":"string"},"FAVICON":{"key":"sumaris.favicon","label":"CONFIGURATION.OPTIONS.FAVICON","type":"string"},"DEFAULT_LOCALE":{"key":"sumaris.defaultLocale","label":"CONFIGURATION.OPTIONS.DEFAULT_LOCALE","type":"enum","values":{"__symbolic":"reference","name":"APP_LOCALES"}},"DEFAULT_LAT_LONG_FORMAT":{"key":"sumaris.defaultLatLongFormat","label":"CONFIGURATION.OPTIONS.DEFAULT_LATLONG_FORMAT","type":"enum","values":[{"key":"DDMMSS","value":"COMMON.LAT_LONG.DDMMSS_PLACEHOLDER"},{"key":"DDMM","value":"COMMON.LAT_LONG.DDMM_PLACEHOLDER"},{"key":"DD","value":"COMMON.LAT_LONG.DD_PLACEHOLDER"}]},"REGISTRATION_ENABLE":{"key":"sumaris.registration.enable","label":"CONFIGURATION.OPTIONS.HOME.ENABLE_REGISTRATION","type":"boolean","defaultValue":true},"AUTH_TOKEN_TYPE":{"key":"sumaris.auth.token.type","label":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE_PLACEHOLDER","type":"enum","values":[{"key":"token","value":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE.TOKEN"},{"key":"basic","value":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE.BASIC"},{"key":"basic-and-token","value":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE.BASIC_AND_TOKEN"}],"defaultValue":"token"},"GRAVATAR_ENABLE":{"key":"sumaris.gravatar.enable","label":"CONFIGURATION.OPTIONS.ENABLE_GRAVATAR","type":"boolean","defaultValue":false},"GRAVATAR_URL":{"key":"sumaris.gravatar.url","label":"CONFIGURATION.OPTIONS.GRAVATAR_URL","type":"string","defaultValue":"https://www.gravatar.com/avatar/{md5}"},"TESTING":{"key":"sumaris.testing.enable","label":"CONFIGURATION.OPTIONS.TESTING","type":"boolean"},"APP_MIN_VERSION":{"key":"sumaris.app.version.min","label":"CONFIGURATION.OPTIONS.APP_MIN_VERSION","type":"string"},"HELP_URL":{"key":"sumaris.help.url","label":"CONFIGURATION.OPTIONS.HELP_URL","type":"string"},"FORUM_URL":{"key":"sumaris.forum.url","label":"CONFIGURATION.OPTIONS.FORUM_URL","type":"string"},"LOGO_LARGE":{"key":"sumaris.logo.large","label":"CONFIGURATION.OPTIONS.HOME.LOGO_LARGE","type":"string"},"MENU_ITEMS":{"key":"sumaris.menu.items","label":"CONFIGURATION.OPTIONS.MENU.ITEMS","type":"string"},"HOME_PARTNERS_DEPARTMENTS":{"key":"sumaris.partner.departments","label":"CONFIGURATION.OPTIONS.HOME.PARTNER_DEPARTMENTS","type":"string"},"HOME_BACKGROUND_IMAGE":{"key":"sumaris.background.images","label":"CONFIGURATION.OPTIONS.HOME.BACKGROUND_IMAGES","type":"string"},"COLOR_PRIMARY":{"key":"sumaris.color.primary","label":"CONFIGURATION.OPTIONS.COLORS.PRIMARY","type":"color"},"COLOR_SECONDARY":{"key":"sumaris.color.secondary","label":"CONFIGURATION.OPTIONS.COLORS.SECONDARY","type":"color"},"COLOR_TERTIARY":{"key":"sumaris.color.tertiary","label":"CONFIGURATION.OPTIONS.COLORS.TERTIARY","type":"color"},"COLOR_SUCCESS":{"key":"sumaris.color.success","label":"CONFIGURATION.OPTIONS.COLORS.SUCCESS","type":"color"},"COLOR_WARNING":{"key":"sumaris.color.warning","label":"CONFIGURATION.OPTIONS.COLORS.WARNING","type":"color"},"COLOR_ACCENT":{"key":"sumaris.color.accent","label":"CONFIGURATION.OPTIONS.COLORS.ACCENT","type":"color"},"COLOR_DANGER":{"key":"sumaris.color.danger","label":"CONFIGURATION.OPTIONS.COLORS.DANGER","type":"color"},"ANDROID_INSTALL_URL":{"key":"sumaris.android.install.url","label":"CONFIGURATION.OPTIONS.ANDROID_INSTALL_URL","type":"string"}}]},"SETTINGS_STORAGE_KEY":"settings","SETTINGS_TRANSIENT_PROPERTIES":["mobile","touchUi"],"APP_LOCAL_SETTINGS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":42,"character":38},"arguments":["DefaultLocalSettings"]},"APP_LOCAL_SETTINGS_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":43,"character":46},"arguments":["LocalSettingsOptions"]},"AddToPageHistoryOptions":{"__symbolic":"interface"},"LocalSettingsService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":51,"character":1},"arguments":[{"providedIn":"root","deps":[{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS"},{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS_OPTIONS"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":102,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":103,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":103,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":104,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":99,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":100,"character":22},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":101,"character":21},null,{"__symbolic":"reference","name":"LocalSettings"},{"__symbolic":"reference","name":"FormFieldDefinitionMap"}]}],"ngOnStart":[{"__symbolic":"method"}],"isUsageMode":[{"__symbolic":"method"}],"isOnFieldMode":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"setProperty":[{"__symbolic":"method"}],"getProperty":[{"__symbolic":"method"}],"getPropertyAsBoolean":[{"__symbolic":"method"}],"getPropertyAsInt":[{"__symbolic":"method"}],"getPropertyAsNumbers":[{"__symbolic":"method"}],"getPropertyAsStrings":[{"__symbolic":"method"}],"apply":[{"__symbolic":"method"}],"applyProperty":[{"__symbolic":"method"}],"getPageSettings":[{"__symbolic":"method"}],"savePageSetting":[{"__symbolic":"method"}],"getOfflineFeature":[{"__symbolic":"method"}],"getOfflineFeatureLastSyncDate":[{"__symbolic":"method"}],"hasOfflineFeature":[{"__symbolic":"method"}],"saveOfflineFeature":[{"__symbolic":"method"}],"markOfflineFeatureAsSync":[{"__symbolic":"method"}],"removeOfflineFeatures":[{"__symbolic":"method"}],"getFieldDisplayAttributes":[{"__symbolic":"method"}],"getPageFieldDefaultValue":[{"__symbolic":"method"}],"registerOption":[{"__symbolic":"method"}],"registerOptions":[{"__symbolic":"method"}],"addToPageHistory":[{"__symbolic":"method"}],"removePageHistory":[{"__symbolic":"method"}],"clearPageHistory":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"persistLocally":[{"__symbolic":"method"}],"fillPageHistoryDefaults":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AccountDetails":{"__symbolic":"interface"},"AuthData":{"__symbolic":"interface"},"RegisterData":{"__symbolic":"interface"},"IsEmailExistsVariables":{"__symbolic":"interface"},"AccountService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":184,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":247,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","name":"CryptoService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":245,"character":23},{"__symbolic":"reference","name":"FileService"},null]}],"ngOnStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"isLogin":[{"__symbolic":"method"}],"isAuth":[{"__symbolic":"method"}],"hasMinProfile":[{"__symbolic":"method"}],"hasExactProfile":[{"__symbolic":"method"}],"hasProfileAndIsEnable":[{"__symbolic":"method"}],"isAdmin":[{"__symbolic":"method"}],"isSupervisor":[{"__symbolic":"method"}],"isUser":[{"__symbolic":"method"}],"isUsageMode":[{"__symbolic":"method"}],"isOnlyGuest":[{"__symbolic":"method"}],"canUserWriteDataForDepartment":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"authenticate":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"checkEmailAvailable":[{"__symbolic":"method"}],"isEmailExists":[{"__symbolic":"method"}],"sendConfirmationEmail":[{"__symbolic":"method"}],"confirmEmail":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"getAdditionalField":[{"__symbolic":"method"}],"registerAdditionalField":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"listenSettings":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"saveLocally":[{"__symbolic":"method"}],"saveLocalSettingsRemotely":[{"__symbolic":"method"}],"saveRemotely":[{"__symbolic":"method"}],"saveSettingsRemotely":[{"__symbolic":"method"}],"authenticateAndGetToken":[{"__symbolic":"method"}],"copyIdAndUpdateDate":[{"__symbolic":"method"}],"copyIdAndUpdateDateSettings":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CryptoSaltParams":{"__symbolic":"interface"},"KeyPair":{"__symbolic":"interface"},"CryptoService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":62,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"scryptKeypair":[{"__symbolic":"method"}],"sign":[{"__symbolic":"method"}],"verify":[{"__symbolic":"method"}],"sha256":[{"__symbolic":"method"}],"sha512":[{"__symbolic":"method"}],"encodeBase64":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AuthGuardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":16,"character":15},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":14,"character":33},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":15,"character":30},null]}],"canActivate":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"Base58":{"__symbolic":"class","members":{},"statics":{"alphabet":"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz","alphabetMap":{"__symbolic":"error","message":"Variable not initialized","line":12,"character":17}}},"QueryVariables":{"__symbolic":"interface"},"MutateQueryWithCacheUpdateOptions":{"__symbolic":"interface"},"MutableWatchQueryOptions":{"__symbolic":"interface"},"MutableWatchQueryDescription":{"__symbolic":"interface"},"FindMutableWatchQueriesOptions":{"__symbolic":"interface"},"BaseGraphqlServiceOptions":{"__symbolic":"class","members":{}},"BaseGraphqlService":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":65,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":80,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"BaseGraphqlServiceOptions"}]}],"mutableWatchQuery":[{"__symbolic":"method"}],"insertIntoMutableCachedQueries":[{"__symbolic":"method"}],"removeFromMutableCachedQueriesByIds":[{"__symbolic":"method"}],"refetchMutableWatchQueries":[{"__symbolic":"method"}],"computeMutableWatchQueryId":[{"__symbolic":"method"}],"findMutableWatchQueries":[{"__symbolic":"method"}],"registerNewMutableWatchQuery":[{"__symbolic":"method"}],"findRefetchQueries":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}]}},"MutableWatchQueriesUpdatePolicy":{"__symbolic":"interface"},"BaseEntityGraphqlQueries":{"__symbolic":"interface"},"BaseEntityGraphqlMutations":{"__symbolic":"interface"},"BaseEntityGraphqlSubscriptions":{"__symbolic":"interface"},"BaseEntityServiceOptions":{"__symbolic":"interface"},"EntitySaveOptions":{"__symbolic":"interface"},"BaseEntityService":{"__symbolic":"class","arity":8,"extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"error","message":"Expression form not supported","line":94,"character":24,"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Expression form not supported","line":95,"character":26,"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":96,"character":38,"context":{"typeName":"T"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":41,"context":{"typeName":"ID"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":45,"context":{"typeName":"Q"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":48,"context":{"typeName":"M"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":51,"context":{"typeName":"S"},"module":"./src/app/core/services/base-entity-service.class"}]}]}],"watch":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"loadAll":[{"__symbolic":"method"}],"countAll":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"copyIdAndUpdateDate":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"fillDefaultProperties":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"getRefetchQueriesForMutation":[{"__symbolic":"method"}],"getLoadQueries":[{"__symbolic":"method"}]}},"EntitiesStorageTypePolicies":{"__symbolic":"interface"},"APP_LOCAL_STORAGE_TYPE_POLICIES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":19,"character":51},"arguments":["localStorageTypePolicies"]},"EntitiesStorage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":45,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":46,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":46,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_LOCAL_STORAGE_TYPE_POLICIES"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":42,"character":22},{"__symbolic":"reference","name":"ProgressBarService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":44,"character":21},{"__symbolic":"reference","name":"Environment"},{"__symbolic":"reference","name":"any"}]}],"watchAll":[{"__symbolic":"method"}],"loadAll":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"nextValue":[{"__symbolic":"method"}],"nextValues":[{"__symbolic":"method"}],"currentValue":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteById":[{"__symbolic":"method"}],"deleteMany":[{"__symbolic":"method"}],"deleteFromTrash":[{"__symbolic":"method"}],"deleteFromTrashById":[{"__symbolic":"method"}],"moveToTrash":[{"__symbolic":"method"}],"moveManyToTrash":[{"__symbolic":"method"}],"saveToTrash":[{"__symbolic":"method"}],"clearTrash":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"getEntityStore":[{"__symbolic":"method"}],"detectEntityName":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"storeLocally":[{"__symbolic":"method"}]},"statics":{"TRASH_PREFIX":"Trash#","REMOTE_PREFIX":"Remote#","ɵprov":{}}},"ENTITIES_STORAGE_KEY_PREFIX":"entities","EntityStoreTypePolicyMode":{"__symbolic":"interface"},"EntityStoreTypePolicy":{"__symbolic":"interface"},"EntityStorageLoadOptions":{"__symbolic":"interface"},"EntityStore":{"__symbolic":"class","arity":3,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":62,"character":32},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":63,"character":35,"context":{"typeName":"T"},"module":"./src/app/core/services/storage/entity-store.class"}]}]}],"nextValue":[{"__symbolic":"method"}],"currentValue":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"loadAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteMany":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"loadCachedEntity":[{"__symbolic":"method"}],"loadFullEntity":[{"__symbolic":"method"}],"setEntities":[{"__symbolic":"method"}],"reduceAndSort":[{"__symbolic":"method"}],"createLightEntityMapFn":[{"__symbolic":"method"}],"emitEvent":[{"__symbolic":"method"}]}},"AppValidatorService":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":10,"character":10},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":14,"character":27},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":15,"character":26}]}],"getRowValidator":[{"__symbolic":"method"}],"getFormGroup":[{"__symbolic":"method"}],"getFormGroupConfig":[{"__symbolic":"method"}],"getI18nFormErrors":[{"__symbolic":"method"}],"getI18nErrors":[{"__symbolic":"method"}],"getI18nError":[{"__symbolic":"method"}]}},"IAppEditor":{"__symbolic":"interface"},"AppTabEditorOptions":{"__symbolic":"class","members":{}},"AppEditor":{"__symbolic":"class","arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":42,"character":1}}],"members":{"toolbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":66,"character":3},"arguments":[{"__symbolic":"reference","name":"ToolbarToken"}]}]}],"formButtonsBar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":67,"character":3},"arguments":[{"__symbolic":"reference","name":"FormButtonsBarToken"},{"static":true}]}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":68,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":68,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":120,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":121,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":122,"character":25},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":123,"character":25}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addChildForm":[{"__symbolic":"method"}],"addChildForms":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}],"reloadWithConfirmation":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"logFormErrors":[{"__symbolic":"method"}],"scrollToTop":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"unregisterSubscription":[{"__symbolic":"method"}],"saveIfDirtyAndConfirm":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"logChildrenFormErrors":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AppTabEditor":{"__symbolic":"class","arity":3,"extends":{"__symbolic":"reference","name":"AppEditor"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":455,"character":1}}],"members":{"queryTabIndexParamName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":466,"character":3}}]}],"selectedTabIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":468,"character":3}}]}],"selectedTabIndexChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":475,"character":3}}]}],"tabGroup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":477,"character":3},"arguments":["tabGroup",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":483,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":120,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":121,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":122,"character":25},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":123,"character":25},{"__symbolic":"reference","name":"AppTabEditorOptions"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setSelectedTabIndex":[{"__symbolic":"method"}],"onTabChange":[{"__symbolic":"method"}],"onSwipeTab":[{"__symbolic":"method"}],"onSubTabChange":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}]}},"AppEditorOptions":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppTabEditorOptions"},"members":{}},"AppEntityEditor":{"__symbolic":"class","arity":3,"extends":{"__symbolic":"reference","name":"AppTabEditor"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":44,"character":1}}],"members":{"markAsSaving":[{"__symbolic":"method"}],"markAsSaved":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":118,"character":14},{"__symbolic":"error","message":"Expression form not supported","line":119,"character":24,"module":"./src/app/core/form/entity-editor.class"},{"__symbolic":"error","message":"Could not resolve type","line":120,"character":28,"context":{"typeName":"S"},"module":"./src/app/core/form/entity-editor.class"},{"__symbolic":"reference","name":"AppEditorOptions"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"loadFromRoute":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"startListenRemoteChanges":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}],"updateViewState":[{"__symbolic":"method"}],"updateTabAndRoute":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"saveAndClose":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveAndGetDataIfValid":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}],"setError":[{"__symbolic":"method"}],"registerForms":[{"__symbolic":"method"}],"computeTitle":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"getFirstInvalidTabIndex":[{"__symbolic":"method"}],"canUserWrite":[{"__symbolic":"method"}],"computeNextTabIndex":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}],"onBeforeEntityLoad":[{"__symbolic":"method"}],"onNewEntity":[{"__symbolic":"method"}],"onEntityLoaded":[{"__symbolic":"method"}],"onEntitySaved":[{"__symbolic":"method"}],"onEntityDeleted":[{"__symbolic":"method"}],"computeUsageMode":[{"__symbolic":"method"}],"waitWhilePending":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"getJsonValueToSave":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"addToPageHistory":[{"__symbolic":"method"}],"computePageHistory":[{"__symbolic":"method"}],"removePageHistory":[{"__symbolic":"method"}],"computePageUrl":[{"__symbolic":"method"}],"getParentPageUrl":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"openFirstInvalidTab":[{"__symbolic":"method"}],"updateRoute":[{"__symbolic":"method"}]}},"EntityMetadataComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-entity-metadata","animations":[{"__symbolic":"reference","name":"fadeInAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":19},"member":"OnPush"},"template":"<ng-container *ngIf=\"value && value.id\">\n <ion-card @fadeInAnimation>\n\n <!-- recorder -->\n <ion-item color=\"light\"\n *ngIf=\"showRecorder && value &&  (value.recorderDepartment || value.recorderPerson)\">\n\n <!-- recorder avatar -->\n <ion-avatar slot=\"start\" *ngIf=\"value.recorderPerson; let recorderPerson\">\n <img *ngIf=\"recorderPerson.avatar; else generateAvatar\"\n src=\"{{ recorderPerson.avatar }}\">\n <ng-template #generateAvatar>\n <svg *ngIf=\"recorderPerson.id; let personId\"\n width=\"38\" height=\"38\" [data-jdenticon-value]=\"personId\"></svg>\n </ng-template>\n </ion-avatar>\n\n <!-- recorder name -->\n <ion-label>\n <ion-card-subtitle translate>COMMON.RECORDER</ion-card-subtitle>\n <ion-card-title>{{value.recorderPerson?.firstName}} {{value.recorderPerson?.lastName}}</ion-card-title>\n <ion-card-subtitle>{{value.recorderDepartment?.label}}</ion-card-subtitle>\n </ion-label>\n </ion-item>\n\n <ion-card-content>\n <ion-label class=\"ion-text-wrap status\">\n <!-- creation date -->\n <ion-text *ngIf=\"value.creationDate\">\n <ion-icon name=\"calendar\"></ion-icon>&nbsp;\n <span translate>COMMON.CREATED_ON</span>\n <span>\n <b>{{ value.creationDate | dateFormat: {time: true} }}</b>\n </span>\n </ion-text>\n\n <!-- update date -->\n <ion-text *ngIf=\"value.updateDate && value.updateDate != value.creationDate\">\n <br *ngIf=\"value.creationDate\"/>\n <ion-label>\n <ion-icon name=\"time-outline\"></ion-icon>&nbsp;\n <span translate>COMMON.UPDATED_ON</span>\n <span>&nbsp;{{ value.updateDate | dateFormat: {time: true, seconds: true} }}</span>\n </ion-label>\n </ion-text>\n\n </ion-label>\n\n <ng-content></ng-content>\n\n </ion-card-content>\n </ion-card>\n</ng-container>\n","styles":["ion-card ion-avatar{height:40px;width:40px}ion-card ion-avatar img,ion-card ion-avatar svg{border:1px solid rgba(0,0,0,.2)}ion-card ion-avatar img{background-color:var(--ion-color-secondary)!important}ion-card ion-avatar svg{border-radius:20px;height:38px;width:38px}ion-card ion-card-content{background-color:var(--ion-color-light-tint)}ion-card ion-card-content * ion-label.status,ion-card ion-card-content ion-label.status{font-size:12px!important;color:var(--ion-color-step-850)}"]}]}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"showRecorder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}]}},"AppForm":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":11,"character":1}}],"members":{"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"errorTranslatorOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":123,"character":3}}]}],"onSubmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":126,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":130,"character":14},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroup","line":131,"character":11}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"setForm":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"updateValueAndValidity":[{"__symbolic":"method"}],"translateControlPath":[{"__symbolic":"method"}],"getFormError":[{"__symbolic":"method"}],"getI18nFieldName":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"registerAutocompleteField":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"IAppFormGetter":{"__symbolic":"interface"},"OnReady":{"__symbolic":"interface"},"IAppForm":{"__symbolic":"interface"},"AppNullForm":{"__symbolic":"class","members":{"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}]}},"AppFormProvider":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":86,"character":32,"module":"./src/app/core/form/form.utils"}]}],"waitDelegate":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}]},"statics":{"NULL_FORM":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"AppNullForm"}}}},"AppFormUtils":{"__symbolic":"class","members":{},"statics":{"copyEntity2Form":{"__symbolic":"reference","name":"copyEntity2Form"},"getFormValueFromEntity":{"__symbolic":"reference","name":"getFormValueFromEntity"},"logFormErrors":{"__symbolic":"reference","name":"logFormErrors"},"getControlFromPath":{"__symbolic":"reference","name":"getControlFromPath"},"filterNumberInput":{"__symbolic":"reference","module":"../../shared/inputs","name":"filterNumberInput","line":174,"character":29},"disableControls":{"__symbolic":"reference","name":"disableControls"},"selectInputContent":{"__symbolic":"reference","module":"../../shared/inputs","name":"selectInputContent","line":176,"character":30},"markAsTouched":{"__symbolic":"reference","name":"markAllAsTouched"},"markAllAsTouched":{"__symbolic":"reference","name":"markAllAsTouched"},"markAsUntouched":{"__symbolic":"reference","name":"markAsUntouched"},"waitWhilePending":{"__symbolic":"reference","name":"waitWhilePending"},"waitIdle":{"__symbolic":"reference","name":"waitIdle"},"updateValueAndValidity":{"__symbolic":"reference","name":"updateValueAndValidity"},"getFormErrors":{"__symbolic":"reference","name":"getFormErrors"},"isForm":{"__symbolic":"function","parameters":["object"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"object"},"right":{"__symbolic":"reference","name":"AppFormProvider"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"in","left":"dirty","right":{"__symbolic":"reference","name":"object"}},"right":{"__symbolic":"binop","operator":"in","left":"enabled","right":{"__symbolic":"reference","name":"object"}}},"right":{"__symbolic":"binop","operator":"in","left":"valid","right":{"__symbolic":"reference","name":"object"}}}}},"addValueInArray":{"__symbolic":"reference","name":"addValueInArray"},"removeValueInArray":{"__symbolic":"reference","name":"removeValueInArray"},"resizeArray":{"__symbolic":"reference","name":"resizeArray"},"clearValueInArray":{"__symbolic":"reference","name":"clearValueInArray"},"calculatedSuffix":"Calculated","isControlHasInput":{"__symbolic":"reference","name":"isControlHasInput"},"setCalculatedValue":{"__symbolic":"reference","name":"setCalculatedValue"},"resetCalculatedValue":{"__symbolic":"reference","name":"resetCalculatedValue"}}},"copyEntity2Form":{"__symbolic":"function"},"getFormValueFromEntity":{"__symbolic":"function","parameters":["entity","form"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"adaptValueToControl"},"arguments":[{"__symbolic":"reference","name":"entity"},{"__symbolic":"reference","name":"form"}]}},"adaptValueToControl":{"__symbolic":"function"},"logFormErrors":{"__symbolic":"function"},"FormErrors":{"__symbolic":"interface"},"getFormErrors":{"__symbolic":"function"},"getControlFromPath":{"__symbolic":"function"},"disableControls":{"__symbolic":"function"},"addValueInArray":{"__symbolic":"function"},"resizeArray":{"__symbolic":"function"},"removeValueInArray":{"__symbolic":"function"},"clearValueInArray":{"__symbolic":"function"},"markAllAsTouched":{"__symbolic":"function"},"markFormGroupAsTouched":{"__symbolic":"function"},"markControlAsTouched":{"__symbolic":"function"},"updateValueAndValidity":{"__symbolic":"function"},"markAsUntouched":{"__symbolic":"function"},"waitWhilePending":{"__symbolic":"function"},"waitIdle":{"__symbolic":"function"},"isControlHasInput":{"__symbolic":"function","parameters":["controls","controlName"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"select","expression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"controls"},"index":{"__symbolic":"reference","name":"controlName"}},"member":"value"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"toBoolean"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"controls"},"index":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"reference","name":"controlName"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AppFormUtils"},"member":"calculatedSuffix"}}},"member":"value"},false]}}}},"setCalculatedValue":{"__symbolic":"function"},"resetCalculatedValue":{"__symbolic":"function"},"FormArrayHelperOptions":{"__symbolic":"interface"},"FormArrayHelper":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormArray","line":676,"character":33},{"__symbolic":"error","message":"Expression form not supported","line":677,"character":27,"module":"./src/app/core/form/form.utils"},{"__symbolic":"error","message":"Expression form not supported","line":678,"character":20,"module":"./src/app/core/form/form.utils"},{"__symbolic":"error","message":"Expression form not supported","line":679,"character":21,"module":"./src/app/core/form/form.utils"},{"__symbolic":"reference","name":"any"}]}],"add":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"resize":[{"__symbolic":"method"}],"clearAt":[{"__symbolic":"method"}],"isLast":[{"__symbolic":"method"}],"removeAllEmpty":[{"__symbolic":"method"}],"size":[{"__symbolic":"method"}],"at":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"setAllowEmptyArray":[{"__symbolic":"method"}]}},"FormButtonsBarToken":{"__symbolic":"class","members":{}},"FormButtonsBarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-form-buttons-bar","providers":[{"provide":{"__symbolic":"reference","name":"FormButtonsBarToken"},"useExisting":{"__symbolic":"reference","name":"FormButtonsBarComponent"}}],"template":"<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col>\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n","styles":[":host{width:100%}:host ion-toolbar{height:var(--app-form-buttons-bar-height);padding:0 6px}:host ion-col{padding:0}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"disabledCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"onSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"onNext":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"onBack":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Hotkeys"}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ItemButton":{"__symbolic":"interface"},"AppListFormOptions":{"__symbolic":"interface"},"AppListForm":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":36,"character":1},"arguments":[{"selector":"app-list-form","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":40,"character":19},"member":"OnPush"},"template":"\n<ng-container *ngIf=\"!loading; else listSkeleton\">\n\n <!-- List -->\n <ion-list class=\"ion-no-padding\" >\n\n <ng-container *ngFor=\"let itemControl of itemControls; index as i; last as last\">\n <ion-item *ngIf=\"itemControl.value; let item\"\n [class.disabled]=\"disabled\" tappable\n (click)=\"onItemClick($event, item)\"\n [color]=\"selection.isSelected(item) ? 'secondary100' : undefined\"\n [button]=\"selectionChanges.observers.length > 0\">\n <ion-label>{{displayWith(item)}}</ion-label>\n\n <!-- buttons -->\n <ion-buttons slot=\"end\" *ngIf=\"enabled\" class=\"action-buttons\">\n <ion-button fill=\"clear\" (click)=\"removeAt(i)\">\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n\n <ion-button *ngFor=\"let button of options.buttons\"\n fill=\"clear\" [color]=\"button.color\"\n [class.cdk-visually-hidden]=\"button.disabled|async\"\n (click)=\"onItemButtonClick(button, $event, item, i)\"\n [title]=\"(button.title || '')|translate\">\n <ion-icon slot=\"icon-only\" [name]=\"button.icon\"></ion-icon>\n </ion-button>\n\n </ion-buttons>\n </ion-item>\n </ng-container>\n </ion-list>\n\n <!-- Add button -->\n <ion-button color=\"tertiary\" fill=\"clear\"\n *ngIf=\"enabled && onNewItem.observers.length; else emptyText\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"onNewClick($event)\" >\n <ion-icon slot=\"start\" name=\"add\"></ion-icon>\n <ion-label translate>COMMON.BTN_ADD</ion-label>\n </ion-button>\n\n <!-- Empty (if readonly) -->\n <ng-template #emptyText>\n <ion-text *ngIf=\"!length\" color=\"medium\"><i translate>COMMON.EMPTY_OPTION</i></ion-text>\n </ng-template>\n</ng-container>\n\n<ng-template #listSkeleton>\n\n <ion-list>\n <ng-container *ngTemplateOutlet=\"itemSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemSkeleton\"></ng-container>\n </ion-list>\n\n</ng-template>\n\n<ng-template #itemSkeleton>\n\n <ion-item>\n <ion-label>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </ion-label>\n </ion-item>\n\n</ng-template>\n","styles":[":host{--ion-item-background-selected:var(--ion-color-secondary100);--ion-item-text-color-selected:var(--ion-color-secondary100-contrast);--ion-item-icon-color-selected:var(--ion-color-secondary100-contrast)}ion-item.disabled ion-label{color:var(--ion-color-medium-shade,grey)}ion-item .action-buttons{visibility:hidden;display:none}ion-item:hover{height:48px!important}ion-item:hover .action-buttons{margin-top:-1px;visibility:visible;display:block}ion-item.selected{background:var(--ion-item-background-selected)!important;--color-hover:var(--ion-item-background-selected)!important}ion-item.selected ion-label,ion-item.selected ion-text{color:var(--ion-item-text-color-selected)!important}ion-item.selected:hover{--color-hover:var(--ion-item-background-selected)!important;--ion-item-icon-color-selected:var(--ion-item-icon-color)!important;--ion-item-text-color-selected:var(--ion-item-text-color)!important}"]}]}],"members":{"formArrayName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"formArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"displayWithFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3},"arguments":["displayWith"]}]}],"equalsFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3},"arguments":["equals"]}]}],"onNewItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":53,"character":3}}]}],"selectionChanges":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":116,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":111,"character":24},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":112,"character":27},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":113,"character":39}]},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":115,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":116,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"isAllSelected":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"onItemClick":[{"__symbolic":"method"}],"onItemButtonClick":[{"__symbolic":"method"}],"hasSelection":[{"__symbolic":"method"}],"onNewClick":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"displayWith":[{"__symbolic":"method"}],"createControl":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AppPropertiesForm":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-properties-form","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":15,"character":19},"member":"OnPush"},"template":"\n<!-- Properties -->\n<form [formGroup]=\"form\" class=\"form-container\">\n <ion-grid *ngIf=\"!loading; else propertiesSkeleton\"\n formArrayName=\"properties\" class=\"ion-no-padding\" >\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding ion-align-self-end\" size=\"12\">\n <span class=\"toolbar-spacer\"></span>\n\n <!-- Show more options -->\n <ion-button color=\"light\" *ngIf=\"formArray?.length === 0\"\n [title]=\"'SETTINGS.BTN_SHOW_MORE_HELP'|translate\"\n (click)=\"helper.add()\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n <ng-container *ngFor=\"let fieldForm of fieldForms; let i=index\">\n <ion-row class=\"ion-no-padding\" [formGroupName]=\"i\">\n\n <!-- property key -->\n <ion-col size=\"6\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"never\">\n <mat-select [formControl]=\"fieldForm.controls.key\"\n [placeholder]=\"'SETTINGS.PROPERTY_KEY'|translate\"\n (selectionChange)=\"updateDefinitionAt(i)\"\n [tabindex]=\"20+i*2\"\n required>\n\n <!-- When option's key not a well known option, add it as first select option -->\n <mat-option *ngIf=\"isUnknownField(fieldForm)\" [value]=\"fieldForm.controls.key.value\">\n {{fieldForm.controls.key.value}}\n </mat-option>\n\n <mat-option *ngFor=\"let item of definitions\" [value]=\"item.key\">{{ item.label | translate }}\n </mat-option>\n\n </mat-select>\n\n <mat-error *ngIf=\"fieldForm.controls.key.hasError('required') && !helper.isLast(i)\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n </ion-col>\n\n <!-- property value -->\n <ion-col class=\"ion-no-padding\" padding-left >\n <app-form-field *ngIf=\"getDefinitionAt(i) else unknownValue; let definition; \"\n floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"fieldForm.controls.value\"\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [required]=\"true\"\n [tabindex]=\"20+i*2 + 1\">\n </app-form-field>\n <ng-template #unknownValue>\n <mat-form-field floatLabel=\"never\">\n <input type=\"text\" matInput\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [formControl]=\"fieldForm.controls.value\"\n [required]=\"true\"\n [tabindex]=\"20+i*2 + 1\">\n </mat-form-field>\n </ng-template>\n </ion-col>\n\n <ion-col size=\"auto\" class=\"ion-no-padding\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"disabled\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"removeAt(i)\">\n <mat-icon>close</mat-icon>\n </button>\n <button [hidden]=\"!helper.isLast(i)\"\n type=\"button\"\n mat-icon-button\n color=\"light\"\n [disabled]=\"disabled\"\n [title]=\"'SETTINGS.BTN_ADD_PROPERTY'|translate\"\n (click)=\"helper.add()\">\n <mat-icon>add</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n </ng-container>\n </ion-grid>\n</form>\n\n<ng-template #propertiesSkeleton>\n\n <ion-grid class=\"ion-no-padding\">\n <ng-container *ngTemplateOutlet=\"propertyRowSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"propertyRowSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"propertyRowSkeleton\"></ng-container>\n </ion-grid>\n\n</ng-template>\n\n<ng-template #propertyRowSkeleton>\n\n <ion-row>\n <!-- property key -->\n <ion-col>\n <mat-form-field>\n <input matInput hidden>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n <ion-icon name=\"arrow-dropdown\" matSuffix></ion-icon>\n </mat-form-field>\n </ion-col>\n <!-- value -->\n <ion-col>\n <mat-form-field>\n <input matInput hidden>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </mat-form-field>\n </ion-col>\n <!-- buttons -->\n <ion-col size=\"2\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"true\">\n <mat-icon>close</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n\n</ng-template>\n"}]}],"members":{"formArrayName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"formArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"definitions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":44,"character":14},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":45,"character":27},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":46,"character":39}]},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":48,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":49,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"getDefinitionAt":[{"__symbolic":"method"}],"updateDefinitionAt":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"isUnknownField":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"getPropertyFormGroup":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SETTINGS_DISPLAY_COLUMNS":"displayColumns","SETTINGS_SORTED_COLUMN":"sortedColumn","SETTINGS_FILTER":"filter","SETTINGS_PAGE_SIZE":"pageSize","DEFAULT_PAGE_SIZE":20,"DEFAULT_PAGE_SIZE_OPTIONS":[20,50,100,200,500],"RESERVED_START_COLUMNS":["select","id"],"RESERVED_END_COLUMNS":["actions"],"DEFAULT_REQUIRED_COLUMNS":["id"],"CellValueChangeListener":{"__symbolic":"class","members":{}},"IModalDetailOptions":{"__symbolic":"interface"},"SaveActionType":{"__symbolic":"interface"},"AppTable":{"__symbolic":"class","arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1}}],"members":{"settingsId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"i18nColumnPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3}}]}],"i18nColumnSuffix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3}}]}],"autoLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":134,"character":3}}]}],"readOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":135,"character":3}}]}],"inlineEdition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"focusFirstColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":137,"character":3}}]}],"confirmBeforeDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3}}]}],"confirmBeforeCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":139,"character":3}}]}],"undoableDeletion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":140,"character":3}}]}],"saveBeforeDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":141,"character":3}}]}],"keepEditedRowOnSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3}}]}],"saveBeforeSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":143,"character":3}}]}],"saveBeforeFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":144,"character":3}}]}],"propagateRowError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":145,"character":3}}]}],"defaultSortBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":147,"character":3}}]}],"defaultSortDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":148,"character":3}}]}],"defaultPageSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":149,"character":3}}]}],"defaultPageSizeOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":150,"character":3}}]}],"focusColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":153,"character":3}}]}],"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":163,"character":3}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":171,"character":3}}]}],"onRefresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":183,"character":3}}]}],"onOpenRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":184,"character":3}}]}],"onNewRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":185,"character":3}}]}],"onStartEditingRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":186,"character":3}}]}],"onConfirmEditCreateRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":187,"character":3}}]}],"onCancelOrDeleteRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":188,"character":3}}]}],"onBeforeDeleteRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":189,"character":3}}]}],"onBeforeCancelRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":190,"character":3}}]}],"onBeforeSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":191,"character":3}}]}],"onAfterDeletedRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":192,"character":3}}]}],"onSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":193,"character":3}}]}],"onDirty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":194,"character":3}}]}],"onError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":195,"character":3}}]}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":228,"character":3}}]}],"markAsDirty":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsSaving":[{"__symbolic":"method"}],"markAsSaved":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markRowAsDirty":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"enableSort":[{"__symbolic":"method"}],"disableSort":[{"__symbolic":"method"}],"paginator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":379,"character":3}}]}],"table":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":387,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/table","name":"MatTable","line":387,"character":13},{"static":false}]}]}],"childPaginator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":388,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginator","line":388,"character":13},{"static":false}]}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":389,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":389,"character":13},{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":392,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":393,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":394,"character":24},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":395,"character":24},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":396,"character":25},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","name":"EntitiesTableDataSource"},{"__symbolic":"error","message":"Could not resolve type","line":400,"character":22,"context":{"typeName":"F"},"module":"./src/app/core/table/table.class"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":401,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}],"setDatasource":[{"__symbolic":"method"}],"resetDataSource":[{"__symbolic":"method"}],"addColumnDef":[{"__symbolic":"method"}],"removeColumnDef":[{"__symbolic":"method"}],"setFilter":[{"__symbolic":"method"}],"confirmAndAdd":[{"__symbolic":"method"}],"confirmAndBackward":[{"__symbolic":"method"}],"confirmAndForward":[{"__symbolic":"method"}],"editRowById":[{"__symbolic":"method"}],"confirmEditCreate":[{"__symbolic":"method"}],"cancelOrDelete":[{"__symbolic":"method"}],"addRow":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"duplicateRow":[{"__symbolic":"method"}],"isAllSelected":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"deleteSelection":[{"__symbolic":"method"}],"deleteRow":[{"__symbolic":"method"}],"deleteRows":[{"__symbolic":"method"}],"selectRowById":[{"__symbolic":"method"}],"selectRowByData":[{"__symbolic":"method"}],"clickRow":[{"__symbolic":"method"}],"moveRow":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"openSelectColumnsModal":[{"__symbolic":"method"}],"trackByFn":[{"__symbolic":"method"}],"doRefresh":[{"__symbolic":"method"}],"getCurrentColumns":[{"__symbolic":"method"}],"escapeEditingRow":[{"__symbolic":"method"}],"translateControlPath":[{"__symbolic":"method"}],"editRow":[{"__symbolic":"method"}],"selectRowByIdOrData":[{"__symbolic":"method"}],"canDeleteRows":[{"__symbolic":"method"}],"canCancelRows":[{"__symbolic":"method"}],"saveBeforeAction":[{"__symbolic":"method"}],"openRow":[{"__symbolic":"method"}],"openNewRowDetail":[{"__symbolic":"method"}],"getRequiredColumns":[{"__symbolic":"method"}],"getUserColumns":[{"__symbolic":"method"}],"getSortedColumn":[{"__symbolic":"method"}],"getPageSize":[{"__symbolic":"method"}],"getDisplayColumns":[{"__symbolic":"method"}],"updateColumns":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"unregisterSubscription":[{"__symbolic":"method"}],"registerAutocompleteField":[{"__symbolic":"method"}],"getI18nColumnName":[{"__symbolic":"method"}],"generateTableId":[{"__symbolic":"method"}],"addRowToTable":[{"__symbolic":"method"}],"registerCellValueChanges":[{"__symbolic":"method"}],"setShowColumn":[{"__symbolic":"method"}],"getShowColumn":[{"__symbolic":"method"}],"startsWithUpperCase":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"askDeleteConfirmation":[{"__symbolic":"method"}],"askCancelConfirmation":[{"__symbolic":"method"}],"askRestoreConfirmation":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"resetError":[{"__symbolic":"method"}],"getRowError":[{"__symbolic":"method"}],"setError":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}],"setLoading":[{"__symbolic":"method"}],"deleteNewRow":[{"__symbolic":"method"}],"cancelExistingRow":[{"__symbolic":"method"}],"checkIfPristine":[{"__symbolic":"method"}],"applyFilter":[{"__symbolic":"method"}],"listenDatasourceLoading":[{"__symbolic":"method"}],"startCellValueChanges":[{"__symbolic":"method"}],"stopCellValueChanges":[{"__symbolic":"method"}]}},"AppTableUtils":{"__symbolic":"class","members":{}},"AppInMemoryTable":{"__symbolic":"class","arity":3,"extends":{"__symbolic":"reference","name":"AppTable"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":13,"character":1}}],"members":{"canEdit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"canDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":33,"character":24},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"error","message":"Expression form not supported","line":35,"character":24,"module":"./src/app/core/table/memory-table.class"},{"__symbolic":"reference","name":"InMemoryEntitiesService"},{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":37,"character":32},{"__symbolic":"reference","name":"AppTableDataSourceOptions"},{"__symbolic":"error","message":"Could not resolve type","line":39,"character":13,"context":{"typeName":"F"},"module":"./src/app/core/table/memory-table.class"}]}],"ngOnInit":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]}},"AppTableDataServiceOptions":{"__symbolic":"interface"},"AppTableDataSourceOptions":{"__symbolic":"class","arity":3,"members":{}},"EntitiesTableDataSource":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"TableDataSource","line":41,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":34,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":85,"character":24,"module":"./src/app/core/table/entities-table-datasource.class"},{"__symbolic":"reference","name":"IEntitiesService"},{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":87,"character":33},{"__symbolic":"reference","name":"AppTableDataSourceOptions"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"updateDatasource":[{"__symbolic":"method"}],"createNew":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"confirmCreate":[{"__symbolic":"method"}],"confirmEdit":[{"__symbolic":"method"}],"startEdit":[{"__symbolic":"method"}],"cancelOrDelete":[{"__symbolic":"method"}],"handleError":[{"__symbolic":"method"}],"handleErrorPromise":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"getRows":[{"__symbolic":"method"}],"asyncCreateNew":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}]}},"ColumnItem":{"__symbolic":"interface"},"TableSelectColumnsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"table-select-columns","template":"<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n"}]}],"members":{"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"canHideColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"NavParams","line":22,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":23,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"onRenderItems":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}]}},"ActionsColumnComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-actions-column","template":"<ng-container matColumnDef=\"actions\" [stickyEnd]=\"stickyEnd\">\n <th mat-header-cell *matHeaderCellDef [class]=\"classList\" [class.mat-column-sticky]=\"stickyEnd\">\n <button mat-icon-button\n *ngIf=\"optionsClick.observers | isNotEmptyArray\"\n [title]=\"optionsTitle | translate\"\n (click)=\"optionsClick.emit($event)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <ng-content select=\"[matHeader]\"></ng-content>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class]=\"classList\">\n <ng-container *ngIf=\"row.editing; else view\">\n\n <!-- pending -->\n <ion-spinner *ngIf=\"row.validator?.pending\" name=\"dots\" class=\"center\"></ion-spinner>\n\n <!-- new row -->\n <ng-container *ngIf=\"row.id === -1; else existingRow\">\n\n <!-- delete button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canDelete && row.validator.invalid\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n\n <!-- add button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"!canForward && canConfirmAndAdd && row.validator.valid\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"confirmAndAddClick.emit({event: $event, row: row})\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button style=\"color: transparent; width: 0; padding: 0; margin: 0;\"\n *ngIf=\"canForward && row.validator.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-container>\n\n <!-- existing row -->\n <ng-template #existingRow>\n <!-- cancel button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canCancel && row.validator.dirty\"\n [title]=\"'COMMON.BTN_UNDO' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>undo</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button style=\"color: transparent; width: 0; padding: 0; margin: 0;\"\n *ngIf=\"canForward && row.validator.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n </ng-container>\n\n <ng-template #view>\n <!-- dirty icon -->\n <ion-icon *ngIf=\"dirtyIcon && row.validator?.dirty\" [name]=\"dirtyIcon\" color=\"accent\" class=\"dirty-icon\"></ion-icon>\n\n <!-- backward button (invisible - focusable only) -->\n <button mat-icon-button style=\"color: transparent; width: 0; padding: 0; margin: 0;\"\n *ngIf=\"canBackward\"\n (focus)=\"this.backward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: row }\"></ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef>\n <ng-content select=\"[matFooter]\"></ng-content>\n </td>\n</ng-container>\n"}]}],"members":{"columnDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":12,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/table","name":"MatColumnDef","line":12,"character":13}]}]}],"matMenuTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuTrigger","line":13,"character":13}]}]}],"stickyEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"canCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"canDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"canBackward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"canForward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"canConfirmAndAdd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"dirtyIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"optionsTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3},"arguments":["class"]}]}],"cellTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"optionsClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":26,"character":3}}]}],"cancelOrDeleteClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"confirmAndAddClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"backward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"forward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatTable","module":"@angular/material/table","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"getRandomImage":{"__symbolic":"function"},"APP_HOME_BUTTONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":37,"character":36},"arguments":["homeButton"]},"HomePage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":39,"character":1},"arguments":[{"moduleId":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"module"},"member":"id"},"member":"toString"}},"selector":"app-page-home","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":44,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"reference","name":"fadeInAnimation"},{"__symbolic":"reference","name":"slideUpDownAnimation"}],"template":"<app-toolbar [canGoBack]=\"false\"\n visible-xs visible-sm visible-mobile>\n\n <!-- change locale button -->\n <ion-button slot=\"end\" *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n</app-toolbar>\n\n<!-- change locale menu -->\n<mat-menu #localeMenu=\"matMenu\">\n <button *ngFor=\"let item of locales\"\n mat-menu-item\n (click)=\"changeLanguage(item.key)\">\n <ion-label>{{item.value}}</ion-label>\n </button>\n</mat-menu>\n\n<ion-content [ngStyle]=\"contentStyle\" no-padding-xs>\n\n <!-- loading spinner -->\n <div class=\"loading-page\" [class.cdk-visually-hidden]=\"!loading\">\n <div class=\"spinner\" *ngIf=\"loading && showSpinner\">\n <p>Loading...</p>\n <div class=\"sk-cube1 sk-cube\"></div>\n <div class=\"sk-cube2 sk-cube\"></div>\n <div class=\"sk-cube4 sk-cube\"></div>\n <div class=\"sk-cube3 sk-cube\"></div>\n </div>\n </div>\n\n <!-- Desktop: translucent top toolbar -->\n <div hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar translucent>\n <ion-buttons slot=\"start\">\n <ion-menu-toggle>\n <ion-button color=\"light\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n\n <ion-buttons slot=\"end\">\n <!-- change locale button -->\n <ion-button color=\"secondary\" fill=\"solid\"\n *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </div>\n\n <!-- Install (and upgrade) card -->\n <app-install-upgrade-card [isLogin]=\"isLogin\"\n showInstallButton=\"true\">\n </app-install-upgrade-card>\n\n <!-- Welcome card -->\n <ion-card *ngIf=\"!loading\"\n class=\"main welcome ion-padding ion-text-center ion-align-self-center\"\n @fadeInAnimation>\n <ion-card-header>\n <ion-card-title class=\"ion-text-center\">\n <span *ngIf=\"isWeb\" [innerHTML]=\"'HOME.WELCOME_WEB'|translate: {appName: appName}\"></span>\n <span *ngIf=\"!isWeb\" [innerHTML]=\"'HOME.WELCOME_APP'|translate: {appName: appName}\"></span>\n </ion-card-title>\n <ion-card-subtitle [innerHTML]=\"description\">\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content class=\"ion-no-padding\">\n <ion-text color=\"primary\">\n <img class=\"logo\" *ngIf=\"logo\" src=\"{{ logo }}\">\n </ion-text>\n <!-- register help text -->\n <ion-text *ngIf=\"!isLogin && canRegister\">\n <br/>\n <span translate>HOME.REGISTER_HELP</span>\n </ion-text>\n </ion-card-content>\n\n <ion-footer class=\"ion-padding-top\">\n\n <!-- If NOT login -->\n <ng-container *ngIf=\"!isLogin; else loginButtons;\">\n\n <ion-button *ngIf=\"canRegister\" expand=\"block\" color=\"tertiary\" (click)=\"register()\">\n <span translate>HOME.BTN_REGISTER</span>\n </ion-button>\n <ion-button expand=\"block\" color=\"light\" [routerLink]=\"['/']\" (click)=\"login()\">\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n </ng-container>\n\n <!-- If user login -->\n <ng-template #loginButtons>\n\n <!-- Feature buttons -->\n <ng-container *ngIf=\"$filteredButtons | async as buttons\">\n <ng-container *ngFor=\"let item of buttons\">\n <ion-button *ngIf=\"item.path\"\n expand=\"block\" color=\"tertiary\"\n [class]=\"item.cssClass\"\n [routerLink]=\"item.path\"\n routerDirection=\"root\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-text>{{'HOME.BTN_DATA_ENTRY'|translate: {name: (item.title | translate) } }}</ion-text>\n </ion-button>\n\n <!-- divider -->\n <div *ngIf=\"!item.path && !item.action\" [class]=\"item.cssClass\">\n <ion-label translate>{{item.title}}&nbsp;</ion-label>\n </div>\n </ng-container>\n\n <!--<p *ngIf=\"buttons.length\" class=\"visible-mobile\">&nbsp;</p>-->\n </ng-container>\n\n <ion-button expand=\"block\" color=\"secondary\" [routerLink]=\"['/account']\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" name=\"person-circle\"></ion-icon>\n <ion-text translate>HOME.BTN_MY_ACCOUNT</ion-text>\n </ion-button>\n\n <p hidden-xs hidden-sm hidden-mobile>\n <ion-text [innerHTML]=\"'HOME.NOT_THIS_ACCOUNT_QUESTION' | translate: {displayName: accountName }\"></ion-text>\n <br/>\n <ion-text>\n <a href=\"#\" (click)=\"logout($event)\">\n <span translate>HOME.BTN_DISCONNECT</span>\n </a>\n </ion-text>\n </p>\n\n\n </ng-template>\n\n </ion-footer>\n </ion-card>\n\n <!-- Page history -->\n <ion-grid *ngIf=\"!loading && isLogin && pageHistory.length; else bottomBanner\"\n class=\"history-container ion-align-self-center\">\n <ion-row>\n <ion-col size=\"12\" size-xl=\"\" *ngFor=\"let page of pageHistory; trackBy: getPagePath\"\n class=\"ion-text-center\">\n <ion-card class=\"ion-align-self-start ion-text-start\" @fadeInAnimation>\n <ion-card-header class=\"ion-no-padding\">\n <!-- top bar -->\n <ion-card-subtitle>\n <button type=\"button\" tabindex=\"-1\"\n (click)=\"settings.removePageHistory(page.path)\"\n mat-icon-button class=\"ion-float-start ion-no-margin\">\n <mat-icon>close</mat-icon>\n </button>\n <ion-label [innerHTML]=\"page.subtitle|translate\"></ion-label>\n <ion-text class=\"ion-float-end\" [title]=\"page.time|dateFormat:{time: true}\">\n <small><ion-icon name=\"time-outline\"></ion-icon>&nbsp;{{ page.time|dateFromNow }}</small>&nbsp;\n </ion-text>\n </ion-card-subtitle>\n\n <!-- main page -->\n <ion-card-title class=\"ion-no-margin ion-no-padding\">\n <ion-item detail=\"true\"\n tappable class=\"text-1x\"\n [routerLink]=\"page.path\"\n routerDirection=\"root\" lines=\"none\">\n <!-- page icon-->\n <ion-icon *ngIf=\"page.icon\" slot=\"start\" [name]=\"page.icon\"></ion-icon>\n <mat-icon *ngIf=\"page.matIcon\" slot=\"start\">{{page.matIcon}}</mat-icon>\n\n <ion-label color=\"primary\" [title]=\"page.title\">{{page.title}}</ion-label>\n </ion-item>\n </ion-card-title>\n </ion-card-header>\n\n <!-- children pages -->\n <ion-card-content class=\"ion-no-padding ion-padding-start\" *ngIf=\"page.children?.length\">\n <ion-list class=\"ion-no-padding\">\n <ion-item detail=\"true\"\n *ngFor=\"let childPage of page.children\"\n tappable class=\"text-1x\"\n [routerLink]=\"childPage.path\"\n routerDirection=\"root\">\n <!-- page icon-->\n <ion-icon *ngIf=\"childPage.icon\" slot=\"start\" color=\"dark\" [name]=\"childPage.icon\"></ion-icon>\n <mat-icon *ngIf=\"childPage.matIcon\" slot=\"start\" color=\"dark\">{{childPage.matIcon}}</mat-icon>\n\n <ion-label color=\"dark\" [innerHTML]=\"childPage.title\"></ion-label>\n </ion-item>\n </ion-list>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Display configured Departments logos -->\n <ng-template #bottomBanner>\n <div class=\"bottom-banner ion-text-center ion-padding\" *ngIf=\"!loadingBanner\" @fadeInAnimation>\n <a href=\"{{ item.siteUrl }}\" *ngFor=\"let item of $partners | async \">\n <img class=\"logo\" src=\"{{ item.logo }}\" alt=\"{{item.label}}\" [title]=\"item.label\" />\n </a>\n </div>\n </ng-template>\n\n\n</ion-content>\n","styles":["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":86,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":87,"character":5},"arguments":[{"__symbolic":"reference","name":"APP_LOCALES"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":88,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":88,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_HOME_BUTTONS"}]}]],"parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":78,"character":23},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":79,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":80,"character":29},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":83,"character":16},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"LocalSettingsService"},null,{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"LocaleConfig"}]},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"MenuItem"}]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"changeLanguage":[{"__symbolic":"method"}],"getPagePath":[{"__symbolic":"method"}],"tryOnline":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"onConfigLoaded":[{"__symbolic":"method"}],"onSettingsChanged":[{"__symbolic":"method"}],"onLogin":[{"__symbolic":"method"}],"onLogout":[{"__symbolic":"method"}],"refreshButtons":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SettingsPage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"page-settings","providers":[{"provide":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":27,"character":14},"useExisting":{"__symbolic":"reference","name":"ɵk"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":29,"character":19},"member":"OnPush"},"template":"<app-toolbar [title]=\"'SETTINGS.TITLE'|translate\" color=\"primary\"\n [hasValidate]=\"form.dirty && !saving\"\n [hasClose]=\"!form.dirty && !saving\"\n (onValidate)=\"save($event)\"\n (onClose)=\"close($event)\">\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"loading || saving\"></ion-spinner>\n\n <!-- options menu -->\n <ion-button [matMenuTriggerFor]=\"optionsMenu\">\n <mat-icon slot=\"icon-only\">more_vert</mat-icon>\n </ion-button>\n </ion-buttons>\n</app-toolbar>\n\n<!-- Options menu -->\n<mat-menu #optionsMenu=\"matMenu\">\n <!-- Clear cache -->\n <button mat-menu-item (click)=\"clearCache($event)\">\n <ion-label translate>SETTINGS.BTN_CLEAR_CACHE</ion-label>\n </button>\n\n <!-- Reset -->\n <button mat-menu-item\n [disabled]=\"!dirty\"\n (click)=\"cancel($event)\">\n <ion-label>\n <mat-icon><ion-icon slot=\"start\" name=\"refresh\"></ion-icon></mat-icon>&nbsp;\n <span translate>COMMON.BTN_RESET</span>\n </ion-label>\n </button>\n</mat-menu>\n\n<ion-content>\n\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"save($event)\" class=\"form-container\">\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"2\">&nbsp;\n </ion-col>\n\n <ion-col class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <p [innerHTML]=\"'SETTINGS.DESCRIPTION'|translate\"></p>\n\n <!-- account inheritance (desktop) -->\n <mat-form-field [hidden]=\"!isLogin\" *ngIf=\"!mobile; else accountInheritanceMobile\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- check box (if desktop) -->\n <mat-checkbox\n *ngIf=\"!mobile; else accountInheritanceMobile\"\n (change)=\"setAccountInheritance($event.checked)\"\n [checked]=\"accountInheritance\">\n <span translate>SETTINGS.INHERIT_FROM_ACCOUNT</span>\n </mat-checkbox>\n\n <mat-error *ngIf=\"form.controls.accountInheritance.hasError('required')\" translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- account inheritance (if mobile) -->\n <ng-template #accountInheritanceMobile>\n <mat-form-field [hidden]=\"!isLogin\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- slide toggle -->\n <ion-text translate>SETTINGS.INHERIT_FROM_ACCOUNT</ion-text>\n <mat-slide-toggle matSuffix\n (change)=\"setAccountInheritance($event.checked)\"\n [checked]=\"accountInheritance\">\n\n </mat-slide-toggle>\n <mat-error *ngIf=\"form.controls.accountInheritance.hasError('required')\" translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n </ng-template>\n\n <!-- locale -->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.LOCALE'|translate\" formControlName=\"locale\" required>\n <mat-option *ngFor=\"let item of locales\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"form.controls.locale.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Network entry -->\n <h3>\n <ion-text translate>SETTINGS.NETWORK_DIVIDER</ion-text>\n </h3>\n\n <!-- Peer address -->\n <mat-form-field>\n <input matInput type=\"text\" [placeholder]=\"'SETTINGS.PEER_URL'|translate\" formControlName=\"peerUrl\"\n required>\n\n <button mat-icon-button type=\"button\" matSuffix (click)=\"showSelectPeerModal()\" tabindex=\"-1\"\n [title]=\"'SETTINGS.BTN_CHANGE_PEER'|translate\">\n <mat-icon>search</mat-icon>\n </button>\n\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('peerAlive')\"\n translate>SETTINGS.ERROR.PEER_NOT_REACHABLE\n </mat-error>\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('peerNotCompatible')\"\n translate>SETTINGS.ERROR.PEER_NOT_COMPATIBLE\n </mat-error>\n </mat-form-field>\n\n <!-- Offline mode (if mobile) -->\n <mat-form-field *ngIf=\"mobile\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- slide toggle -->\n <ion-text translate>SETTINGS.OFFLINE_MODE</ion-text>\n <mat-slide-toggle matSuffix\n (change)=\"network.setForceOffline($event.checked)\"\n [checked]=\"network.offline\">\n\n </mat-slide-toggle>\n </mat-form-field>\n\n <!-- Data entry -->\n <h3>\n <ion-text translate>SETTINGS.DATA_ENTRY_DIVIDER</ion-text>\n </h3>\n\n <!-- Usage mode -->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.USAGE_MODE'|translate\" formControlName=\"usageMode\"\n required>\n <mat-option *ngFor=\"let item of usageModes\" [value]=\"item\">\n {{'SETTINGS.USAGE_MODES.'+item|translate}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"form.controls.usageMode.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- lat/long format-->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.LAT_LONG_FORMAT'|translate\" formControlName=\"latLongFormat\"\n required>\n <mat-option *ngFor=\"let item of latLongFormats\" [value]=\"item\">\n {{'COMMON.LAT_LONG.'+item+'_PLACEHOLDER'|translate}}\n </mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"form.controls.latLongFormat.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- fields options -->\n <ion-grid formArrayName=\"properties\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding ion-align-self-end\" size=\"12\">\n <span class=\"toolbar-spacer\"></span>\n\n <!-- Show more options -->\n <ion-button color=\"light\" *ngIf=\"propertiesForm?.length === 0\"\n [title]=\"'SETTINGS.BTN_SHOW_MORE_HELP'|translate\"\n (click)=\"propertiesFormHelper.add()\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n <!-- Fields options -->\n <ng-container *ngFor=\"let propertyForm of propertiesForm?.controls; let i=index\">\n <ion-row class=\"ion-no-padding\" [formGroupName]=\"i\">\n\n <!-- property key -->\n <ion-col class=\"ion-no-padding\">\n <mat-form-field>\n <mat-select formControlName=\"key\"\n [placeholder]=\" 'SETTINGS.PROPERTY_KEY'|translate\">\n <mat-option *ngFor=\"let item of propertyDefinitions\" [value]=\"item.key\">{{ item.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <!-- property value -->\n <ion-col class=\"ion-no-padding\" padding-left>\n <app-form-field *ngIf=\"getPropertyDefinition(i); let definition\"\n floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"propertyForm.controls.value\"\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [required]=\"true\">\n </app-form-field>\n </ion-col>\n <ion-col size=\"2\" class=\"ion-no-padding\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"loading\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"removePropertyAt(i)\">\n <mat-icon>close</mat-icon>\n </button>\n <button *ngIf=\"propertiesFormHelper.isLast(i)\"\n type=\"button\"\n mat-icon-button\n color=\"light\"\n [disabled]=\"loading\"\n [title]=\"'SETTINGS.BTN_ADD_PROPERTY'|translate\"\n (click)=\"propertiesFormHelper.add()\">\n <mat-icon>add</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n </ng-container>\n </ion-grid>\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"2\">&nbsp;\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n </form>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <app-form-buttons-bar (onCancel)=\"cancel()\" (onSave)=\"save($event)\" [disabled]=\"!form.dirty || saving\"></app-form-buttons-bar>\n</ion-footer>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":70,"character":5},"arguments":[{"__symbolic":"reference","name":"APP_LOCALES"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":59,"character":14},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":61,"character":22},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":63,"character":25},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":64,"character":25},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":65,"character":27},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":68,"character":18},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"LocaleConfig"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"getPropertyDefinition":[{"__symbolic":"method"}],"updatePropertyDefinition":[{"__symbolic":"method"}],"removePropertyAt":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"setAccountInheritance":[{"__symbolic":"method"}],"showSelectPeerModal":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"getJsonValueToSave":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AccountPage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"app-page-account","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"template":"<app-toolbar [title]=\"'ACCOUNT.TITLE'|translate\" color=\"primary\"\n [hasValidate]=\"form.dirty && !saving\"\n (onValidate)=\"save($event)\"\n [canGoBack]=\"false\">\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading || saving; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button [matTooltip]=\"'COMMON.BTN_REFRESH'|translate\"\n (click)=\"refresh($event)\">\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n</app-toolbar>\n\n<ion-content>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"save($event)\" class=\"form-container\">\n\n <mat-tab-group>\n\n <!-- TAB: user details -->\n <mat-tab label=\"{{'ACCOUNT.USER_DETAILS.TITLE'|translate}}\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <mat-icon>\n <ion-icon matPrefix slot=\"start\" name=\"person-circle\"></ion-icon>\n </mat-icon>\n <ion-label>{{'ACCOUNT.USER_DETAILS.TITLE'|translate}}</ion-label>\n <ion-icon slot=\"end\" name=\"alert-circle\" color=\"danger\" *ngIf=\"submitted && form.invalid\"></ion-icon>\n </ng-template>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;</ion-col>\n\n <ion-col class=\"ion-padding\">\n <p [innerHTML]=\"'ACCOUNT.USER_DETAILS.DESCRIPTION'|translate\"></p>\n\n <!--h1>Identité</h1-->\n\n <!-- Email -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.EMAIL'|translate\"\n formControlName=\"email\" autocomplete=\"section-red email\">\n <mat-error *ngIf=\"form.controls.email.hasError('required') && form.controls.email.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.email.hasError('email') && form.controls.email.dirty\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n <ion-grid *ngIf=\"email.notConfirmed\" class=\"ion-no-padding ion-padding-bottom\">\n <ion-row>\n <ion-col color=\"danger\">\n <ion-icon slot=\"start\" color=\"danger\" name=\"alert-circle\" color=\"danger\"></ion-icon>\n <ion-text [innerHTML]=\"'ACCOUNT.EMAIL_NOT_CONFIRMED_LABEL'|translate\"></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row style=\"height: 51px;\">\n <ion-col style=\"text-align: right;\">\n <ion-text>\n <small [innerHTML]=\"'ACCOUNT.EMAIL_NOT_RECEIVED_QUESTION'|translate\"></small>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"secondary\" *ngIf=\"!email.sending\" (click)=\"sendConfirmationEmail($event)\">\n {{'ACCOUNT.BTN_RESEND'|translate}}\n </ion-button>\n <ion-spinner class=\"ion-no-padding\" *ngIf=\"email.sending\"></ion-spinner>\n </ion-col>\n </ion-row>\n\n <ion-row *ngIf=\"email.error && !email.sending\">\n <ion-col>\n <span *ngIf=\"email.error && !email.sending\" [innerHTML]=\"email.error|translate\"></span>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Last name -->\n <mat-form-field>\n <input matInput [appAutofocus]=\"true\" [autofocusDelay]=\"500\" [placeholder]=\"'USER.LAST_NAME'|translate\"\n formControlName=\"lastName\"\n autocomplete=\"section-blue family-name\"\n required>\n <mat-error *ngIf=\"form.controls.lastName.hasError('required') && form.controls.lastName.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.lastName.hasError('minlength') && form.controls.lastName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- First name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.FIRST_NAME'|translate\" formControlName=\"firstName\" autocomplete=\"section-blue given-name\"\n required>\n <mat-error *ngIf=\"form.controls.firstName.hasError('required') && form.controls.firstName.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.firstName.hasError('minlength') && form.controls.firstName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n\n <!-- Additional fields -->\n <ng-container *ngFor=\"let definition of additionalFields\">\n <app-form-field [definition]=\"definition\"\n [formControlName]=\"definition.key\"\n [required]=\"definition.extra && definition.extra.account && definition.extra.account.required || false\">\n </app-form-field>\n </ng-container>\n\n <h3 translate>ACCOUNT.USER_DETAILS.TECHNICAL_DIVIDER</h3>\n\n <!-- profile -->\n <mat-form-field>\n <input matInput hidden readonly=\"true\" [placeholder]=\"'ACCOUNT.USER_DETAILS.PROFILE'|translate\"\n formControlName=\"mainProfile\" required>\n <span>{{'USER.PROFILE_ENUM.'+form.controls.mainProfile.value | translate}}</span>\n <mat-error *ngIf=\"form.controls.firstName.hasError('mainProfile') && form.controls.mainProfile.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- pubkey -->\n <mat-form-field>\n <input matInput readonly=\"true\" [placeholder]=\"'ACCOUNT.USER_DETAILS.PUBKEY'|translate\" formControlName=\"pubkey\"\n required>\n <mat-error *ngIf=\"form.controls.firstName.hasError('pubkey') && form.controls.firstName.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.firstName.hasError('pubkey') && form.controls.firstName.dirty\">\n <span translate>ERROR.FIELD_NOT_VALID_PUBKEY</span>\n </mat-error>\n </mat-form-field>\n\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;</ion-col>\n </ion-row>\n </ion-grid>\n </mat-tab>\n\n <!-- TAB: settings -->\n <mat-tab label=\"{{'ACCOUNT.SETTINGS.TITLE'|translate}}\" formGroupName=\"settings\">\n <ng-template mat-tab-label>\n <mat-icon>\n <ion-icon matPrefix slot=\"start\" name=\"settings\"></ion-icon>\n </mat-icon>\n <ion-label translate>ACCOUNT.SETTINGS.TITLE</ion-label>\n </ng-template>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;\n </ion-col>\n\n <ion-col class=\"ion-padding\">\n\n <p [innerHTML]=\"'ACCOUNT.SETTINGS.DESCRIPTION'|translate\"></p>\n\n <mat-form-field>\n <mat-select [placeholder]=\"'ACCOUNT.SETTINGS.LOCALE'|translate\" formControlName=\"locale\" required>\n <mat-option *ngFor=\"let item of locales\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"settingsForm.controls.locale.hasError('required') && settingsForm.controls.locale.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- lat/long format-->\n <mat-form-field>\n <mat-select [placeholder]=\"'ACCOUNT.SETTINGS.LAT_LONG_FORMAT'|translate\" formControlName=\"latLongFormat\"\n required>\n <mat-option *ngFor=\"let item of latLongFormats\" [value]=\"item\">\n {{'COMMON.LAT_LONG.'+item+'_PLACEHOLDER'|translate}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"settingsForm.controls.latLongFormat.hasError('required') && settingsForm.controls.latLongFormat.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <form formGroupName=\"content\">\n\n\n </form>\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;\n </ion-col>\n </ion-row>\n </ion-grid>\n </mat-tab>\n </mat-tab-group>\n\n\n </form>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <app-form-buttons-bar (onCancel)=\"cancel()\" (onSave)=\"save($event)\" [disabled]=\"!form.dirty || saving\"></app-form-buttons-bar>\n</ion-footer>\n","styles":["mat-tab-group .mat-tab-body-content{padding:var(--ion-grid-padding);display:grid}form,form mat-form-field{width:100%}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":54,"character":5},"arguments":[{"__symbolic":"reference","name":"APP_LOCALES"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":45,"character":14},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":46,"character":22},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":47,"character":24},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":51,"character":25},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":53,"character":18},null]}],"ngOnDestroy":[{"__symbolic":"method"}],"onLogin":[{"__symbolic":"method"}],"onLogout":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"startListenChanges":[{"__symbolic":"method"}],"stopListenChanges":[{"__symbolic":"method"}],"sendConfirmationEmail":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AuthForm":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"app-form-auth","animations":[{"__symbolic":"reference","name":"slideUpDownAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"},"template":"<form [formGroup]=\"form\" novalidate (ngSubmit)=\"doSubmit($event)\" class=\"form-container ion-padding\" (keyup.enter)=\"doSubmit($event)\">\n\n <!-- error -->\n <ion-item lines=\"none\" *ngIf=\"error && !loading\" @slideUpDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- Username -->\n <mat-form-field>\n <input matInput [appAutofocus]=\"true\" [autofocusDelay]=\"500\"\n [placeholder]=\"usernamePlaceholder|translate\"\n formControlName=\"username\"\n autocomplete=\"off\"\n required>\n <mat-error *ngIf=\"form.controls.username.hasError('required') && form.controls.username.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.username.hasError('email') && form.controls.username.dirty\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.PASSWORD'|translate\"\n formControlName=\"password\"\n autocomplete=\"section-red new-password\"\n [type]=\"showPwd ? 'text' : 'password'\"\n (keyup.enter)=\"doSubmit($event)\"\n required>\n\n <!-- Show pwd button -->\n <button matSuffix type=\"button\"\n mat-icon-button\n *ngIf=\"mobile\"\n (click)=\"showPwd = !showPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"form.controls.password.hasError('required') && form.controls.password.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"canWorkOffline\">\n <!-- Force offline (desktop) -->\n <mat-form-field hidden-xs hidden-sm hidden-mobile color=\"medium\">\n <input matInput hidden formControlName=\"offline\" type=\"text\">\n\n <!-- check box -->\n <mat-checkbox\n [disabled]=\"network.offline\"\n (change)=\"form.controls.offline.setValue($event.checked)\"\n [checked]=\"form.controls.offline.value\">\n <ion-text color=\"medium\" translate>AUTH.OFFLINE_MODE</ion-text>\n </mat-checkbox>\n </mat-form-field>\n\n <!-- Force offline (mobile) -->\n <mat-form-field visible-xs visible-sm visible-mobile\n color=\"medium\">\n <input matInput hidden formControlName=\"offline\" type=\"text\">\n <!-- slide toggle -->\n <ion-text color=\"medium\" translate>AUTH.OFFLINE_MODE</ion-text>\n <mat-slide-toggle matSuffix\n [disabled]=\"network.offline\"\n (change)=\"form.controls.offline.setValue($event.checked)\"\n [checked]=\"form.controls.offline.value\">\n </mat-slide-toggle>\n </mat-form-field>\n </ng-container>\n\n <!-- Not register yet ? -->\n <p *ngIf=\"canRegister\" class=\"padding\" style=\"text-align: center;\">\n <span translate>AUTH.NO_ACCOUNT_QUESTION</span>\n <br/>\n <a href=\"#\" (click)=\"register()\">\n <span translate>AUTH.BTN_REGISTER</span>\n </a>\n </p>\n</form>\n","styles":[""]}]}],"members":{"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"onSubmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"disable":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":48,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":48,"character":17},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":40,"character":14},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":42,"character":17},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":45,"character":23},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":47,"character":16},null]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AuthModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":19},"member":"OnPush"},"template":"<ion-header>\n <ion-toolbar color=\"accent\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'AUTH.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"loading\"></ion-spinner>\n\n <ion-button\n (click)=\"doSubmit()\" *ngIf=\"!loading\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <app-form-auth #form\n (onSubmit)=\"doSubmit()\"\n (onCancel)=\"cancel()\">\n </app-form-auth>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button [fill]=\"form.invalid ? 'clear' : 'solid'\"\n [disabled]=\"loading || form.invalid\"\n (click)=\"doSubmit()\"\n (keyup.enter)=\"doSubmit()\"\n color=\"tertiary\">\n <ion-label translate>AUTH.BTN_LOGIN</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n","styles":[""]}]}],"members":{"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":18,"character":3},"arguments":["form",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":21,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":22,"character":41}]}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"RegisterConfirmPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"page-register-confirm","template":"<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n","styles":["h1,h2,h3,h4,h5{white-space:normal}.bottom-banner,.center,ion-card,ion-card img,ion-content,ion-text{text-align:center;display:inline-block}ion-content{--ion-background-color:transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":26,"character":28},{"__symbolic":"reference","name":"ConfigService"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"doConfirm":[{"__symbolic":"method"}]}},"APP_ABOUT_DEVELOPERS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":13,"character":40},"arguments":["aboutDevelopers"]},"APP_ABOUT_PARTNERS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":38},"arguments":["aboutPartners"]},"AboutModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"modal-about","template":"<ion-header>\n <ion-toolbar color=\"light\">\n\n <ion-title>\n {{'ABOUT.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{'COMMON.BTN_CLOSE'|translate}}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <ion-list lines=\"none\">\n\n <!-- Peer info -->\n <ion-item *ngIf=\"config$ | async; let config\">\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\" >\n <h2>\n <b>{{config.label}}</b> - <span [innerHTML]=\"config.name\"></span>\n </h2>\n <p *ngIf=\"config.description\">\n <markdown [data]=\"config.description\"\n emoji>\n </markdown>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <small *ngIf=\"name\">{{'ABOUT.POWERED_BY'|translate}}</small> {{name}}\n <span *ngIf=\"version\" [innerHTML]=\"'ABOUT.VERSION'| translate: {version: version}\"></span>\n </h2>\n <p [innerHTML]=\"'ABOUT.LICENSE'| translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{'ABOUT.HELP'|translate}}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{helpUrl}}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{forumUrl}}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.REPORT_ISSUE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{reportIssueUrl}}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.SOURCE_CODE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{sourceUrl}}\" target=\"_system\">{{sourceUrl}}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.DEVELOPED_BY'|translate}}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\"\n class=\"ion-no-padding\">\n <img slot=\"end\" src=\"{{item.logo}}\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{item.siteUrl}}\" target=\"_system\">{{item.name||item.label}}</a>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{'ABOUT.PARTNERS'|translate}}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{item.siteUrl}}\" class=\"partners\" target=\"_system\">\n <img src=\"{{item.logo}}\">\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n","styles":[".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":37,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":37,"character":17},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":38,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_ABOUT_DEVELOPERS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_ABOUT_PARTNERS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":34,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":35,"character":31},{"__symbolic":"reference","name":"ConfigService"},null,{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":38,"character":65,"context":{"typeName":"Partial"},"module":"./src/app/core/about/modal-about"}]},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":39,"character":61,"context":{"typeName":"Partial"},"module":"./src/app/core/about/modal-about"}]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"setConfig":[{"__symbolic":"method"}]}},"SelectPeerModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"select-peer-modal","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"reference","name":"fadeInAnimation"}],"template":"<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" *ngIf=\"canCancel\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'NETWORK.PEER.SELECT_MODAL.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button *ngIf=\"onRefresh.observers | isNotEmptyArray\"\n [matTooltip]=\"'COMMON.BTN_REFRESH'|translate\"\n (click)=\"refresh($event)\">\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <ion-list>\n\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <p translate>NETWORK.PEER.SELECT_MODAL.HELP</p>\n </ion-label>\n </ion-list-header>\n\n <ion-item *ngFor=\"let peer of $peers | async\"\n tappable\n (click)=\"selectPeer(peer)\"\n detail\n @fadeInAnimation>\n\n <!-- icon -->\n <ion-avatar slot=\"start\" *ngIf=\"peer.reachable\" >\n <ion-img [src]=\"peer.favicon || (peer.url + '/api/favicon')\"></ion-img>\n </ion-avatar>\n <ion-icon slot=\"start\" *ngIf=\"!peer.reachable\" name=\"desktop\" color=\"medium\" class=\"ion-text-center\"></ion-icon>\n\n <!-- Peer is UP -->\n <ion-grid *ngIf=\"peer.reachable\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"dark\">\n <h3>{{peer.hostAndPort}}{{peer.path}}</h3>\n </ion-text>\n <ion-text color=\"primary\">\n <h4>{{peer.label}}</h4>\n </ion-text>\n </ion-label>\n </ion-col>\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap ion-text-center\" color=\"medium\">\n <h3>{{peer.softwareName}}</h3>\n <h4 *ngIf=\"!peerMinVersion || isCompatible(peer); else invalidVersion\">\n <small>v{{peer.softwareVersion}}</small>\n </h4>\n <ng-template #invalidVersion>\n <ion-text color=\"danger\" [matTooltip]=\"'NETWORK.PEER.SELECT_MODAL.NOT_COMPATIBLE_HELP'|translate: {version: peerMinVersion} \">\n <h4 class=\"ion-color-danger\">\n <small><mat-icon>warning</mat-icon>v{{peer.softwareVersion}}</small>\n </h4>\n </ion-text>\n </ng-template>\n </ion-label>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Peer is DOWN -->\n <ion-label class=\"ion-text-wrap\" *ngIf=\"!peer.reachable\">\n <ion-text color=\"medium\">\n <h3>{{peer.hostAndPort}}{{peer.path}}</h3>\n </ion-text>\n <ion-text color=\"danger\">\n <h4>\n <small><ion-icon size=\"small\" name=\"close-circle\"></ion-icon></small>\n <span translate>NETWORK.PEER.OFFLINE</span>\n </h4>\n </ion-text>\n </ion-label>\n </ion-item>\n </ion-list>\n\n</ion-content>\n\n\n<ion-footer *ngIf=\"canCancel\" hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n","styles":["ion-item h4 ion-icon,ion-item h4 mat-icon{height:14px;width:14px;font-size:14px;line-height:14px}ion-item h4 small ion-icon,ion-item h4 small mat-icon{height:12px;width:12px;font-size:12px;line-height:12px}"]}]}],"members":{"canCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"allowSelectDownPeer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"onRefresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":39,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":40,"character":16},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":41,"character":18},null]}],"cancel":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"selectPeer":[{"__symbolic":"method"}],"isCompatible":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"refreshPeers":[{"__symbolic":"method"}],"refreshPeer":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"InstallAppLink":{"__symbolic":"interface"},"AppInstallUpgradeCard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":34,"character":1},"arguments":[{"selector":"app-install-upgrade-card","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":38,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"reference","name":"slideUpDownAnimation"}],"template":"\n\n<!-- Offline mode card-->\n<ion-card *ngIf=\"showOfflineWarning && (!loading && offline || waitingNetwork)\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\" *ngIf=\"!waitingNetwork; else waitingNetworkText\">\n <h4>\n <b *ngIf=\"isLogin; else notLogin\" [innerHTML]=\"'NETWORK.INFO.OFFLINE_OR_UNAUTHORIZED'| translate\"></b>\n <ng-template #notLogin>\n <b [innerHTML]=\"'NETWORK.INFO.OFFLINE'| translate\"></b>\n </ng-template>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.OFFLINE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n <ng-template #waitingNetworkText>\n <ion-text class=\"ion-text-wrap\" [innerHTML]=\"'NETWORK.INFO.RETRY_TO_CONNECT'| translate\"></ion-text>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button *ngIf=\"!waitingNetwork; else waitingSpinner\" color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"tryOnline()\">\n <span translate>NETWORK.BTN_CHECK_ALIVE</span>\n </ion-button>\n\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Upgrade links -->\n<ion-card *ngIf=\"showUpgradeWarning && !loading && !offline && upgradeLinks\"\n color=\"accent\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of upgradeLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3>\n <span *ngIf=\"link.version\" [innerHTML]=\"'INFO.UPDATE_APP_TO_VERSION'| translate: link\"></span>\n <span *ngIf=\"!link.version\" [innerHTML]=\"'INFO.UPDATE_APP'| translate: link\"></span>\n </h3>\n <h4>\n <small *ngIf=\"last\" [innerHTML]=\"'INFO.UPDATE_APP_HELP'|translate\"></small>\n </h4>\n </ion-text>\n </ion-col>\n\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Install links -->\n<ion-card *ngIf=\"showInstallButton && !loading && !offline && installLinks\"\n color=\"secondary\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of installLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3 [innerHTML]=\"'INFO.DOWNLOAD_APP_TITLE'| translate: {name: link.name, platform: getPlatformName(link.platform) }\"></h3>\n <h4><small *ngIf=\"last\" [innerHTML]=\"'INFO.DOWNLOAD_APP_HELP'|translate\"></small></h4>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Update offline feature card-->\n<ion-card *ngIf=\"showUpdateOfflineFeature && !loading && !offline\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h4>\n <b [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE'| translate\"></b>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"onUpdateOfflineModeClick.emit($event)\">\n <span translate>NETWORK.BTN_UPDATE</span>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Display a download button, depending on the link URL, and the device platform -->\n<ng-template #downloadButton let-link>\n\n <ng-container *ngIf=\"link.filename; else redirectButton\">\n\n <ng-container *ngIf=\"canDownload; else webDownloadButton\">\n <!-- Download using platform -->\n <ion-button (click)=\"download($event, asLink(link))\"\n [disabled]=\"link.downloading\"\n color=\"tertiary\" class=\"ion-float-end\">\n <ion-icon slot=\"start\" *ngIf=\"!link.downloading\" name=\"download\"></ion-icon>\n <ion-spinner slot=\"start\" class=\"ion-no-padding\" *ngIf=\"link.downloading\"></ion-spinner>\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n </ng-container>\n\n <!-- Web download button -->\n <ng-template #webDownloadButton>\n <ion-button [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n</ng-template>\n\n\n<!-- Waiting spinner -->\n<ng-template #waitingSpinner>\n <ion-spinner color=\"light\"></ion-spinner>\n</ng-template>\n","styles":["ion-text small{font-size:85%}"]}]}],"members":{"isLogin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"showUpgradeWarning":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"showOfflineWarning":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"showInstallButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"showUpdateOfflineFeature":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"onUpdateOfflineModeClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":71,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":82,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":74,"character":23},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":76,"character":29},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":77,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":78,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":79,"character":16},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"NetworkService"},null]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"download":[{"__symbolic":"method"}],"tryOnline":[{"__symbolic":"method"}],"getPlatformName":[{"__symbolic":"method"}],"asLink":[{"__symbolic":"method"}],"checkNeedInstallOrUpdate":[{"__symbolic":"method"}],"getCompatibleInstallLinks":[{"__symbolic":"method"}],"getCompatibleUpgradeLinks":[{"__symbolic":"method"}],"getLinks":[{"__symbolic":"method"}],"getFilename":[{"__symbolic":"method"}],"listenDownloadJobs":[{"__symbolic":"method"}],"listenDownloadJob":[{"__symbolic":"method"}],"showDownloadFailedToast":[{"__symbolic":"method"}],"showDownloadCompleteDialog":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}]}},"APP_MENU_ITEMS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":22,"character":34},"arguments":["menuItems"]},"MenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"app-menu","animations":[{"__symbolic":"reference","name":"fadeInAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":31,"character":19},"member":"OnPush"},"template":"<ion-split-pane #splitPane contentId=\"menu-content\" (swiperight)=\"onSwipeRight($event)\">\n\n <ion-menu id=\"menu\" menuId=\"left\" contentId=\"menu-content\">\n <ion-header>\n\n <ion-toolbar @fadeInAnimation *ngIf=\"isLogin; else notLogin\" class=\"ion-toolbar-top\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"4\">\n <button type=\"button\" mat-flat-button\n class=\"user-avatar\" [class.primary]=\"!accountAvatar\"\n [style.background-image]=\"'url('+(accountAvatar||'./assets/img/person.png')+')'\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"menuClose()\">\n </button>\n </ion-col>\n <ion-col size=\"8\" class=\"user-logo\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"108px;\"/>\n <span *ngIf=\"!logo\" width=\"108px;\">{{appName}}</span>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n\n <button mat-button type=\"button\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"menuClose()\">\n <ion-label color=\"primary\" class=\"ion-text-wrap ion-text-start\">\n <h3 class=\"no-margin username\">\n <b>{{accountName}}</b>\n </h3>\n <h4>{{accountEmail}}</h4>\n </ion-label>\n </button>\n\n </ion-row>\n </ion-grid>\n\n </ion-toolbar>\n\n <!-- User not logged -->\n <ng-template #notLogin>\n <mat-toolbar class=\"ion-padding\" @fadeInAnimation\n style=\"height: unset; display: block; margin: auto; text-align: center;\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"150px;\">\n <span *ngIf=\"!logo\" style=\"width: 150px\">{{appName}}</span>\n </mat-toolbar>\n </ng-template>\n </ion-header>\n\n <ion-content [class.has-user-header]=\"isLogin\">\n\n <ion-list lines=\"none\">\n <ion-menu-toggle auto-hide=\"false\"\n [class.flex-spacer]=\"item.cssClass == 'flex-spacer'\"\n *ngFor=\"let item of $items | async\">\n\n <!-- link -->\n <ion-item *ngIf=\"!loading && item.path\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n [routerLink]=\"item.path\"\n routerDirection=\"root\"\n routerLinkActive=\"selected\"\n [routerLinkActiveOptions]=\"{exact: (item.path === '/')}\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- action -->\n <ion-item *ngIf=\"!loading && item.action\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n (click)=\"doAction(item.action, $event)\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- divider -->\n <ion-item-divider @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}}\"\n *ngIf=\"!loading && !item.path && !item.action\">\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item-divider>\n\n </ion-menu-toggle>\n </ion-list>\n </ion-content>\n\n <ion-footer class=\"hidden-xs hidden-sm\">\n <ion-toolbar>\n\n <ion-buttons slot=\"start\">\n <ion-button mat-icon-button color=\"accent\" (click)=\"openAboutModal($event)\">\n <mat-icon slot=\"icon-only\">help_outline</mat-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title (click)=\"openAboutModal($event)\" color=\"medium\">\n {{'MENU.FOOTER_VERSION_ABOUT'| translate: {version: appVersion} }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <button mat-icon-button color=\"accent\" (click)=\"toggleSplitPane($event)\"\n class=\"hidden-xs hidden-sm hidden-md\"\n [title]=\"(splitPaneOpened ? 'COMMON.BTN_HIDE_MENU' : 'COMMON.BTN_SHOW_MENU') |translate\">\n <mat-icon><span>{{splitPaneOpened ? '&#xab;' : '&#xbb;'}}</span></mat-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n </ion-footer>\n\n </ion-menu>\n\n <ng-content></ng-content>\n\n</ion-split-pane>\n","styles":["ion-menu{--ion-item-background:transparent;--ion-item-divider-background:transparent;--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint);--ion-item-background-selected:var(--ion-color-secondary100);--ion-item-text-color-selected:var(--ion-color-primary);--ion-item-icon-color-selected:var(--ion-color-primary);--ion-item-text-color-disable:var(--ion-color-medium);--ion-item-icon-color-disable:var(--ion-color-medium)}ion-menu ion-header ion-text{color:var(--ion-color-primary)}ion-menu ion-header .user-avatar{background-size:cover;background-repeat:no-repeat;background-position:50%;background-color:var(--ion-color-secondary);border:1px solid var(--ion-color-primary);overflow:hidden!important;font-size:var(--avatar-size,60px)!important;line-height:var(--avatar-size,60px);height:var(--avatar-size,60px)!important;width:var(--avatar-size,60px)!important;border-radius:50%;display:inline-block}ion-menu ion-header .user-logo{text-align:right}ion-menu ion-header .user-logo img{max-width:120px;max-height:var(--avatar-size,60px);width:auto}ion-menu ion-header .username{padding-top:0;margin-top:0;margin-bottom:0;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-menu ion-header button[mat-button]{padding:0;text-align:start!important;width:100%}ion-menu .scroll-content{margin-top:79px!important}ion-menu .has-user-header .scroll-content{margin-top:188px!important}ion-menu ion-content.has-profile-header{--offset-top:188px}ion-menu ion-content.no-profile-header{--offset-top:79px}ion-menu ion-content ion-list{min-height:100%;display:flex;flex-direction:column;justify-content:flex-start}ion-menu ion-content ion-list ion-menu-toggle.flex-spacer{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-end}ion-menu ion-content ion-list ion-item.primary{--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint)}ion-menu ion-content ion-list ion-item.secondary{--ion-item-icon-color:var(--ion-color-secondary-tint);--ion-item-text-color:var(--ion-color-secondary-tint)}ion-menu ion-content ion-list ion-item.tertiary{--ion-item-icon-color:var(--ion-color-tertiary-tint);--ion-item-text-color:var(--ion-color-tertiary-tint)}ion-menu ion-content ion-list ion-item.danger{--ion-item-icon-color:var(--ion-color-danger-tint);--ion-item-text-color:var(--ion-color-danger-tint)}ion-menu ion-content ion-list ion-item.medium{--ion-item-icon-color:var(--ion-color-medium-shade);--ion-item-text-color:var(--ion-color-medium-shade)}ion-menu ion-content ion-list ion-item.dark{--ion-item-icon-color:var(--ion-color-dark-tint);--ion-item-text-color:var(--ion-color-dark-tint)}ion-menu ion-content ion-list ion-item ion-icon,ion-menu ion-content ion-list ion-item mat-icon{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item ion-label,ion-menu ion-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-menu ion-content ion-list ion-item.selected{background-color:var(--ion-item-background-selected)!important;--color-hover:var(--ion-item-background-selected)!important}ion-menu ion-content ion-list ion-item.selected ion-icon,ion-menu ion-content ion-list ion-item.selected mat-icon{color:var(--ion-item-icon-color-selected)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item.selected ion-label,ion-menu ion-content ion-list ion-item.selected ion-text{color:var(--ion-item-text-color-selected)!important}ion-menu ion-content ion-list ion-item.selected:hover{--color-hover:var(--ion-item-background-selected)!important;--ion-item-icon-color-selected:var(--ion-item-icon-color)!important;--ion-item-text-color-selected:var(--ion-item-text-color)!important}ion-menu ion-footer{display:block!important}ion-menu ion-footer ion-toolbar ion-title{cursor:pointer;font-size:12pt;font-weight:400;text-align:center;padding:0 8px}ion-menu ion-footer ion-toolbar ion-button{--width:40px}@media screen and (max-width:767px){ion-menu ion-footer{display:none!important;visibility:hidden!important}}@media screen and (min-width:768px){ion-menu ion-scroll{overflow-y:auto!important}ion-menu .user-avatar{font-size:var(--avatar-size,80px)!important;line-height:var(--avatar-size,80px);height:var(--avatar-size,80px)!important;width:var(--avatar-size,80px)!important}ion-menu .user-logo img{max-height:var(--avatar-size,80px)}}"]}]}],"members":{"logo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"appName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"appVersion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"side":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"splitPane":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":59,"character":3},"arguments":["splitPane",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":72,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":73,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":73,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_MENU_ITEMS"}]}]],"parameters":[{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":64,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"MenuController","line":65,"character":20},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":66,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":67,"character":31},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":68,"character":25},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":70,"character":18},{"__symbolic":"reference","name":"MenuService"},null,{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"MenuItem"}]}]}],"onResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":81,"character":3},"arguments":["window:resize",["$event"]]}]}],"ngOnInit":[{"__symbolic":"method"}],"onLogin":[{"__symbolic":"method"}],"onLogout":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"menuClose":[{"__symbolic":"method"}],"openAboutModal":[{"__symbolic":"method"}],"toggleSplitPane":[{"__symbolic":"method"}],"doAction":[{"__symbolic":"method"}],"onSwipeRight":[{"__symbolic":"method"}],"refreshMenuItems":[{"__symbolic":"method"}],"detectChanges":[{"__symbolic":"method"}]}},"MenuItem":{"__symbolic":"interface"},"MenuItems":{"__symbolic":"class","members":{}},"AppMenuModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"SharedModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":10,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":11,"character":4}],"declarations":[{"__symbolic":"reference","name":"MenuComponent"}],"exports":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":20,"character":4},{"__symbolic":"reference","name":"MenuComponent"}]}]}],"members":{}},"MenuService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"toggleMenu":[{"__symbolic":"method"}],"menuVisible":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EntityClass":{"__symbolic":"function"},"EntityClasses":{"__symbolic":"class","members":{},"statics":{"CLASSES_BY_NAME":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Map"}}}},"SocialModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","name":"CoreModule"}],"declarations":[{"__symbolic":"reference","name":"UserEventsTable"}],"exports":[{"__symbolic":"reference","name":"UserEventsTable"}]}]}],"members":{}},"UserEventTypes":{"DEBUG_DATA":"DEBUG_DATA","INBOX_MESSAGE":"INBOX_MESSAGE"},"UserEvent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"UserEventVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":15,"character":9}}},"UserEventAction":{"__symbolic":"interface"},"UserEventFilter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"EntityFilter"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"UserEventVO"}]}],"members":{"fromObject":[{"__symbolic":"method"}],"buildFilter":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":27,"character":9}}},"UserEventWatchOptions":{"__symbolic":"interface"},"UserEventActionDefinition":{"__symbolic":"interface"},"UserEventService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":94,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":107,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":105,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":106,"character":31},null]}],"watchAll":[{"__symbolic":"method"}],"watchPage":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"registerAction":[{"__symbolic":"method"}],"getActionsByTypename":[{"__symbolic":"method"}],"showToastErrorWithContext":[{"__symbolic":"method"}],"sendDataForDebug":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}],"convertObjectToString":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"fillDefaultProperties":[{"__symbolic":"method"}],"copyIdAndUpdateDate":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"UserEventDetail":{"__symbolic":"interface"},"UserEventIcon":{"__symbolic":"interface"},"UserEventsTable":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppTable"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":78,"character":1},"arguments":[{"selector":"app-user-events-table","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":82,"character":19},"member":"OnPush"},"template":"\n<!-- Type = options menu -->\n<mat-menu #optionsMenu=\"matMenu\" xPosition=\"after\">\n\n <!-- display columns -->\n <button mat-menu-item\n (click)=\"openSelectColumnsModal($event)\">\n <mat-icon>view_column</mat-icon>\n <ion-label translate>COMMON.DISPLAYED_COLUMNS_DOTS</ion-label>\n </button>\n\n</mat-menu>\n\n<!-- top header -->\n<mat-toolbar>\n\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n\n <button mat-icon-button [title]=\"'COMMON.BTN_REFRESH'|translate\" (click)=\"onRefresh.emit()\">\n <mat-icon>refresh</mat-icon>\n </button>\n\n </ng-container>\n\n <!-- if row selection -->\n <ng-template #hasSelection>\n\n <!-- delete -->\n <button mat-icon-button class=\"hidden-xs hidden-sm\" *ngIf=\"canDelete\"\n [title]=\"'COMMON.BTN_DELETE'|translate\" (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n </ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" hidden-xs hidden-sm hidden-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <div class=\"toolbar-spacer\"></div>\n\n <button mat-icon-button\n [title]=\"'COMMON.BTN_OPTIONS'|translate\"\n [matMenuTriggerFor]=\"optionsMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n</mat-toolbar>\n\n\n<mat-table [dataSource]=\"dataSource\" matSort\n [matSortActive]=\"defaultSortBy\"\n [matSortDirection]=\"defaultSortDirection\"\n matSortDisableClear [trackBy]=\"trackByFn\">\n\n <!-- select -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <!-- id -->\n <ng-container matColumnDef=\"id\">\n <mat-header-cell *matHeaderCellDef mat-sort-header [class.cdk-visually-hidden]=\"!isAdmin\">\n <app-loading-spinner [loading]=\"loadingSubject|async\"><ion-label>#</ion-label></app-loading-spinner>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!isAdmin\">{{ row.currentData.id | mathAbs }}</mat-cell>\n </ng-container>\n\n <!-- creationDate -->\n <ng-container matColumnDef=\"creationDate\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.CREATION_DATE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ion-text>\n {{row.currentData.creationDate | dateFromNow }}<br/>\n <ion-text color=\"medium\"><small>{{row.currentData.creationDate | dateFormat: {time: true} }}</small></ion-text>\n </ion-text>\n </mat-cell>\n </ng-container>\n\n <!-- icon -->\n <ng-container matColumnDef=\"icon\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getIcon(row.currentData); let details\">\n <ion-icon slot=\"start\" *ngIf=\"details.icon\" [name]=\"details.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"details.matIcon\">{{details.matIcon}}</mat-icon>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- event type -->\n <ng-container matColumnDef=\"eventType\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.EVENT_TYPE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <span>{{'SOCIAL.EVENT_TYPE_ENUM.' + row.currentData.eventType | translate}}</span>\n </mat-cell>\n </ng-container>\n\n <!-- message -->\n <ng-container matColumnDef=\"message\">\n <mat-header-cell *matHeaderCellDef>\n <ion-label translate>SOCIAL.USER_EVENT.MESSAGE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <ion-text [innerHTML]=\"details.title|translate\">\n </ion-text>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- Actions buttons column -->\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <button mat-icon-button color=\"light\"\n *ngFor=\"let action of details.actions\"\n [title]=\"action.title |translate\"\n [color]=\"action.color\"\n (click)=\"doAction(action, row)\">\n <ion-icon slot=\"start\" *ngIf=\"action.icon\" [name]=\"action.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"action.matIcon\">{{action.matIcon}}</mat-icon>\n </button>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"mat-row-disabled\"\n (click)=\"clickRow($event, row)\"></mat-row>\n\n</mat-table>\n\n<ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col class=\"ion-no-padding\" size=\"auto\">\n <mat-paginator [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\" [pageSizeOptions]=\"defaultPageSizeOptions\" showFirstLastButtons>\n </mat-paginator>\n </ion-col>\n</ion-row>\n","styles":[".mat-header-row .mat-column-icon,.mat-row .mat-column-icon{max-width:40px;padding-left:0}.mat-header-row .mat-column-icon ion-icon,.mat-header-row .mat-column-icon mat-icon,.mat-row .mat-column-icon ion-icon,.mat-row .mat-column-icon mat-icon{font-size:1.2em;height:1.2em;width:1.2em}.mat-header-row .mat-column-creationDate,.mat-row .mat-column-creationDate{min-width:100px;max-width:120px}"]}]}],"members":{"recipient":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"withContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"defaultSortBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"defaultSortDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":99,"character":24},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"UserEventService"},{"__symbolic":"reference","name":"EntitiesStorage"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":18},null]}],"ngOnInit":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}],"getIcon":[{"__symbolic":"method"}],"getDetail":[{"__symbolic":"method"}],"doAction":[{"__symbolic":"method"}]}},"AdminModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","name":"CoreModule"},{"__symbolic":"reference","name":"SocialModule"},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","module":"ngx-jdenticon","name":"NgxJdenticonModule","line":15,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":16,"character":4},"member":"forChild"}}],"declarations":[{"__symbolic":"reference","name":"UsersPage"}],"exports":[{"__symbolic":"reference","name":"UsersPage"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"AdminRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":19,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"SharedRoutingModule"},{"__symbolic":"reference","name":"AdminModule"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":23,"character":4},"member":"forChild"},"arguments":[[{"path":"users","pathMatch":"full","component":{"__symbolic":"reference","name":"UsersPage"},"canActivate":[{"__symbolic":"reference","name":"AuthGuardService"}],"data":{"profile":"ADMIN"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":25,"character":12}]}]}],"members":{}},"PersonFilter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"EntityFilter"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"PersonFilterVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"fromObject":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"buildFilter":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":12,"character":9},"searchFilter":{"__symbolic":"function","parameters":["source"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"source"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"PersonFilter"},"member":"fromObject"},"arguments":[{"__symbolic":"reference","name":"source"}]},"member":"asFilterFn"}}}}}},"PersonValidatorService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":12,"character":27},{"__symbolic":"reference","name":"ɵh"}]}],"getRowValidator":[{"__symbolic":"method"}],"getFormGroup":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ErrorCodes":{"LOAD_PERSONS_ERROR":100,"SAVE_PERSONS_ERROR":101,"DELETE_PERSONS_ERROR":102},"PersonFragments":{"__symbolic":"error","message":"Tagged template expressions are not supported in metadata","line":19,"character":10,"module":"./src/app/admin/services/person.service"},"PersonService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseEntityService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":78,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"EntitiesStorage"}]}],"loadAll":[{"__symbolic":"method"}],"loadAllLocally":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"executeImport":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"UsersPage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppTable"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"app-users-table","providers":[{"provide":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":31,"character":14},"useExisting":{"__symbolic":"reference","name":"PersonValidatorService"}}],"animations":[{"__symbolic":"reference","name":"slideUpDownAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"<app-toolbar [title]=\"'USER.LIST.TITLE'|translate\"\n color=\"primary\"\n [canGoBack]=\"false\"\n [hasValidate]=\"!(loadingSubject|async) && dirty\"\n (onValidate)=\"save()\">\n <ion-buttons slot=\"end\">\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n <!-- Add -->\n <button mat-icon-button\n *ngIf=\"canEdit && !mobile\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"addRow()\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Refresh -->\n <button mat-icon-button *ngIf=\"!mobile\"\n [title]=\"'COMMON.BTN_REFRESH'|translate\"\n (click)=\"onRefresh.emit()\">\n <mat-icon>refresh</mat-icon>\n </button>\n\n <!-- reset filter -->\n <button mat-icon-button (click)=\"resetFilter()\"\n *ngIf=\"filterCriteriaCount\">\n <mat-icon color=\"accent\">filter_list_alt</mat-icon>\n <mat-icon class=\"icon-secondary\" style=\"left: 16px; top: 5px; font-weight: bold;\">close</mat-icon>\n </button>\n\n <!-- show filter -->\n <button mat-icon-button (click)=\"filterExpansionPanel.toggle()\">\n <mat-icon *ngIf=\"filterCriteriaCount; else emptyFilter\"\n [matBadge]=\"filterCriteriaCount\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\">filter_list_alt\n </mat-icon>\n <ng-template #emptyFilter>\n <mat-icon>filter_list_alt</mat-icon>\n </ng-template>\n </button>\n </ng-container>\n\n <ng-template #hasSelection>\n <!-- delete -->\n <button mat-icon-button\n class=\"hidden-xs hidden-sm\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n </ng-template>\n </ion-buttons>\n</app-toolbar>\n\n<ion-content class=\"ion-no-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"errorSubject|async ; let error\" lines=\"none\" @slideUpDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- search -->\n <mat-expansion-panel #filterExpansionPanel class=\"ion-no-padding filter-panel filter-panel-floating\">\n <form class=\"form-container ion-padding\" [formGroup]=\"filterForm\" (ngSubmit)=\"onRefresh.emit()\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- search -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.LIST.FILTER.SEARCH'|translate\" formControlName=\"searchText\">\n\n <button mat-icon-button matSuffix tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearControlValue($event, filterForm.controls.searchText)\"\n [hidden]=\"filterForm.controls.searchText.disabled || !filterForm.controls.searchText.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <!-- status -->\n <mat-form-field>\n <mat-select formControlName=\"statusId\" [placeholder]=\"'USER.STATUS'|translate\">\n <mat-option [value]=\"null\"><i><span translate>COMMON.EMPTY_OPTION</span></i></mat-option>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n\n <button mat-icon-button matSuffix tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearControlValue($event, filterForm.controls.statusId)\"\n [hidden]=\"filterForm.controls.statusId.disabled || !filterForm.controls.statusId.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <mat-action-row>\n <!-- Counter -->\n <ion-label [hidden]=\"(loadingSubject|async) || filterForm.dirty\"\n [color]=\"empty && 'danger'\"\n class=\"ion-padding\">\n {{ (totalRowCount ? 'COMMON.RESULT_COUNT' : 'COMMON.NO_RESULT') | translate: {\n count: (totalRowCount |\n numberFormat)\n } }}\n </ion-label>\n\n <div class=\"toolbar-spacer\"></div>\n\n <!-- Close panel -->\n <ion-button mat-button fill=\"clear\" color=\"dark\"\n (click)=\"filterExpansionPanel.close()\"\n [disabled]=\"loadingSubject|async\">\n <ion-text translate>COMMON.BTN_CLOSE</ion-text>\n </ion-button>\n\n <!-- Search button -->\n <ion-button mat-button\n [color]=\"filterForm.dirty ? 'tertiary' : 'dark'\"\n [fill]=\"filterForm.dirty ? 'solid' : 'clear'\"\n (click)=\"applyFilterAndClosePanel($event)\"\n [disabled]=\"loadingSubject|async\">\n <ion-text translate>COMMON.BTN_APPLY</ion-text>\n </ion-button>\n\n </mat-action-row>\n </mat-expansion-panel>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <div class=\"table-container\">\n <table #table mat-table matSort\n [dataSource]=\"dataSource\"\n [matSortActive]=\"defaultSortBy\" [matSortDirection]=\"defaultSortDirection\"\n matSortDisableClear [trackBy]=\"trackByFn\">\n\n <ng-container matColumnDef=\"select\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!inlineEdition\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!inlineEdition\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Id Column -->\n <ng-container matColumnDef=\"id\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label>#</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">{{ row.currentData.id }}</td>\n </ng-container>\n\n <!-- avatar Column -->\n <ng-container matColumnDef=\"avatar\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <div class=\"avatar\" *ngIf=\"row.currentData.avatar; else generateIcon\"\n [ngStyle]=\"{'background-image':'url('+row.currentData.avatar+')'}\"></div>\n <ng-template #generateIcon>\n <div class=\"avatar\">\n <svg width=\"38\" width=\"38\" [data-jdenticon-value]=\"row.currentData.id\"></svg>\n </div>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- lastName -->\n <ng-container matColumnDef=\"lastName\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.LAST_NAME</span>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"focusColumn='lastName'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput\n [formControl]=\"row.validator.controls['lastName']\"\n [placeholder]=\"'USER.LAST_NAME'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='lastName'\">\n <mat-error *ngIf=\"row.validator.controls['lastName'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['lastName'].hasError('minlength')\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n </td>\n\n </ng-container>\n\n <!-- firstname -->\n <ng-container matColumnDef=\"firstName\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.FIRST_NAME</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n\n (click)=\"focusColumn='firstName'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator.controls['firstName']\"\n [placeholder]=\"'USER.FIRST_NAME'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='firstName'\">\n <mat-error *ngIf=\"row.validator.controls['firstName'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['firstName'].hasError('minlength')\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- email -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.EMAIL</span>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"focusColumn='email'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator.controls['email']\"\n [placeholder]=\"'USER.EMAIL'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='email'\">\n <mat-error *ngIf=\"row.validator.controls['email'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['email'].hasError('email')\">\n <span translate>ERROR.FIELD_NOT_VALID_EMAIL</span>\n </mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- additional fields -->\n <ng-container *ngFor=\"let definition of additionalFields\" [matColumnDef]=\"definition.key\">\n <th mat-header-cell *matHeaderCellDef>\n <span>{{definition.label|translate}}</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn=definition.key\">\n <app-form-field floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"row.validator.controls[definition.key]\"\n [required]=\"definition.extra?.account?.required\"\n [autofocus]=\"row.editing && focusColumn===definition.ke\">\n </app-form-field>\n </td>\n </ng-container>\n\n <!-- profile column -->\n <ng-container matColumnDef=\"profile\">\n <th mat-header-cell *matHeaderCellDef>\n <span translate>USER.PROFILE</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='profile'\">\n <mat-form-field floatLabel=\"never\">\n <mat-select [formControl]=\"row.validator.controls['mainProfile']\"\n [placeholder]=\"'USER.PROFILE'|translate\">\n <mat-option *ngFor=\"let item of profiles\" [value]=\"item\">\n {{ ('USER.PROFILE_ENUM.' + item) | uppercase |translate }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"row.validator.controls['mainProfile'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Status column -->\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef>\n <span translate>USER.STATUS</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='status'\">\n <mat-form-field floatLabel=\"never\">\n <ion-icon matPrefix *ngIf=\"row.validator.controls['statusId'].value &gt;=0\" [name]=\"statusById[row.validator.controls['statusId'].value]?.icon\"></ion-icon>\n\n <mat-select [formControl]=\"row.validator.controls['statusId']\"\n [placeholder]=\"'REFERENTIAL.STATUS'|translate\">\n <mat-select-trigger>\n <span *ngIf=\"row.validator.controls['statusId'].value &gt;=0\">\n {{ statusById[row.validator.controls['statusId'].value]?.label | translate}}</span>\n </mat-select-trigger>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"row.validator.controls['statusId'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- username -->\n <ng-container matColumnDef=\"username\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.USERNAME</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='username'\">\n <mat-form-field floatLabel=\"never\" >\n <input matInput [formControl]=\"row.validator.controls.username\"\n [placeholder]=\"'USER.USERNAME'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='username'\">\n <mat-error *ngIf=\"row.validator.controls.username.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- username extranet -->\n <ng-container matColumnDef=\"usernameExtranet\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.USERNAME_EXTRANET</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='usernameExtranet'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator.controls.usernameExtranet\"\n [placeholder]=\"'USER.USERNAME_EXTRANET'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='usernameExtranet'\">\n <mat-error *ngIf=\"row.validator.controls.usernameExtranet.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- pubkey -->\n <ng-container matColumnDef=\"pubkey\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.PUBKEY</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n [title]=\"row.validator.controls['pubkey'].value\"\n (click)=\"focusColumn='pubkey'\">\n <mat-form-field floatLabel=\"never\" >\n <input matInput [formControl]=\"row.validator.controls['pubkey']\" [placeholder]=\"'USER.PUBKEY'|translate\"\n [readonly]=\"!row.editing\" autocomplete=\"off\">\n <mat-error *ngIf=\"row.validator.controls['pubkey'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['pubkey'].hasError('pubkey')\">\n <span translate>ERROR.FIELD_NOT_VALID_PUBKEY</span>\n </mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Actions buttons column -->\n <app-actions-column [stickyEnd]=\"useSticky\"\n (optionsClick)=\"openSelectColumnsModal($event)\"\n (cancelOrDeleteClick)=\"cancelOrDelete($event.event, $event.row)\"\n (confirmAndAddClick)=\"confirmAndAdd($event.event, $event.row)\"\n (backward)=\"confirmAndBackward($event.event, $event.row)\"\n (forward)=\"confirmAndForward($event.event, $event.row)\"\n [canCancel]=\"false\">\n </app-actions-column>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [class.mat-row-error]=\"row.validator.invalid\"\n [class.mat-row-dirty]=\"row.currentData.dirty\"\n [class.mat-row-disabled]=\"!row.editing\"\n (click)=\"clickRow($event, row)\"\n (keydown.escape)=\"escapeEditingRow($event)\"\n [cdkTrapFocus]=\"row.validator.invalid\"></tr>\n </table>\n\n <ng-container *ngIf=\"loadingSubject|async; else noResult\">\n <ion-item>\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-item>\n </ng-container>\n\n <ng-template #noResult>\n <ion-item *ngIf=\"totalRowCount === 0\">\n <ion-text color=\"danger\" class=\"text-italic\" translate>COMMON.NO_RESULT</ion-text>\n </ion-item>\n </ng-template>\n </div>\n</ion-content>\n\n<ion-footer>\n <mat-paginator class=\"mat-paginator-footer\"\n [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"defaultPageSizeOptions\" showFirstLastButtons>\n </mat-paginator>\n\n <app-form-buttons-bar *ngIf=\"!mobile && inlineEdition\"\n (onCancel)=\"onRefresh.emit()\" (onSave)=\"save()\" [disabled]=\"(loadingSubject|async) || !dirty\"></app-form-buttons-bar>\n</ion-footer>\n\n<ion-fab slot=\"fixed\" vertical=\"bottom\" horizontal=\"end\" *ngIf=\"mobile\">\n <ion-fab-button color=\"tertiary\" (click)=\"addRow()\">\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n","styles":[".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:100%}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-id{width:30px}.mat-table .mat-column-avatar{width:50px}.mat-table .mat-column-avatar .avatar{border-radius:5px;border:1px solid rgba(var(--ion-color-secondary-rgb),.5)}.mat-table .mat-column-firstName,.mat-table .mat-column-lastName{min-width:80px}.mat-table .mat-column-email{min-width:120px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]}]}],"members":{"useSticky":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"filterExpansionPanel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":57,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionPanel","line":57,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":73,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":60,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":61,"character":22},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":63,"character":24},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":64,"character":25},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":67,"character":32},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","name":"PersonService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":70,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":71,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":72,"character":14},null]}],"ngOnInit":[{"__symbolic":"method"}],"applyFilterAndClosePanel":[{"__symbolic":"method"}],"resetFilter":[{"__symbolic":"method"}],"restoreFilterOrLoad":[{"__symbolic":"method"}],"clearControlValue":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":25,"character":17}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":25,"character":29},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":25,"character":36}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":22,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":23,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":24,"character":34},{"__symbolic":"reference","name":"any"}]}],"appendNumpadToBody":[{"__symbolic":"method"}],"destroyNumpad":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/material/badge","name":"MatBadgeModule","line":10,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵd"}],"declarations":[{"__symbolic":"reference","name":"ɵd"}]}]}],"members":{}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":7,"character":1},"arguments":[{"selector":"[matBadgeIcon], [ionBadgeIcon]","inputs":["size: matBadgeSize","color: matBadgeColor","fill: matBadgeFill"]}]}],"members":{"matIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3},"arguments":["matBadgeIcon"]}]}],"ionIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3},"arguments":["ionBadgeIcon"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"function"},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"mat-badge-icon-test","template":"\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span matBadge matIcon=\"check\"\n matBadgeSize=\"small\"\n matBadgeColor=\"accent\"\n matBadgeOverlap=\"false\">Small badge</span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text matBadge matBadgeIcon=\"check\"\n matBadgeSize=\"medium\"\n matBadgeColor=\"tertiary\"\n matBadgeOverlap=\"false\"\n >Medium badge</ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label matBadge matBadgeIcon=\"close\" matBadgeSize=\"large\"\n matBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label matBadge matBadgeIcon=\"check\" matBadgeColor=\"success\"\n matBadgeOverlap=\"false\">Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label matBadge\n ionBadgeIcon=\"checkmark\"\n matBadgeColor=\"success\"\n matBadgeOverlap=\"false\">Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label matBadge\n ionBadgeIcon=\"checkmark-circle\"\n matBadgeColor=\"tertiary\"\n matBadgeFill=\"clear\"\n matBadgeOverlap=\"false\">Badge with clear icon\n </ion-label>\n </p>\n\n\n</ion-content>\n"}]}],"members":{}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"form-register","template":"<mat-horizontal-stepper linear #stepper=\"matHorizontalStepper\">\n\n <!-- Step 1: Username -->\n <mat-step [stepControl]=\"forms[0]\" *ngIf=\"forms[0].controls; let controls\">\n\n <form [formGroup]=\"forms[0]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n <ng-template matStepLabel>{{'REGISTER.STEP_EMAIL'|translate}}</ng-template>\n\n <!-- Email -->\n <mat-form-field>\n <input matInput\n [appAutofocus]=\"true\" [autofocusDelay]=\"500\" [placeholder]=\"'USER.EMAIL'|translate\"\n formControlName=\"email\" autocomplete=\"off\" required>\n <mat-error *ngIf=\"controls.email.hasError('required') && controls.email.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.email.hasError('email') && !controls.email.hasError('required') && controls.email.touched\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n <mat-error *ngIf=\"controls.email.hasError('availability') && controls.email.touched\" translate>REGISTER.ERROR.EMAIL_ALREADY_REGISTERED</mat-error>\n\n </mat-form-field>\n\n <!-- Confirm Email -->\n <mat-form-field>\n <input matInput autocomplete=\"off\" matFormFieldControl [placeholder]=\"'REGISTER.CONFIRM_EMAIL'|translate\" formControlName=\"confirmEmail\">\n <mat-error *ngIf=\"controls.confirmEmail.hasError('required') && controls.confirmEmail.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmEmail.hasError('equals') && controls.confirmEmail.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 2: Password -->\n <mat-step [stepControl]=\"forms[1]\" *ngIf=\"forms[1].controls; let controls\">\n\n <form [formGroup]=\"forms[1]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_PASSWORD'|translate}}</ng-template>\n\n <!-- Password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.PASSWORD'|translate\"\n formControlName=\"password\"\n autocomplete=\"section-red new-password\"\n [type]=\"showPwd ? 'text' : 'password'\"\n required>\n <button matSuffix mat-icon-button\n type=\"button\"\n (click)=\"showPwd = !showPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.password.hasError('required') && controls.password.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.password.hasError('minlength') && controls.password.touched\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 8} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Confirm password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'REGISTER.CONFIRM_PASSWORD'|translate\"\n formControlName=\"confirmPassword\"\n autocomplete=\"section-red new-password\"\n [type]=\"showConfirmPwd ? 'text' : 'password'\"\n required>\n <button mat-icon-button matSuffix\n (click)=\"showConfirmPwd = !showConfirmPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showConfirmPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('required') && controls.confirmPassword.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('equals') && controls.confirmPassword.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_PASSWORD' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 3: user details -->\n <mat-step [stepControl]=\"forms[2]\" *ngIf=\"forms[2].controls; let controls\">\n\n <form [formGroup]=\"forms[2]\" (ngSubmit)=\"doSubmit($event)\" class=\"form-container ion-padding\" (keyup.enter)=\"doSubmit()\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_USER_DETAILS'|translate}}</ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error && !sending\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- Last name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.LAST_NAME'|translate\" formControlName=\"lastName\" autocomplete=\"section-blue family-name\"\n required>\n <mat-error *ngIf=\"controls.lastName.hasError('required') && controls.lastName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.lastName.hasError('minlength') && controls.lastName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- First name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.FIRST_NAME'|translate\" formControlName=\"firstName\" autocomplete=\"section-blue given-name\"\n required>\n <mat-error *ngIf=\"controls.firstName.hasError('required') && controls.firstName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.firstName.hasError('minlength') && controls.firstName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Additional fields -->\n <app-form-field *ngFor=\"let field of additionalFields\"\n [definition]=\"field\"\n [formControlName]=\"field.key\"\n [required]=\"true\">\n </app-form-field>\n\n </form>\n </mat-step>\n</mat-horizontal-stepper>\n","styles":["form ion-toolbar.toolbar-buttons .toolbar-content{text-align:right}form ion-toolbar.toolbar-buttons .toolbar-background{border:0;background:inherit!important}"]}]}],"members":{"stepper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":44,"character":3},"arguments":["stepper",{"static":true}]}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":46,"character":3}}]}],"onSubmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":49,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":56,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],null],"parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":55,"character":24},null,{"__symbolic":"reference","name":"LocalSettingsService"}]}],"ngOnInit":[{"__symbolic":"method"}],"isEnd":[{"__symbolic":"method"}],"isBeginning":[{"__symbolic":"method"}],"slidePrev":[{"__symbolic":"method"}],"slideNext":[{"__symbolic":"method"}],"equalsValidator":[{"__symbolic":"method"}],"emailAvailability":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppValidatorService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":14,"character":27},{"__symbolic":"reference","name":"AccountService"}]}],"getFormGroupConfig":[{"__symbolic":"method"}],"getValidators":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"modal-register","template":"<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button *ngIf=\"form.isBeginning()\" (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n <ion-button *ngIf=\"!form.isBeginning()\" (click)=\"form.slidePrev()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title translate>REGISTER.TITLE</ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"sending\"></ion-spinner>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\"\n visible-xs visible-sm visible-mobile>\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd() && !sending\" (click)=\"doSubmit()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <form-register (onSubmit)=\"doSubmit()\" (onCancel)=\"cancel()\" #form>\n </form-register>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <!-- buttons -->\n <ion-toolbar>\n\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button *ngIf=\"form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"form.slidePrev()\" [disabled]=\"sending\">\n <ion-icon slot=\"start\" name=\"arrow-back\"></ion-icon>\n <ion-label translate>COMMON.BTN_BACK</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\" fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd()\" (click)=\"doSubmit()\" fill=\"solid\" [disabled]=\"sending\" color=\"tertiary\">\n <span translate>COMMON.BTN_SEND</span>\n <ion-icon slot=\"end\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n"}]}],"members":{"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":["form",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":16,"character":21}]}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppValidatorService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":9,"character":17}]}],"getFormGroup":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵk":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppValidatorService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":12,"character":17},{"__symbolic":"reference","name":"NetworkService"}]}],"getFormGroup":[{"__symbolic":"method"}],"getPropertiesArray":[{"__symbolic":"method"}],"getPropertyFormGroup":[{"__symbolic":"method"}],"peerAlive":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-icon","template":"<ion-icon *ngIf=\"icon; else matIconTemplate\" slot=\"icon-only\"\n [color]=\"color\"\n [name]=\"icon\"\n></ion-icon>\n<ng-template #matIconTemplate>\n <mat-icon [svgIcon]=\"matSvgIcon\"\n [style.color]=\"'var(--ion-color-'+color+')'\">{{matIcon}}</mat-icon>\n</ng-template>\n\n"}]}],"members":{"icon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"matIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"matSvgIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"ref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}]}}},"origins":{"ENVIRONMENT":"./src/environments/environment.class","Environment":"./src/environments/environment.class","DATE_ISO_PATTERN":"./src/app/shared/constants","DEFAULT_PLACEHOLDER_CHAR":"./src/app/shared/constants","PUBKEY_REGEXP":"./src/app/shared/constants","SPACE_PLACEHOLDER_CHAR":"./src/app/shared/constants","KEYBOARD_HIDE_DELAY_MS":"./src/app/shared/constants","scrollFactory":"./src/app/shared/shared.module","SharedModule":"./src/app/shared/shared.module","ɵa":"./src/app/shared/shared-routing.module","SharedRoutingModule":"./src/app/shared/shared-routing.module","SharedMaterialModule":"./src/app/shared/material/material.module","SharedMatBooleanModule":"./src/app/shared/material/boolean/boolean.module","MatBooleanField":"./src/app/shared/material/boolean/material.boolean","SharedMatAutocompleteModule":"./src/app/shared/material/autocomplete/material.autocomplete.module","MatAutocompleteField":"./src/app/shared/material/autocomplete/material.autocomplete","MatAutocompleteFieldConfig":"./src/app/shared/material/autocomplete/material.autocomplete","MatAutocompleteConfigHolder":"./src/app/shared/material/autocomplete/material.autocomplete","MatAutocompleteFieldAddOptions":"./src/app/shared/material/autocomplete/material.autocomplete","MaterialChipsModule":"./src/app/shared/material/chips/chips.module","MatChipsField":"./src/app/shared/material/chips/material.chips","fadeInAnimation":"./src/app/shared/material/material.animations","fadeInOutAnimation":"./src/app/shared/material/material.animations","slideInOutAnimation":"./src/app/shared/material/material.animations","slideUpDownAnimation":"./src/app/shared/material/material.animations","MatPaginatorI18n":"./src/app/shared/material/paginator/material.paginator-i18n","MatStepperI18n":"./src/app/shared/material/stepper/material.stepper-i18n","SharedMatDateTimeModule":"./src/app/shared/material/datetime/datetime.module","MatDateShort":"./src/app/shared/material/datetime/material.dateshort","MatDateTime":"./src/app/shared/material/datetime/material.datetime","MatDate":"./src/app/shared/material/datetime/material.date","MatLatLongField":"./src/app/shared/material/latlong/material.latlong","SharedMatLatLongModule":"./src/app/shared/material/latlong/material.latlong.module","SharedMatDurationModule":"./src/app/shared/material/duration/duration.module","MatDuration":"./src/app/shared/material/duration/material.duration","SharedMatNumpadModule":"./src/app/shared/material/numpad/numpad.module","NumpadDirective":"./src/app/shared/material/numpad/numpad.directive","AppendToInputDirective":"./src/app/shared/material/numpad/numpad.append-to-input.directive","AnimationState":"./src/app/shared/material/numpad/numpad.container","MatNumpadContainerComponent":"./src/app/shared/material/numpad/numpad.container","MatNumpadContent":"./src/app/shared/material/numpad/numpad.content","MatNumpadComponent":"./src/app/shared/material/numpad/numpad.component","SharedMatSwipeModule":"./src/app/shared/material/swipe/swipe.module","MatSwipeField":"./src/app/shared/material/swipe/material.swipe","selectInputContent":"./src/app/shared/inputs","selectInputRange":"./src/app/shared/inputs","getCaretPosition":"./src/app/shared/inputs","moveInputCaretToSeparator":"./src/app/shared/inputs","filterNumberInput":"./src/app/shared/inputs","focusInput":"./src/app/shared/inputs","setTabIndex":"./src/app/shared/inputs","InputElement":"./src/app/shared/inputs","isInputElement":"./src/app/shared/inputs","asInputElement":"./src/app/shared/inputs","tabindexComparator":"./src/app/shared/inputs","CanGainFocusOptions":"./src/app/shared/inputs","GetFocusableInputOptions":"./src/app/shared/inputs","canHaveFocus":"./src/app/shared/inputs","getFocusableInputElements":"./src/app/shared/inputs","focusNextInput":"./src/app/shared/inputs","focusPreviousInput":"./src/app/shared/inputs","AppFormField":"./src/app/shared/form/field.component","AppLoadingSpinner":"./src/app/shared/form/loading-spinner","DisplayFn":"./src/app/shared/form/field.model","CompareWithFn":"./src/app/shared/form/field.model","FormFieldType":"./src/app/shared/form/field.model","FormFieldDefinition":"./src/app/shared/form/field.model","FormFieldDefinitionMap":"./src/app/shared/form/field.model","FormFieldValuesHolder":"./src/app/shared/form/field.model","ToolbarToken":"./src/app/shared/toolbar/toolbar","ToolbarComponent":"./src/app/shared/toolbar/toolbar","ModalToolbarComponent":"./src/app/shared/toolbar/modal-toolbar","ProgressInterceptor":"./src/app/shared/interceptors/progess.interceptor","ShowToastOptions":"./src/app/shared/toasts","Toasts":"./src/app/shared/toasts","AppHelpModalOptions":"./src/app/shared/help/help.modal","AppHelpModal":"./src/app/shared/help/help.modal","CanLeave":"./src/app/shared/guard/component-dirty.guard","ComponentDirtyGuard":"./src/app/shared/guard/component-dirty.guard","SharedDirectivesModule":"./src/app/shared/directives/directives.module","AutofocusDirective":"./src/app/shared/directives/autofocus.directive","SharedPipesModule":"./src/app/shared/pipes/pipes.module","DateFormatPipe":"./src/app/shared/pipes/date-format.pipe","DateFromNowPipe":"./src/app/shared/pipes/date-from-now.pipe","DateDiffDurationPipe":"./src/app/shared/pipes/date-diff-duration.pipe","LatLongFormatPipe":"./src/app/shared/pipes/latlong-format.pipe","LatitudeFormatPipe":"./src/app/shared/pipes/latlong-format.pipe","LongitudeFormatPipe":"./src/app/shared/pipes/latlong-format.pipe","HighlightPipe":"./src/app/shared/pipes/highlight.pipe","NumberFormatPipe":"./src/app/shared/pipes/number-format.pipe","PropertyGetPipe":"./src/app/shared/pipes/properties.pipe","DurationPipe":"./src/app/shared/pipes/duration.pipe","FileSizePipe":"./src/app/shared/pipes/file-size.pipe","MathAbsPipe":"./src/app/shared/pipes/math.pipes","EvenPipe":"./src/app/shared/pipes/math.pipes","OddPipe":"./src/app/shared/pipes/math.pipes","NotEmptyArrayPipe":"./src/app/shared/pipes/arrays.pipe","EmptyArrayPipe":"./src/app/shared/pipes/arrays.pipe","ArrayLengthPipe":"./src/app/shared/pipes/arrays.pipe","ArrayFirstPipe":"./src/app/shared/pipes/arrays.pipe","ArrayPluckPipe":"./src/app/shared/pipes/arrays.pipe","ArrayIncludesPipe":"./src/app/shared/pipes/arrays.pipe","ArrayFilterPipe":"./src/app/shared/pipes/arrays.pipe","MapGetPipe":"./src/app/shared/pipes/maps.pipe","MapKeysPipe":"./src/app/shared/pipes/maps.pipe","MapValuesPipe":"./src/app/shared/pipes/maps.pipe","IsNotNilOrBlankPipe":"./src/app/shared/pipes/string.pipes","IsNilOrBlankPipe":"./src/app/shared/pipes/string.pipes","ToStringPipe":"./src/app/shared/pipes/string.pipes","StrLengthPipe":"./src/app/shared/pipes/string.pipes","TranslateContextPipe":"./src/app/shared/pipes/translate-context.pipe","TranslatablePipe":"./src/app/shared/pipes/translate-context.pipe","NgInitDirective":"./src/app/shared/pipes/ng-init.pipe","FormErrorTranslatePipe":"./src/app/shared/pipes/form.pipes","AudioType":"./src/app/shared/audio/audio","Sound":"./src/app/shared/audio/audio","AudioProvider":"./src/app/shared/audio/audio","FileService":"./src/app/shared/file/file.service","IStartableService":"./src/app/shared/services/startable-service.class","StartableService":"./src/app/shared/services/startable-service.class","Page":"./src/app/shared/services/entity-service.class","FetchMoreFn":"./src/app/shared/services/entity-service.class","LoadResult":"./src/app/shared/services/entity-service.class","SuggestFn":"./src/app/shared/services/entity-service.class","SuggestService":"./src/app/shared/services/entity-service.class","FilterFn":"./src/app/shared/services/entity-service.class","FilterFnFactory":"./src/app/shared/services/entity-service.class","EntityServiceLoadOptions":"./src/app/shared/services/entity-service.class","IEntityService":"./src/app/shared/services/entity-service.class","EntitiesServiceWatchOptions":"./src/app/shared/services/entity-service.class","IEntitiesService":"./src/app/shared/services/entity-service.class","LoadResultByPageFn":"./src/app/shared/services/entity-service.class","IEntityFullService":"./src/app/shared/services/entity-service.class","mergeLoadResult":"./src/app/shared/services/entity-service.class","EntitiesService":"./src/app/shared/services/entity-service.class","InMemoryEntitiesServiceOptions":"./src/app/shared/services/memory-entity-service.class","InMemoryEntitiesService":"./src/app/shared/services/memory-entity-service.class","ProgressMode":"./src/app/shared/services/progress-bar.service","ProgressBarService":"./src/app/shared/services/progress-bar.service","TranslateContextService":"./src/app/shared/services/translate-context.service","CallableWithProgressionFn":"./src/app/shared/services/job.utils","CallableWithProgressionOptions":"./src/app/shared/services/job.utils","JobUtils":"./src/app/shared/services/job.utils","APP_FORM_ERROR_I18N_KEYS":"./src/app/shared/validator/form-error-adapter.class","IFormControlPathTranslator":"./src/app/shared/validator/form-error-adapter.class","FormErrorTranslatorOptions":"./src/app/shared/validator/form-error-adapter.class","FormErrorTranslator":"./src/app/shared/validator/form-error-adapter.class","KeyType":"./src/app/shared/types","KeyValueType":"./src/app/shared/types","KeysEnum":"./src/app/shared/types","ObjectMap":"./src/app/shared/types","ObjectMapEntry":"./src/app/shared/types","PropertiesMap":"./src/app/shared/types","Property":"./src/app/shared/types","PropertiesArray":"./src/app/shared/types","IconRef":"./src/app/shared/types","DATE_UNIX_TIMESTAMP":"./src/app/shared/dates","DATE_UNIX_MS_TIMESTAMP":"./src/app/shared/dates","DateUtils":"./src/app/shared/dates","toDateISOString":"./src/app/shared/dates","fromDateISOString":"./src/app/shared/dates","fromUnixTimestamp":"./src/app/shared/dates","fromUnixMsTimestamp":"./src/app/shared/dates","toDuration":"./src/app/shared/dates","isNil":"./src/app/shared/functions","isNilOrBlank":"./src/app/shared/functions","isNotNil":"./src/app/shared/functions","isNotNilOrBlank":"./src/app/shared/functions","isNotNilOrNaN":"./src/app/shared/functions","isNilOrNaN":"./src/app/shared/functions","isNotEmptyArray":"./src/app/shared/functions","firstArrayValue":"./src/app/shared/functions","isEmptyArray":"./src/app/shared/functions","isNotNilString":"./src/app/shared/functions","notNilOrDefault":"./src/app/shared/functions","arraySize":"./src/app/shared/functions","arrayGroupBy":"./src/app/shared/functions","arrayDistinct":"./src/app/shared/functions","nullIfUndefined":"./src/app/shared/functions","trimEmptyToNull":"./src/app/shared/functions","toBoolean":"./src/app/shared/functions","toNumber":"./src/app/shared/functions","toFloat":"./src/app/shared/functions","toInt":"./src/app/shared/functions","toNotNil":"./src/app/shared/functions","removeDuplicatesFromArray":"./src/app/shared/functions","startsWithUpperCase":"./src/app/shared/functions","matchUpperCase":"./src/app/shared/functions","noTrailingSlash":"./src/app/shared/functions","replaceAll":"./src/app/shared/functions","removeEnd":"./src/app/shared/functions","changeCaseToUnderscore":"./src/app/shared/functions","removeDiacritics":"./src/app/shared/functions","suggestFromArray":"./src/app/shared/functions","suggestFromStringArray":"./src/app/shared/functions","joinPropertiesPath":"./src/app/shared/functions","joinProperties":"./src/app/shared/functions","propertyPathComparator":"./src/app/shared/functions","propertyComparator":"./src/app/shared/functions","propertiesPathComparator":"./src/app/shared/functions","sort":"./src/app/shared/functions","isInt":"./src/app/shared/functions","isNumber":"./src/app/shared/functions","isNumberRange":"./src/app/shared/functions","getPropertyByPath":"./src/app/shared/functions","getProperty":"./src/app/shared/functions","getPropertyByPathAsString":"./src/app/shared/functions","sleep":"./src/app/shared/functions","round":"./src/app/shared/functions","equalsOrNil":"./src/app/shared/functions","removeAll":"./src/app/shared/functions","remove":"./src/app/shared/functions","capitalizeFirstLetter":"./src/app/shared/functions","uncapitalizeFirstLetter":"./src/app/shared/functions","splitByProperty":"./src/app/shared/functions","splitById":"./src/app/shared/functions","equals":"./src/app/shared/functions","Beans":"./src/app/shared/functions","filterNotNil":"./src/app/shared/observables","firstNotNil":"./src/app/shared/observables","filterTrue":"./src/app/shared/observables","filterFalse":"./src/app/shared/observables","firstTruePromise":"./src/app/shared/observables","firstFalsePromise":"./src/app/shared/observables","firstNotNilPromise":"./src/app/shared/observables","chainPromises":"./src/app/shared/observables","WaitForOptions":"./src/app/shared/observables","waitFor":"./src/app/shared/observables","PromiseEventPayload":"./src/app/shared/events","PromiseEvent":"./src/app/shared/events","createPromiseEventEmitter":"./src/app/shared/events","createPromiseEvent":"./src/app/shared/events","emitPromiseEvent":"./src/app/shared/events","CompletableEvent":"./src/app/shared/events","fromScrollEndEvent":"./src/app/shared/events","Alerts":"./src/app/shared/alerts","SharedHotkeysModule":"./src/app/shared/hotkeys/shared-hotkeys.module","Hotkeys":"./src/app/shared/hotkeys/hotkeys.service","HotkeysDialogComponent":"./src/app/shared/hotkeys/dialog/hotkeys-dialog.component","Color":"./src/app/shared/graph/graph-colors","ColorName":"./src/app/shared/graph/graph-colors","ColorScale":"./src/app/shared/graph/graph-colors","ColorScaleLegend":"./src/app/shared/graph/graph-colors","ColorScaleOptions":"./src/app/shared/graph/graph-colors","ColorGradientOptions":"./src/app/shared/graph/graph-colors","ColorScaleLegendItem":"./src/app/shared/graph/graph-colors","rgbToHex":"./src/app/shared/graph/colors.utils","rgbArrayToHex":"./src/app/shared/graph/colors.utils","hexToRgbArray":"./src/app/shared/graph/colors.utils","hexToRgb":"./src/app/shared/graph/colors.utils","mixHex":"./src/app/shared/graph/colors.utils","getColorShade":"./src/app/shared/graph/colors.utils","getColorTint":"./src/app/shared/graph/colors.utils","getColorContrast":"./src/app/shared/graph/colors.utils","HAMMER_TAP_TIME":"./src/app/shared/gesture/gesture-config","HAMMER_PRESS_TIME":"./src/app/shared/gesture/gesture-config","AppGestureConfig":"./src/app/shared/gesture/gesture-config","HammerSwipeAction":"./src/app/shared/gesture/hammer.utils","HammerSwipeEvent":"./src/app/shared/gesture/hammer.utils","HammerTapEvent":"./src/app/shared/gesture/hammer.utils","SharedValidators":"./src/app/shared/validator/validators","SharedFormGroupValidators":"./src/app/shared/validator/validators","SharedFormArrayValidators":"./src/app/shared/validator/validators","LatLongPattern":"./src/app/shared/material/latlong/latlong.utils","LAT_LONG_PATTERNS":"./src/app/shared/material/latlong/latlong.utils","LatLongFormatOptions":"./src/app/shared/material/latlong/latlong.utils","LatLongFormatFn":"./src/app/shared/material/latlong/latlong.utils","LAT_LONG_DEFAULT_MAX_DECIMALS":"./src/app/shared/material/latlong/latlong.utils","formatLatitude":"./src/app/shared/material/latlong/latlong.utils","formatLongitude":"./src/app/shared/material/latlong/latlong.utils","parseLatitudeOrLongitude":"./src/app/shared/material/latlong/latlong.utils","SharedTestingModule":"./src/app/shared/shared.testing.module","MaterialTestingModule":"./src/app/shared/material/testing/material.testing.module","TestingPage":"./src/app/shared/material/testing/material.testing.page","APP_TESTING_PAGES":"./src/app/shared/material/testing/material.testing.page","MaterialTestingPage":"./src/app/shared/material/testing/material.testing.page","AutocompleteTestPage":"./src/app/shared/material/autocomplete/testing/autocomplete.test","LatLongTestPage":"./src/app/shared/material/latlong/testing/latlong.test","SwipeTestPage":"./src/app/shared/material/swipe/testing/swipe.test","DateTimeTestPage":"./src/app/shared/material/datetime/testing/mat-date-time.test","ChipsTestPage":"./src/app/shared/material/chips/testing/chips.test","CoreModule":"./src/app/core/core.module","Account":"./src/app/core/services/model/account.model","accountToString":"./src/app/core/services/model/account.model","Software":"./src/app/core/services/model/config.model","Configuration":"./src/app/core/services/model/config.model","Department":"./src/app/core/services/model/department.model","departmentToString":"./src/app/core/services/model/department.model","departmentsToString":"./src/app/core/services/model/department.model","Cloneable":"./src/app/core/services/model/entity.model","entityToString":"./src/app/core/services/model/entity.model","EntityAsObjectOptions":"./src/app/core/services/model/entity.model","IEntity":"./src/app/core/services/model/entity.model","ITreeItemEntity":"./src/app/core/services/model/entity.model","Entity":"./src/app/core/services/model/entity.model","isInstanceOf":"./src/app/core/services/model/entity.model","EntityUtils":"./src/app/core/services/model/entity.model","IEntityFilter":"./src/app/core/services/model/filter.model","EntityFilter":"./src/app/core/services/model/filter.model","EntityFilterUtils":"./src/app/core/services/model/filter.model","SynchronizationHistory":"./src/app/core/services/model/history.model","HistoryPageReference":"./src/app/core/services/model/history.model","StatusIds":"./src/app/core/services/model/model.enum","Peer":"./src/app/core/services/model/peer.model","UserProfileLabel":"./src/app/core/services/model/person.model","PRIORITIZED_AUTHORITIES":"./src/app/core/services/model/person.model","Person":"./src/app/core/services/model/person.model","PersonUtils":"./src/app/core/services/model/person.model","IReferentialRef":"./src/app/core/services/model/referential.model","ReferentialRef":"./src/app/core/services/model/referential.model","BaseReferential":"./src/app/core/services/model/referential.model","Referential":"./src/app/core/services/model/referential.model","ReferentialUtils":"./src/app/core/services/model/referential.model","ReferentialAsObjectOptions":"./src/app/core/services/model/referential.model","referentialToString":"./src/app/core/services/model/referential.model","referentialsToString":"./src/app/core/services/model/referential.model","IStatus":"./src/app/core/services/model/referential.model","StatusList":"./src/app/core/services/model/referential.model","StatusById":"./src/app/core/services/model/referential.model","MINIFY_ENTITY_FOR_LOCAL_STORAGE":"./src/app/core/services/model/referential.model","MINIFY_ENTITY_FOR_POD":"./src/app/core/services/model/referential.model","UsageMode":"./src/app/core/services/model/settings.model","LocaleConfig":"./src/app/core/services/model/settings.model","APP_LOCALES":"./src/app/core/services/model/settings.model","OfflineFeature":"./src/app/core/services/model/settings.model","LocalSettings":"./src/app/core/services/model/settings.model","UserSettings":"./src/app/core/services/model/settings.model","AppGraphQLModule":"./src/app/core/graphql/graphql.module","WatchQueryOptions":"./src/app/core/graphql/graphql.service","MutateQueryOptions":"./src/app/core/graphql/graphql.service","APP_GRAPHQL_TYPE_POLICIES":"./src/app/core/graphql/graphql.service","GraphqlService":"./src/app/core/graphql/graphql.service","IsLoginAccountPipe":"./src/app/core/services/pipes/account.pipes","AccountToStringPipe":"./src/app/core/services/pipes/account.pipes","DepartmentToStringPipe":"./src/app/core/services/pipes/department-to-string.pipe","PersonToStringPipe":"./src/app/core/services/pipes/person-to-string.pipe","IsOnFieldModePipe":"./src/app/core/services/pipes/usage-mode.pipes","IsNotOnFieldModePipe":"./src/app/core/services/pipes/usage-mode.pipes","PlatformService":"./src/app/core/services/platform.service","ConnectionType":"./src/app/core/services/network.service","AuthTokenType":"./src/app/core/services/network.service","getConnectionType":"./src/app/core/services/network.service","NetworkEventType":"./src/app/core/services/network.service","NetworkService":"./src/app/core/services/network.service","Fragments":"./src/app/core/services/config.service","APP_CONFIG_OPTIONS":"./src/app/core/services/config.service","ConfigService":"./src/app/core/services/config.service","CORE_CONFIG_OPTIONS":"./src/app/core/services/config/core.config","SETTINGS_STORAGE_KEY":"./src/app/core/services/local-settings.service","SETTINGS_TRANSIENT_PROPERTIES":"./src/app/core/services/local-settings.service","APP_LOCAL_SETTINGS":"./src/app/core/services/local-settings.service","APP_LOCAL_SETTINGS_OPTIONS":"./src/app/core/services/local-settings.service","AddToPageHistoryOptions":"./src/app/core/services/local-settings.service","LocalSettingsService":"./src/app/core/services/local-settings.service","AccountDetails":"./src/app/core/services/account.service","AuthData":"./src/app/core/services/account.service","RegisterData":"./src/app/core/services/account.service","IsEmailExistsVariables":"./src/app/core/services/account.service","AccountService":"./src/app/core/services/account.service","CryptoSaltParams":"./src/app/core/services/crypto.service","KeyPair":"./src/app/core/services/crypto.service","CryptoService":"./src/app/core/services/crypto.service","AuthGuardService":"./src/app/core/services/auth-guard.service","Base58":"./src/app/core/services/base58","QueryVariables":"./src/app/core/services/base-graphql-service.class","MutateQueryWithCacheUpdateOptions":"./src/app/core/services/base-graphql-service.class","MutableWatchQueryOptions":"./src/app/core/services/base-graphql-service.class","MutableWatchQueryDescription":"./src/app/core/services/base-graphql-service.class","FindMutableWatchQueriesOptions":"./src/app/core/services/base-graphql-service.class","BaseGraphqlServiceOptions":"./src/app/core/services/base-graphql-service.class","BaseGraphqlService":"./src/app/core/services/base-graphql-service.class","MutableWatchQueriesUpdatePolicy":"./src/app/core/services/base-entity-service.class","BaseEntityGraphqlQueries":"./src/app/core/services/base-entity-service.class","BaseEntityGraphqlMutations":"./src/app/core/services/base-entity-service.class","BaseEntityGraphqlSubscriptions":"./src/app/core/services/base-entity-service.class","BaseEntityServiceOptions":"./src/app/core/services/base-entity-service.class","EntitySaveOptions":"./src/app/core/services/base-entity-service.class","BaseEntityService":"./src/app/core/services/base-entity-service.class","EntitiesStorageTypePolicies":"./src/app/core/services/storage/entities-storage.service","APP_LOCAL_STORAGE_TYPE_POLICIES":"./src/app/core/services/storage/entities-storage.service","EntitiesStorage":"./src/app/core/services/storage/entities-storage.service","ENTITIES_STORAGE_KEY_PREFIX":"./src/app/core/services/storage/entity-store.class","EntityStoreTypePolicyMode":"./src/app/core/services/storage/entity-store.class","EntityStoreTypePolicy":"./src/app/core/services/storage/entity-store.class","EntityStorageLoadOptions":"./src/app/core/services/storage/entity-store.class","EntityStore":"./src/app/core/services/storage/entity-store.class","AppValidatorService":"./src/app/core/services/validator/base.validator.class","IAppEditor":"./src/app/core/form/editor.class","AppTabEditorOptions":"./src/app/core/form/editor.class","AppEditor":"./src/app/core/form/editor.class","AppTabEditor":"./src/app/core/form/editor.class","AppEditorOptions":"./src/app/core/form/entity-editor.class","AppEntityEditor":"./src/app/core/form/entity-editor.class","EntityMetadataComponent":"./src/app/core/form/entity-metadata.component","AppForm":"./src/app/core/form/form.class","IAppFormGetter":"./src/app/core/form/form.utils","OnReady":"./src/app/core/form/form.utils","IAppForm":"./src/app/core/form/form.utils","AppNullForm":"./src/app/core/form/form.utils","AppFormProvider":"./src/app/core/form/form.utils","AppFormUtils":"./src/app/core/form/form.utils","copyEntity2Form":"./src/app/core/form/form.utils","getFormValueFromEntity":"./src/app/core/form/form.utils","adaptValueToControl":"./src/app/core/form/form.utils","logFormErrors":"./src/app/core/form/form.utils","FormErrors":"./src/app/core/form/form.utils","getFormErrors":"./src/app/core/form/form.utils","getControlFromPath":"./src/app/core/form/form.utils","disableControls":"./src/app/core/form/form.utils","addValueInArray":"./src/app/core/form/form.utils","resizeArray":"./src/app/core/form/form.utils","removeValueInArray":"./src/app/core/form/form.utils","clearValueInArray":"./src/app/core/form/form.utils","markAllAsTouched":"./src/app/core/form/form.utils","markFormGroupAsTouched":"./src/app/core/form/form.utils","markControlAsTouched":"./src/app/core/form/form.utils","updateValueAndValidity":"./src/app/core/form/form.utils","markAsUntouched":"./src/app/core/form/form.utils","waitWhilePending":"./src/app/core/form/form.utils","waitIdle":"./src/app/core/form/form.utils","isControlHasInput":"./src/app/core/form/form.utils","setCalculatedValue":"./src/app/core/form/form.utils","resetCalculatedValue":"./src/app/core/form/form.utils","FormArrayHelperOptions":"./src/app/core/form/form.utils","FormArrayHelper":"./src/app/core/form/form.utils","FormButtonsBarToken":"./src/app/core/form/form-buttons-bar.component","FormButtonsBarComponent":"./src/app/core/form/form-buttons-bar.component","ItemButton":"./src/app/core/form/list.form","AppListFormOptions":"./src/app/core/form/list.form","AppListForm":"./src/app/core/form/list.form","AppPropertiesForm":"./src/app/core/form/properties.form","SETTINGS_DISPLAY_COLUMNS":"./src/app/core/table/table.class","SETTINGS_SORTED_COLUMN":"./src/app/core/table/table.class","SETTINGS_FILTER":"./src/app/core/table/table.class","SETTINGS_PAGE_SIZE":"./src/app/core/table/table.class","DEFAULT_PAGE_SIZE":"./src/app/core/table/table.class","DEFAULT_PAGE_SIZE_OPTIONS":"./src/app/core/table/table.class","RESERVED_START_COLUMNS":"./src/app/core/table/table.class","RESERVED_END_COLUMNS":"./src/app/core/table/table.class","DEFAULT_REQUIRED_COLUMNS":"./src/app/core/table/table.class","CellValueChangeListener":"./src/app/core/table/table.class","IModalDetailOptions":"./src/app/core/table/table.class","SaveActionType":"./src/app/core/table/table.class","AppTable":"./src/app/core/table/table.class","AppTableUtils":"./src/app/core/table/table.utils","AppInMemoryTable":"./src/app/core/table/memory-table.class","AppTableDataServiceOptions":"./src/app/core/table/entities-table-datasource.class","AppTableDataSourceOptions":"./src/app/core/table/entities-table-datasource.class","EntitiesTableDataSource":"./src/app/core/table/entities-table-datasource.class","ColumnItem":"./src/app/core/table/table-select-columns.component","TableSelectColumnsComponent":"./src/app/core/table/table-select-columns.component","ActionsColumnComponent":"./src/app/core/table/actions-column.component","getRandomImage":"./src/app/core/home/home","APP_HOME_BUTTONS":"./src/app/core/home/home","HomePage":"./src/app/core/home/home","SettingsPage":"./src/app/core/settings/settings.page","AccountPage":"./src/app/core/account/account","AuthForm":"./src/app/core/auth/form/form-auth","AuthModal":"./src/app/core/auth/modal/modal-auth","RegisterConfirmPage":"./src/app/core/register/confirm/confirm","APP_ABOUT_DEVELOPERS":"./src/app/core/about/modal-about","APP_ABOUT_PARTNERS":"./src/app/core/about/modal-about","AboutModal":"./src/app/core/about/modal-about","SelectPeerModal":"./src/app/core/peer/select-peer.modal","InstallAppLink":"./src/app/core/install/install-upgrade-card.component","AppInstallUpgradeCard":"./src/app/core/install/install-upgrade-card.component","APP_MENU_ITEMS":"./src/app/core/menu/menu.component","MenuComponent":"./src/app/core/menu/menu.component","MenuItem":"./src/app/core/menu/menu.model","MenuItems":"./src/app/core/menu/menu.model","AppMenuModule":"./src/app/core/menu/menu.module","MenuService":"./src/app/core/menu/menu.service","EntityClass":"./src/app/core/services/model/entity.decorators","EntityClasses":"./src/app/core/services/model/entity.decorators","SocialModule":"./src/app/social/social.module","UserEventTypes":"./src/app/social/services/model/user-event.model","UserEvent":"./src/app/social/services/model/user-event.model","UserEventAction":"./src/app/social/services/model/user-event.model","UserEventFilter":"./src/app/social/services/user-event.service","UserEventWatchOptions":"./src/app/social/services/user-event.service","UserEventActionDefinition":"./src/app/social/services/user-event.service","UserEventService":"./src/app/social/services/user-event.service","UserEventDetail":"./src/app/social/list/user-events.table","UserEventIcon":"./src/app/social/list/user-events.table","UserEventsTable":"./src/app/social/list/user-events.table","AdminModule":"./src/app/admin/admin.module","AdminRoutingModule":"./src/app/admin/admin-routing.module","PersonFilter":"./src/app/admin/services/filter/person.filter","PersonValidatorService":"./src/app/admin/services/validator/person.validator","ErrorCodes":"./src/app/admin/services/errors","PersonFragments":"./src/app/admin/services/person.service","PersonService":"./src/app/admin/services/person.service","UsersPage":"./src/app/admin/users/list/users","ɵb":"./src/app/shared/material/numpad/numpad.dom-service","ɵc":"./src/app/shared/material/badge/badge-icon.module","ɵd":"./src/app/shared/material/badge/badge-icon.directive","ɵe":"./src/app/shared/focusable","ɵf":"./src/app/shared/material/badge/badge-icon.test","ɵg":"./src/app/core/register/form/form-register","ɵh":"./src/app/core/services/validator/account.validator","ɵi":"./src/app/core/register/modal/modal-register","ɵj":"./src/app/core/services/validator/user-settings.validator","ɵk":"./src/app/core/services/validator/local-settings.validator","ɵl":"./src/app/core/icon/icon.component"},"importAs":"@sumaris-net/ngx-components"}
1
+ {"__symbolic":"module","version":4,"exports":[{"from":"./src/app/vendor"}],"metadata":{"ENVIRONMENT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":31},"arguments":["ENV"]},"Environment":{"__symbolic":"class","members":{}},"DATE_ISO_PATTERN":"YYYY-MM-DDTHH:mm:ss.SSSZ","DEFAULT_PLACEHOLDER_CHAR":"_","PUBKEY_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":2,"character":29,"module":"./src/app/shared/constants"},"SPACE_PLACEHOLDER_CHAR":" ","KEYBOARD_HIDE_DELAY_MS":250,"scrollFactory":{"__symbolic":"function","parameters":["overlay"],"value":{"__symbolic":"error","message":"Lambda not supported","line":41,"character":9,"module":"./src/app/shared/shared.module"}},"SharedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":44,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":46,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":47,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":48,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":49,"character":4},{"__symbolic":"reference","module":"ngx-color-picker","name":"ColorPickerModule","line":50,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":51,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":52,"character":4},{"__symbolic":"reference","module":"ngx-markdown","name":"MarkdownModule","line":53,"character":4},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedHotkeysModule"}],"declarations":[{"__symbolic":"reference","name":"ToolbarComponent"},{"__symbolic":"reference","name":"ModalToolbarComponent"},{"__symbolic":"reference","name":"AppFormField"},{"__symbolic":"reference","name":"AppLoadingSpinner"},{"__symbolic":"reference","name":"AppHelpModal"}],"exports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":69,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":70,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":71,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":72,"character":4},{"__symbolic":"reference","module":"ngx-color-picker","name":"ColorPickerModule","line":73,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":74,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":75,"character":4},{"__symbolic":"reference","module":"ngx-markdown","name":"MarkdownModule","line":76,"character":4},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedHotkeysModule"},{"__symbolic":"reference","name":"ToolbarComponent"},{"__symbolic":"reference","name":"ModalToolbarComponent"},{"__symbolic":"reference","name":"AppFormField"},{"__symbolic":"reference","name":"AppLoadingSpinner"},{"__symbolic":"reference","name":"AppHelpModal"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ionic/angular","name":"IonicRouteStrategy","line":7,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"shouldReuseRoute":[{"__symbolic":"method"}]}},"SharedRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":45,"character":4}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/router","name":"RouteReuseStrategy","line":48,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"}},{"provide":{"__symbolic":"reference","name":"ComponentDirtyGuard"},"useClass":{"__symbolic":"reference","name":"ComponentDirtyGuard"}}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"SharedMaterialModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":87,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":44,"character":2},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":45,"character":2},{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSortModule","line":46,"character":2},{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorModule","line":47,"character":2},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":48,"character":2},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":49,"character":2},{"__symbolic":"reference","module":"@angular/cdk/table","name":"CdkTableModule","line":50,"character":2},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":51,"character":2},{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionModule","line":52,"character":2},{"__symbolic":"reference","module":"@angular/material/toolbar","name":"MatToolbarModule","line":53,"character":2},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":54,"character":2},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":55,"character":2},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":56,"character":2},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":57,"character":2},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":58,"character":2},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":59,"character":2},{"__symbolic":"reference","module":"@angular/material/tabs","name":"MatTabsModule","line":60,"character":2},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":61,"character":2},{"__symbolic":"reference","module":"@angular/material/stepper","name":"MatStepperModule","line":62,"character":2},{"__symbolic":"reference","module":"@angular/material/button-toggle","name":"MatButtonToggleModule","line":63,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":64,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":65,"character":2},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":66,"character":2},{"__symbolic":"reference","module":"@angular/material/badge","name":"MatBadgeModule","line":67,"character":2},{"__symbolic":"reference","module":"@angular/material/slide-toggle","name":"MatSlideToggleModule","line":68,"character":2},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":69,"character":2},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":70,"character":2},{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"ScrollingModule","line":71,"character":2},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":72,"character":2},{"__symbolic":"reference","module":"@angular/material/divider","name":"MatDividerModule","line":73,"character":2},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":74,"character":2},{"__symbolic":"reference","name":"SharedMatAutocompleteModule"},{"__symbolic":"reference","name":"SharedMatLatLongModule"},{"__symbolic":"reference","name":"SharedMatDateTimeModule"},{"__symbolic":"reference","name":"SharedMatDurationModule"},{"__symbolic":"reference","name":"SharedMatBooleanModule"},{"__symbolic":"reference","name":"SharedMatNumpadModule"},{"__symbolic":"reference","name":"SharedMatSwipeModule"},{"__symbolic":"reference","name":"MaterialChipsModule"},{"__symbolic":"reference","name":"ɵc"}],"exports":[{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":44,"character":2},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":45,"character":2},{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSortModule","line":46,"character":2},{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorModule","line":47,"character":2},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":48,"character":2},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":49,"character":2},{"__symbolic":"reference","module":"@angular/cdk/table","name":"CdkTableModule","line":50,"character":2},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":51,"character":2},{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionModule","line":52,"character":2},{"__symbolic":"reference","module":"@angular/material/toolbar","name":"MatToolbarModule","line":53,"character":2},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":54,"character":2},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":55,"character":2},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":56,"character":2},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":57,"character":2},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":58,"character":2},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":59,"character":2},{"__symbolic":"reference","module":"@angular/material/tabs","name":"MatTabsModule","line":60,"character":2},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":61,"character":2},{"__symbolic":"reference","module":"@angular/material/stepper","name":"MatStepperModule","line":62,"character":2},{"__symbolic":"reference","module":"@angular/material/button-toggle","name":"MatButtonToggleModule","line":63,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":64,"character":2},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":65,"character":2},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":66,"character":2},{"__symbolic":"reference","module":"@angular/material/badge","name":"MatBadgeModule","line":67,"character":2},{"__symbolic":"reference","module":"@angular/material/slide-toggle","name":"MatSlideToggleModule","line":68,"character":2},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":69,"character":2},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":70,"character":2},{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"ScrollingModule","line":71,"character":2},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":72,"character":2},{"__symbolic":"reference","module":"@angular/material/divider","name":"MatDividerModule","line":73,"character":2},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":74,"character":2},{"__symbolic":"reference","name":"SharedMatAutocompleteModule"},{"__symbolic":"reference","name":"SharedMatLatLongModule"},{"__symbolic":"reference","name":"SharedMatDateTimeModule"},{"__symbolic":"reference","name":"SharedMatDurationModule"},{"__symbolic":"reference","name":"SharedMatBooleanModule"},{"__symbolic":"reference","name":"SharedMatNumpadModule"},{"__symbolic":"reference","name":"SharedMatSwipeModule"},{"__symbolic":"reference","name":"MaterialChipsModule"},{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{}},"SharedMatBooleanModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":25,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":26,"character":4},{"__symbolic":"reference","module":"ngx-material-timepicker","name":"NgxMaterialTimepickerModule","line":27,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":28,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"MatBooleanField"}],"declarations":[{"__symbolic":"reference","name":"MatBooleanField"}]}]}],"members":{}},"MatBooleanField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":33,"character":1},"arguments":[{"selector":"mat-boolean-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":24,"character":11},"useExisting":{"__symbolic":"reference","name":"MatBooleanField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":40,"character":19},"member":"OnPush"},"template":"<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n","styles":[":host{width:100%}.mat-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-form-field.mat-boolean-field-button{margin-top:-4px}.mat-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis:calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"style":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"buttonsColCount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3},"arguments":["class"]}]}],"yesLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"noLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"showButtonIcons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"yesIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"noIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"onPressEnter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3},"arguments":["keyup.enter"]}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"yesButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":98,"character":3},"arguments":["yesButton"]}]}],"noButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":99,"character":3},"arguments":["noButton"]}]}],"checkboxButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":100,"character":3},"arguments":["checkboxButton"]}]}],"fakeInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":101,"character":3},"arguments":["fakeInput"]}]}],"suffixDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":102,"character":3},"arguments":["suffix",{"static":false}]}]}],"suffixInjections":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":103,"character":3},"arguments":["injectMatSuffix"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":109,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":106,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":107,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":108,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":109,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"_onFocusFakeInput":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"onRadioValueChanged":[{"__symbolic":"method"}],"onCheckboxValueChanged":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SharedMatAutocompleteModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"ScrollingModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":22,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":31,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":32,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":35,"character":4},{"__symbolic":"reference","name":"MatAutocompleteField"}],"declarations":[{"__symbolic":"reference","name":"MatAutocompleteField"}]}]}],"members":{}},"MatAutocompleteField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":114,"character":1},"arguments":[{"selector":"mat-autocomplete-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":108,"character":11},"useExisting":{"__symbolic":"reference","name":"MatAutocompleteField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":120,"character":19},"member":"OnPush"},"template":"<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- readonly -->\n <ng-container>\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n","styles":[":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}.fact-scroll-viewport{height:100%;width:100%}.fact-item{height:54px;display:flex}.fact-item .fact-date{min-width:100px;text-align:center;font-size:24pt}.fact-item .fact-date,.fact-item .fact-text{height:100%;align-items:center;justify-content:center;display:flex}.fact-item .fact-text{border-radius:10px}cdk-virtual-scroll-viewport{border:1px solid #000}cdk-virtual-scroll-viewport li{list-style:none}"]}]}],"members":{"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":155,"character":3}}]}],"logPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":156,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":157,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":158,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":159,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":160,"character":3}}]}],"suggestFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":161,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":162,"character":3}}]}],"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":163,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":164,"character":3}}]}],"debounceTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":165,"character":3}}]}],"displayWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":166,"character":3}}]}],"displayAttributes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":167,"character":3}}]}],"displayColumnSizes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":168,"character":3}}]}],"displayColumnNames":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":169,"character":3}}]}],"highlightAccent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":170,"character":3}}]}],"showAllOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":171,"character":3}}]}],"showPanelOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":172,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":173,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":174,"character":3}}]}],"i18nPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":175,"character":3}}]}],"noResultMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":176,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":177,"character":3},"arguments":["class"]}]}],"panelWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":178,"character":3}}]}],"matAutocompletePosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":179,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":180,"character":3}}]}],"itemSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":182,"character":3}}]}],"fetchMoreThreshold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":183,"character":3}}]}],"suggestLengthThreshold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":184,"character":3}}]}],"showLoadingSpinner":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":185,"character":3}}]}],"animationsDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":187,"character":3},"arguments":["@.disabled"]}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":190,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":202,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":211,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":220,"character":3}}]}],"onClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":246,"character":3},"arguments":["click"]}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":247,"character":3},"arguments":["blur"]}]}],"onFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":248,"character":3},"arguments":["focus"]}]}],"onDropButtonClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":250,"character":3},"arguments":["dropButtonClick"]}]}],"onKeydownEscape":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":251,"character":3},"arguments":["keydown.escape"]}]}],"onKeyupEnter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":252,"character":3},"arguments":["keyup.enter"]}]}],"matSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":254,"character":3},"arguments":["matSelect"]}]}],"matInputText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":255,"character":3},"arguments":["matInputText"]}]}],"matAutocomplete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":256,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocomplete","line":256,"character":13}]}]}],"matAutocompleteTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":257,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteTrigger","line":257,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":273,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":272,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":273,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"reloadItems":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"filterInputTextFocusInEvent":[{"__symbolic":"method"}],"filterInputTextBlurEvent":[{"__symbolic":"method"}],"filterMatSelectFocusEvent":[{"__symbolic":"method"}],"filterMatSelectBlurEvent":[{"__symbolic":"method"}],"toggleSearch":[{"__symbolic":"method"}],"clearValue":[{"__symbolic":"method"}],"_initAutocompleteInfiniteScroll":[{"__symbolic":"method"}],"_initMatSelectInfiniteScroll":[{"__symbolic":"method"}],"closePanel":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"fetchMore":[{"__symbolic":"method"}],"updateImplicitValue":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"getAutocompletePanel":[{"__symbolic":"method"}],"getMatSelectPanel":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}]}},"MatAutocompleteFieldConfig":{"__symbolic":"interface"},"MatAutocompleteConfigHolder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":58,"character":32,"module":"./src/app/shared/material/autocomplete/material.autocomplete"}]}],"add":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"MatAutocompleteFieldAddOptions":{"__symbolic":"interface"},"MaterialChipsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":21,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","name":"SharedDirectivesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":31,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":32,"character":4},"member":"forChild"}}],"declarations":[{"__symbolic":"reference","name":"MatChipsField"}],"exports":[{"__symbolic":"reference","name":"MatChipsField"}]}]}],"members":{}},"MatChipsField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"mat-chips-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":20,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"MatChipsField"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":25,"character":19},"member":"OnPush"},"template":"<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\" class=\"material-chips\" [class.mat-form-field-disabled]=\"disabled\">\n <div matPrefix>\n <ng-content select=\"[matPrefix]\"></ng-content>\n </div>\n <mat-label>{{placeholder}}</mat-label>\n <mat-chip-list #chipList>\n <mat-chip\n *ngFor=\"let item of value\"\n [selectable]=\"false\"\n [removable]=\"!disabled\"\n (removed)=\"remove(item)\">\n {{displayWith(item)}}\n <mat-icon matChipRemove *ngIf=\"!disabled\">cancel</mat-icon>\n </mat-chip>\n\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autoCombo\"\n [formControl]=\"inputControl\"\n [appAutofocus]=\"appAutofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"disabled\"\n [hidden]=\"disabled\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (blur)=\"blurred.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (keyup.arrowdown)=\"!autoCombo.showPanel && onDropButtonClick.emit($event)\"\n [matChipInputFor]=\"chipList\"\n >\n </mat-chip-list>\n\n <!-- autocomplete -->\n <mat-autocomplete #autoCombo=\"matAutocomplete\"\n (optionSelected)=\"add($event)\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"class\">\n <ng-container *ngIf=\"(filteredItems$ | async) as items\">\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"isLast\" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: itemCount} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <!-- No item option -->\n <mat-option *ngIf=\"!items.length\" class=\"ion-no-padding\" [disabled]=\"true\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row>\n <ion-col *ngFor=\"let attr of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"getPropertyByPath(item, attr) | highlight: { search: inputControl.value, withAccent: highlightAccent } \"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n <ng-content matSuffix select=\"[matSuffix]\"></ng-content>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n </mat-form-field>\n\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n","styles":[":host{position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}"]}]}],"members":{"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"logPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"suggestFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"debounceTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"displayWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"displayAttributes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"displayColumnSizes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"displayColumnNames":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"highlightAccent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"showAllOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"showPanelOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"appAutofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"i18nPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"noResultMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"clicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":58,"character":3}}]}],"blurred":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":59,"character":3}}]}],"focused":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":60,"character":3}}]}],"matInputText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":62,"character":3},"arguments":["matInputText"]}]}],"autocompleteTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":63,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteTrigger","line":63,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":79,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":78,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":79,"character":38}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"reloadItems":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"filterInputTextFocusEvent":[{"__symbolic":"method"}],"clearValue":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"fadeInAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":5,"character":4},"arguments":["fadeInAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":8,"character":8},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":11,"character":12},"arguments":[{"opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":14,"character":12},"arguments":[".3s",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":14,"character":27},"arguments":[{"opacity":1}]}]}]]}]]},"fadeInOutAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":20,"character":4},"arguments":["fadeInOutAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":23,"character":8},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":26,"character":12},"arguments":[{"opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":29,"character":12},"arguments":[".3s",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":29,"character":27},"arguments":[{"opacity":1}]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":33,"character":8},"arguments":[":leave",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":35,"character":12},"arguments":[".5s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":35,"character":39},"arguments":[{"opacity":0}]}]}]]}]]},"slideInOutAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":43,"character":4},"arguments":["slideInOutAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":46,"character":8},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":46,"character":19},"arguments":[{"position":"relative","top":0,"left":0,"right":0,"bottom":0,"opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":57,"character":8},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":60,"character":12},"arguments":[{"left":"400%","opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":70,"character":12},"arguments":[".3s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":70,"character":39},"arguments":[{"left":0,"opacity":0.8}]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":80,"character":8},"arguments":[":leave",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":82,"character":12},"arguments":[".5s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":82,"character":39},"arguments":[{"left":"400%","opacity":0}]}]}]]}]]},"slideUpDownAnimation":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":94,"character":2},"arguments":["slideUpDownAnimation",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":97,"character":4},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":97,"character":15},"arguments":[{"transform":"translateY(0)","opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":103,"character":4},"arguments":[":enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":106,"character":6},"arguments":[{"transform":"translateY(-400%)","opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":112,"character":6},"arguments":[".3s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":112,"character":33},"arguments":[{"transform":"translateY(0)","opacity":1}]}]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":119,"character":4},"arguments":[":leave",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":121,"character":6},"arguments":[".5s ease-in-out",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":121,"character":33},"arguments":[{"transform":"translateY(-100%)","opacity":0}]}]}]]}]]},"MatPaginatorI18n":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginatorIntl","line":6,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":24,"character":33}]}],"translateLabels":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MatStepperI18n":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/material/stepper","name":"MatStepperIntl","line":5,"character":36},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":7,"character":33}]}],"translateLabels":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"SharedMatDateTimeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":19,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":21,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":23,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MatMomentDateModule","line":31,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":32,"character":4},{"__symbolic":"reference","module":"ngx-material-timepicker","name":"NgxMaterialTimepickerModule","line":33,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":34,"character":4},"member":"forChild"}},{"__symbolic":"reference","name":"SharedDirectivesModule"}],"exports":[{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":38,"character":4},{"__symbolic":"reference","name":"MatDate"},{"__symbolic":"reference","name":"MatDateTime"},{"__symbolic":"reference","name":"MatDateShort"}],"declarations":[{"__symbolic":"reference","name":"MatDate"},{"__symbolic":"reference","name":"MatDateTime"},{"__symbolic":"reference","name":"MatDateShort"}]}]}],"members":{}},"MatDateShort":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":29,"character":1},"arguments":[{"selector":"mat-date-short-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":19,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDateShort"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":36,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n","styles":[":host{display:inline-block;width:100%;position:relative}:host [no-padding]{--ion-grid-column-padding:0}:host [nowrap]{flex-wrap:nowrap}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md,mat-form-field ion-datetime{padding:0!important}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"datePicker1":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":88,"character":3},"arguments":["datePicker1"]}]}],"datePicker2":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":89,"character":3},"arguments":["datePicker2"]}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":91,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":103,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":104,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":98,"character":14},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment/moment","name":"Moment","line":99,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":100,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":101,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":102,"character":16},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":103,"character":34},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":104,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onDatePickerChange":[{"__symbolic":"method"}],"updatePattern":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"openDatePickerIfMobile":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"closeDatePicker":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"waitKeyboardHide":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatDateTime":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":60,"character":1},"arguments":[{"selector":"mat-date-time-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":40,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDateTime"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":67,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n","styles":[":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md{padding:0!important}ion-row.no-wrap{flex-wrap:nowrap}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]}]}],"members":{"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"datePicker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":133,"character":3},"arguments":["datePicker"]}]}],"timePicker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":134,"character":3},"arguments":["timePicker"]}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":136,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":145,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":139,"character":22},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":140,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":141,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":142,"character":25},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":143,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":144,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":145,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"updatePattern":[{"__symbolic":"method"}],"onDatePickerChange":[{"__symbolic":"method"}],"onTimePickerChange":[{"__symbolic":"method"}],"openDatePickerIfMobile":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"openTimePickerIfMobile":[{"__symbolic":"method"}],"openTimePicker":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"emitChange":[{"__symbolic":"method"}],"hideKeyboard":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatDate":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":49,"character":1},"arguments":[{"selector":"mat-date-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":40,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDate"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":56,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n </mat-form-field>\n\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n\n","styles":[":host{display:inline-block;width:100%;position:relative}:host [no-padding]{--ion-grid-column-padding:0}:host [nowrap]{flex-wrap:nowrap}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md,mat-form-field ion-datetime{padding:0!important}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"startDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"datePicker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":101,"character":3},"arguments":["datePicker"]}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":103,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":115,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":116,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":110,"character":14},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":111,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":112,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":113,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":114,"character":16},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":115,"character":34},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":116,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onDatePickerChange":[{"__symbolic":"method"}],"updatePattern":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"openDatePickerIfMobile":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"waitKeyboardHide":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatLatLongField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":35,"character":1},"arguments":[{"selector":"mat-latlong-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":41,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"MatLatLongField"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":46,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formatFn(value, formatFnOptions)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <ion-col class=\"text ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #inputElement\n type=\"text\"\n autocomplete=\"off\"\n [textMask]=\"textMaskConfig\"\n [formControl]=\"textFormControl\"\n [placeholder]=\"inputPlaceholder|translate\"\n (keypress)=\"onKeypress($event)\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (focus)=\"_onFocus($event)\"\n (blur)=\"_onBlur($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n\n <div *ngIf=\"!showSignControl\" matSuffix #injectMatSuffix></div>\n\n <!--<div matSuffix *ngIf=\"!showSignControl\"><ng-content select=\"[matSuffix]\"></ng-content></div>-->\n\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n\n <!-- errors -->\n <ng-container *ngIf=\"formControl.touched\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('latitude')\" translate>ERROR.FIELD_NOT_VALID_LATITUDE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('longitude')\" translate>ERROR.FIELD_NOT_VALID_LONGITUDE</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </ng-container>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n </mat-form-field>\n </ion-col>\n\n <!-- sign -->\n <ion-col class=\"sign ion-no-padding\" [ngSwitch]=\"type\" *ngIf=\"showSignControl\">\n\n <!-- sign on latitude -->\n <mat-form-field *ngSwitchCase=\"'latitude'\"\n floatLabel=\"never\"\n [class.mat-form-field-invalid]=\"formControl.touched && signFormControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.LAT_LONG.LAT_SIGN_PLACEHOLDER</mat-label>\n <mat-select [formControl]=\"signFormControl\"\n [tabindex]=\"tabindex+1\">\n <mat-option [value]=\"1\">{{'COMMON.LAT_LONG.LAT_SIGN_N'|translate}}</mat-option>\n <mat-option [value]=\"-1\" >{{'COMMON.LAT_LONG.LAT_SIGN_S'|translate}}</mat-option>\n </mat-select>\n\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- sign on longitude -->\n <mat-form-field floatLabel=\"never\"\n *ngSwitchCase=\"'longitude'\"\n [class.mat-form-field-invalid]=\"formControl.touched && signFormControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.LAT_LONG.LONG_SIGN_PLACEHOLDER</mat-label>\n <mat-select [formControl]=\"signFormControl\"\n [tabindex]=\"tabindex+2\">\n <mat-option [value]=\"1\" translate>{{'COMMON.LAT_LONG.LONG_SIGN_E'|translate}}</mat-option>\n <mat-option [value]=\"-1\" translate>{{'COMMON.LAT_LONG.LONG_SIGN_W'|translate}}</mat-option>\n </mat-select>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n","styles":[":host{display:inline-block;width:100%;min-width:140px;position:relative;--ion-grid-column-padding:0}mat-form-field .datetime-md{padding:0!important}ion-row{flex-wrap:nowrap}ion-row ion-col.text{min-width:80px}ion-row ion-col.sign{min-width:60px;max-width:70px}mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}"]}]}],"members":{"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"pattern":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3},"arguments":["latLongPattern"]}]}],"defaultSign":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"maxDecimals":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":103,"character":3}}]}],"onFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":106,"character":3}}]}],"inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":109,"character":3},"arguments":["inputElement"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":116,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":112,"character":22},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":113,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":114,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":115,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":116,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"_onFocus":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"moveCaretToSeparator":[{"__symbolic":"method"}],"onKeypress":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SharedMatLatLongModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":25,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":26,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":27,"character":4},"member":"forChild"}},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":28,"character":4}],"exports":[{"__symbolic":"reference","name":"MatLatLongField"}],"declarations":[{"__symbolic":"reference","name":"MatLatLongField"}]}]}],"members":{}},"SharedMatDurationModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","name":"SharedPipesModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":22,"character":4},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":23,"character":4},{"__symbolic":"reference","module":"ngx-material-timepicker","name":"NgxMaterialTimepickerModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MatMomentDateModule","line":26,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":27,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"MatDuration"}],"declarations":[{"__symbolic":"reference","name":"MatDuration"}]}]}],"members":{}},"MatDuration":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":47,"character":1},"arguments":[{"selector":"mat-duration-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":36,"character":11},"useExisting":{"__symbolic":"reference","name":"MatDuration"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":54,"character":19},"member":"OnPush"},"template":"<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{ formControl.value|duration }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput type=\"text\"\n autocomplete=\"off\"\n [formControl]=\"textControl\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.DURATION_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n\n <!-- errors -->\n <mat-error *ngIf=\"!formControl.hasError('required') && textControl.hasError('pattern')\" translate>ERROR.FIELD_NOT_VALID_PATTERN</mat-error>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors.min }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors.max }}</mat-error>\n\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n</ng-template>\n\n","styles":[":host{display:inline-block;min-width:140px;position:relative;--ion-grid-column-padding:0}:host,mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"maxDecimals":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"placeholderChar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"matInputs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":101,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":113,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":108,"character":14},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":109,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":110,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":111,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":112,"character":16},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":113,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onFormChange":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"moveCaretToSeparator":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SharedMatNumpadModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":17,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":18,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"MatNumpadComponent"},{"__symbolic":"reference","name":"NumpadDirective"},{"__symbolic":"reference","name":"MatNumpadContainerComponent"},{"__symbolic":"reference","name":"MatNumpadContent"},{"__symbolic":"reference","name":"AppendToInputDirective"}],"declarations":[{"__symbolic":"reference","name":"MatNumpadContainerComponent"},{"__symbolic":"reference","name":"MatNumpadComponent"},{"__symbolic":"reference","name":"MatNumpadContent"},{"__symbolic":"reference","name":"NumpadDirective"},{"__symbolic":"reference","name":"AppendToInputDirective"}]}]}],"members":{}},"NumpadDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":6,"character":1},"arguments":[{"selector":"[matNumpad]","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":10,"character":15},"useExisting":{"__symbolic":"reference","name":"NumpadDirective"},"multi":true}],"host":{"[disabled]":"disabled","(click)":"onClick($event)","(change)":"updateValue($event.target.value)","(blur)":"onTouched()","$quoted$":["[disabled]","(click)","(change)","(blur)"]}}]}],"members":{"keymap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"numpad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["matNumpad"]}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"decimal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"disableClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":62,"character":34}]}],"updateValue":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":81,"character":3},"arguments":["click",["$event"]]}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"registerNumpad":[{"__symbolic":"method"}],"applyingKey":[{"__symbolic":"method"}],"updateInputValue":[{"__symbolic":"method"}]}},"AppendToInputDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[appendNumpadToInput]"}]}],"members":{"inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":5},"arguments":["appendNumpadToInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":17,"character":39,"context":{"typeName":"HTMLElement"},"module":"./src/app/shared/material/numpad/numpad.append-to-input.directive"}]},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":18,"character":34}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"changePosition":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":64,"character":5},"arguments":["window:scroll"]}]}],"append":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}],"defineElementYByDirection":[{"__symbolic":"method"}],"defineElementXByDirection":[{"__symbolic":"method"}]}},"AnimationState":{"ENTER":"enter","ENTER_INPUT":"enter-input","LEAVE":"leave"},"MatNumpadContainerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"mat-numpad-container","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":14,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":17,"character":4},"arguments":["numpadBackdrop",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":18,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":18,"character":17},"arguments":[{"opacity":0,"background":"transparent"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":19,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":19,"character":34},"arguments":[{"opacity":1}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":20,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":20,"character":34},"arguments":[{"opacity":0}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":21,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":"* => ","right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":22,"character":8},"arguments":[{"opacity":0}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":23,"character":8},"arguments":["0.4s cubic-bezier(0.25, 0.8, 0.25, 1)"]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":25,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},"right":" => "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":26,"character":8},"arguments":[{"opacity":1}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":27,"character":8},"arguments":["0.2s cubic-bezier(0.25, 0.8, 0.25, 1)"]}]]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":32,"character":4},"arguments":["numpadFadeIn",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":33,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":33,"character":17},"arguments":[{"opacity":1,"transform":"scale(1)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":34,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":34,"character":34},"arguments":[{"opacity":1,"transform":"scale(1)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":35,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":35,"character":34},"arguments":[{"opacity":0,"transform":"scale(0.9)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":37,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":"* => ","right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":38,"character":8},"arguments":[{"opacity":0,"transform":"scale(0.6)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":39,"character":8},"arguments":["0.2s ease-out"]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":41,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},"right":" => "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":42,"character":8},"arguments":["0.2s ease-out"]}]]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":46,"character":4},"arguments":["numpadPanelExpansion",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":47,"character":6},"arguments":["*",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":47,"character":17},"arguments":[{"opacity":1,"transform":"scaleY(0) translateY(-50%)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":48,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":48,"character":34},"arguments":[{"opacity":1,"transform":"scale(1) translateY(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":49,"character":6},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":49,"character":34},"arguments":[{"opacity":0,"transform":"scale(1) translateY(0)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":52,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":"* => ","right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":53,"character":8},"arguments":["0.2s ease-out"]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":55,"character":6},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"ENTER"},"right":" => "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationState"},"member":"LEAVE"}},[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":56,"character":8},"arguments":["0.2s ease-out"]}]]}]]}],"template":"<div class=\"numpad-backdrop-overlay\"\n *ngIf=\"!noBackdrop\"\n (click)=\"overlayClick($event)\"\n [@numpadBackdrop]=\"backdropState\">\n</div>\n<div class=\"numpad-overlay\">\n <mat-numpad-content [appendToInput]=\"appendToInput\"\n [inputElement]=\"inputElement\" cdkTrapFocus>\n <div class=\"numpad {{position}}\"\n [class.panel]=\"appendToInput\"\n [@numpadPanelExpansion]=\"panelState\"\n (@numpadPanelExpansion.done)=\"animationDone($event)\"\n [@numpadFadeIn]=\"modalState\"\n (@numpadFadeIn.done)=\"animationDone($event)\">\n <ion-grid>\n <ion-row *ngFor=\"let row of filteredKeymap | async\">\n <ion-col size=\"{{12/columnCount}}\" *ngFor=\"let item of row\">\n <ion-button mat-button expand=\"block\"\n *ngIf=\"item\"\n [color]=\"item.color || 'secondary'\"\n (click)=\"onButtonClick($event, item)\">\n <ion-icon *ngIf=\"item.icon; else label\" slot=\"icon-only\" [name]=\"item.icon\"></ion-icon>\n <ng-template #label>\n <ion-label>{{ (item.label || item.key) | translate }}</ion-label>\n </ng-template>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </mat-numpad-content>\n</div>\n","styles":[":host{display:inline-block;max-width:300px;--ion-grid-padding:0;--ion-grid-column-padding:0;--background-color:#fff;--padding:8px}.numpad-backdrop-overlay{position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(0,0,0,.32);z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent}.numpad-overlay{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;pointer-events:none}.numpad{width:300px;border-radius:4px;outline:none;position:static;z-index:1000;pointer-events:auto;background-color:var(--background-color,transparent);padding:var(--padding,5px);box-shadow:0 14px 45px rgba(0,0,0,.25),0 10px 18px rgba(0,0,0,.22)}.numpad.panel{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":84,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onButtonClick":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":131,"character":3},"arguments":["window:keydown",["$event"]]}]}],"overlayClick":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"animationDone":[{"__symbolic":"method"}],"defineFilteredKeymap":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"MatNumpadContent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"mat-numpad-content","template":"<div [appendNumpadToInput]=\"inputElement\" *ngIf=\"appendToInput; else modal\">\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<ng-template #modal>\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n"}]}],"members":{"appendToInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":7,"character":5}}]}],"inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":5}}]}]}},"MatNumpadComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"mat-numpad","template":""}]}],"members":{"keymap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"decimal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"appendToInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"disableAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"noBackdrop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"keypress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":24,"character":3}}]}],"closed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":25,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"registerInput":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}},"SharedMatSwipeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":16,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":17,"character":4},"member":"forChild"}},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":20,"character":4}],"exports":[{"__symbolic":"reference","name":"MatSwipeField"}],"declarations":[{"__symbolic":"reference","name":"MatSwipeField"}]}]}],"members":{}},"MatSwipeField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"mat-swipe-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":13,"character":11},"useExisting":{"__symbolic":"reference","name":"MatSwipeField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"template":"<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n","styles":[":host{display:inline-block;width:100%;position:relative}input.hidden{display:none}.slides-container .swiper-slide{font-size:16px!important}.slides-container.hidden{visibility:hidden;height:0!important}.button-next,.button-prev{position:absolute;top:calc(50% - 20px);z-index:10}.button-prev{left:0;right:auto}.button-next{left:auto;right:0}"]}]}],"members":{"logPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"mobile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"clearable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"compareWithFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"displayWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"displayAttributes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"appAutofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["class"]}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"onClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":112,"character":3},"arguments":["click"]}]}],"onBlur":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":114,"character":3},"arguments":["blur"]}]}],"onFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":116,"character":3},"arguments":["focus"]}]}],"fakeInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":118,"character":3},"arguments":["fakeInput"]}]}],"slides":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":120,"character":3},"arguments":["slides",{"static":true}]}]}],"prevButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":122,"character":3},"arguments":["prevButton"]}]}],"nextButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":123,"character":3},"arguments":["nextButton"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":139,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":138,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":139,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_onFocusFakeInput":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"clearValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"previous":[{"__symbolic":"method"}],"next":[{"__symbolic":"method"}],"reachStart":[{"__symbolic":"method"}],"reachEnd":[{"__symbolic":"method"}],"slidesLoaded":[{"__symbolic":"method"}],"slideChanged":[{"__symbolic":"method"}],"loadItems":[{"__symbolic":"method"}],"checkIfTouched":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"updateSlides":[{"__symbolic":"method"}],"slideTo":[{"__symbolic":"method"}],"updateButtons":[{"__symbolic":"method"}],"getSlides":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}]}},"selectInputContent":{"__symbolic":"function"},"selectInputRange":{"__symbolic":"function"},"getCaretPosition":{"__symbolic":"function"},"moveInputCaretToSeparator":{"__symbolic":"function"},"filterNumberInput":{"__symbolic":"function"},"focusInput":{"__symbolic":"function"},"setTabIndex":{"__symbolic":"function"},"InputElement":{"__symbolic":"interface"},"isInputElement":{"__symbolic":"function","parameters":["object"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵe"},"arguments":[{"__symbolic":"reference","name":"object"}]},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"in","left":"value","right":{"__symbolic":"reference","name":"object"}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"in","left":"tabindex","right":{"__symbolic":"reference","name":"object"}},"right":{"__symbolic":"binop","operator":"in","left":"tabIndex","right":{"__symbolic":"reference","name":"object"}}}}}},"asInputElement":{"__symbolic":"function"},"tabindexComparator":{"__symbolic":"function"},"CanGainFocusOptions":{"__symbolic":"interface"},"GetFocusableInputOptions":{"__symbolic":"interface"},"canHaveFocus":{"__symbolic":"function"},"getFocusableInputElements":{"__symbolic":"function"},"focusNextInput":{"__symbolic":"function"},"focusPreviousInput":{"__symbolic":"function"},"AppFormField":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"app-form-field","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":31,"character":15},"useExisting":{"__symbolic":"reference","name":"AppFormField"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":36,"character":19},"member":"OnPush"},"template":"<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{max:\n definition.maximumNumberDecimals} }}</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\"\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of definition.values\" [value]=\"item.key || item\">{{ (item.value || item) | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n","styles":[":host{display:inline-block;position:relative}"]}]}],"members":{"definition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"formControlName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"compact":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["class"]}]}],"onKeyupEnter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":3},"arguments":["keyup.enter"]}]}],"matInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":79,"character":3},"arguments":["matInput"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":85,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":82,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":83,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":84,"character":24},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":85,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"filterAlphanumericalInput":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"getDisplayValueFn":[{"__symbolic":"method"}],"getColorContrast":[{"__symbolic":"method"}],"computeNumberInputStep":[{"__symbolic":"method"}],"computeValuesFromToken":[{"__symbolic":"method"}],"checkAndResolveFormControl":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}]}},"AppLoadingSpinner":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-loading-spinner","template":"\n <ion-spinner *ngIf=\"loading; else content\" [color]=\"color\" [name]=\"name\"></ion-spinner>\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n "}]}],"members":{"loading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}]}},"DisplayFn":{"__symbolic":"interface"},"CompareWithFn":{"__symbolic":"interface"},"FormFieldType":{"__symbolic":"interface"},"FormFieldDefinition":{"__symbolic":"interface"},"FormFieldDefinitionMap":{"__symbolic":"interface"},"FormFieldValuesHolder":{"__symbolic":"class","members":{"getAsBoolean":[{"__symbolic":"method"}],"getAsInt":[{"__symbolic":"method"}],"getAsNumbers":[{"__symbolic":"method"}],"getAsStrings":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"ToolbarToken":{"__symbolic":"class","members":{"doBackClick":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}]}},"ToolbarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"app-toolbar","providers":[{"provide":{"__symbolic":"reference","name":"ToolbarToken"},"useExisting":{"__symbolic":"reference","name":"ToolbarComponent"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"<ion-header [class]=\"class\">\n <ion-toolbar [color]=\"color\">\n\n <ion-buttons slot=\"start\">\n\n <!-- back button -->\n <ion-button class=\"back-button\"\n *ngIf=\"canGoBack\"\n (click)=\"doBackClick($event)\"\n routerDirection=\"back\" >\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n\n <!-- show menu button -->\n <ion-menu-toggle [hidden]=\"canGoBack || !canShowMenu\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\" collapse=\"true\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- search bar -->\n <ion-searchbar #searchbar animated\n type=\"search\"\n *ngIf=\"hasSearch\"\n [class.cdk-visually-hidden]=\"!showSearchBar\"\n show-cancel-button=\"always\"\n (ionChange)=\"onSearch.emit($event)\"\n (ionCancel)=\"toggleSearchBar()\">\n </ion-searchbar>\n\n <!-- search button -->\n <ion-button (click)=\"toggleSearchBar()\"\n *ngIf=\"hasSearch && !showSearchBar\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n\n <!-- close button -->\n <ion-button *ngIf=\"hasClose\"\n (tap)=\"tapClose($event)\"\n class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n\n <!-- validate button -->\n <ion-button *ngIf=\"hasValidate\"\n (tap)=\"tapValidate($event)\"\n class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"save\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n\n <!-- progress bar -->\n <mat-progress-bar [color]=\"color\" [mode]=\"progressBarMode$ | async\">\n </mat-progress-bar>\n</ion-header>\n","styles":[""]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"backHref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"defaultBackHref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"hasValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"hasClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"hasSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"canGoBack":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"canShowMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"onValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":80,"character":3}}]}],"onClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":81,"character":3}}]}],"onValidateAndClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":82,"character":3}}]}],"onBackClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":3}}]}],"onSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":84,"character":3}}]}],"searchbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":89,"character":3},"arguments":["searchbar",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":95,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":92,"character":20},{"__symbolic":"reference","module":"@ionic/angular","name":"IonRouterOutlet","line":93,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":94,"character":16},{"__symbolic":"reference","name":"ProgressBarService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"toggleSearchBar":[{"__symbolic":"method"}],"doBackClick":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}],"tapClose":[{"__symbolic":"method"}],"tapValidate":[{"__symbolic":"method"}]}},"ModalToolbarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-modal-toolbar","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<ion-header>\n <ion-toolbar [color]=\"color\">\n <ion-buttons slot=\"start\">\n <ion-button visible-xs visible-sm visible-mobile\n (click)=\"cancel.emit()\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\">\n\n <ng-content select=\"ion-button[slot=end]\"></ng-content>\n\n <ion-spinner *ngIf=\"showSpinner\"></ion-spinner>\n\n <ion-button visible-xs visible-sm visible-mobile\n *ngIf=\"canValidate\"\n (click)=\"validate.emit($event)\">\n <ion-icon slot=\"icon-only\" *ngIf=\"validateIcon?.icon\" [name]=\"validateIcon.icon\"></ion-icon>\n <mat-icon slot=\"icon-only\" *ngIf=\"validateIcon?.matIcon\" >{{validateIcon.matIcon}}</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n","styles":[""]}]}],"members":{"modalName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"showSpinner":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"canValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"validateIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"cancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3}}]}],"validate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Hotkeys"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ProgressInterceptor":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ProgressBarService"}]}],"intercept":[{"__symbolic":"method"}]}},"ShowToastOptions":{"__symbolic":"interface"},"Toasts":{"__symbolic":"class","members":{},"statics":{"counter":0,"stackSize":0}},"AppHelpModalOptions":{"__symbolic":"interface"},"AppHelpModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-help-modal","template":"<app-modal-toolbar color=\"light\"\n [title]=\"title\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\">\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent\"\n [data]=\"markdownContent\"\n (ready)=\"markAsLoaded()\"\n emoji>\n </markdown>\n\n <markdown *ngIf=\"docUrl\"\n [src]=\"docUrl + '.md'\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji></markdown>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n\n\n"}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"markdownContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"docUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"showError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":29,"character":26},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":30,"character":26},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":33,"character":27},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":34,"character":20}]}],"close":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"onLoadError":[{"__symbolic":"method"}]}},"CanLeave":{"__symbolic":"interface"},"ComponentDirtyGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":19,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":20,"character":25}]}],"canDeactivate":[{"__symbolic":"method"}]}},"SharedDirectivesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"AutofocusDirective"}],"exports":[{"__symbolic":"reference","name":"AutofocusDirective"}]}]}],"members":{}},"AutofocusDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":11,"character":1},"arguments":[{"selector":"[autofocus], input[appAutofocus]","inputs":["shouldFocusElement: appAutofocus","timerDelay: autofocusDelay"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":16},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":30,"character":14},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":31,"character":36}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"startFocusWorkflow":[{"__symbolic":"method"}],"stopFocusWorkflow":[{"__symbolic":"method"}]}},"SharedPipesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":23,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":24,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":25,"character":4}],"declarations":[{"__symbolic":"reference","name":"PropertyGetPipe"},{"__symbolic":"reference","name":"DateFormatPipe"},{"__symbolic":"reference","name":"DateDiffDurationPipe"},{"__symbolic":"reference","name":"DurationPipe"},{"__symbolic":"reference","name":"DateFromNowPipe"},{"__symbolic":"reference","name":"LatLongFormatPipe"},{"__symbolic":"reference","name":"LatitudeFormatPipe"},{"__symbolic":"reference","name":"LongitudeFormatPipe"},{"__symbolic":"reference","name":"HighlightPipe"},{"__symbolic":"reference","name":"NumberFormatPipe"},{"__symbolic":"reference","name":"FileSizePipe"},{"__symbolic":"reference","name":"MathAbsPipe"},{"__symbolic":"reference","name":"OddPipe"},{"__symbolic":"reference","name":"EvenPipe"},{"__symbolic":"reference","name":"NotEmptyArrayPipe"},{"__symbolic":"reference","name":"EmptyArrayPipe"},{"__symbolic":"reference","name":"ArrayLengthPipe"},{"__symbolic":"reference","name":"ArrayFirstPipe"},{"__symbolic":"reference","name":"ArrayPluckPipe"},{"__symbolic":"reference","name":"ArrayIncludesPipe"},{"__symbolic":"reference","name":"ArrayFilterPipe"},{"__symbolic":"reference","name":"MapGetPipe"},{"__symbolic":"reference","name":"MapKeysPipe"},{"__symbolic":"reference","name":"MapValuesPipe"},{"__symbolic":"reference","name":"IsNilOrBlankPipe"},{"__symbolic":"reference","name":"IsNotNilOrBlankPipe"},{"__symbolic":"reference","name":"ToStringPipe"},{"__symbolic":"reference","name":"StrLengthPipe"},{"__symbolic":"reference","name":"TranslateContextPipe"},{"__symbolic":"reference","name":"TranslatablePipe"},{"__symbolic":"reference","name":"NgInitDirective"},{"__symbolic":"reference","name":"FormErrorTranslatePipe"}],"exports":[{"__symbolic":"reference","name":"PropertyGetPipe"},{"__symbolic":"reference","name":"DateFormatPipe"},{"__symbolic":"reference","name":"DateFromNowPipe"},{"__symbolic":"reference","name":"DateDiffDurationPipe"},{"__symbolic":"reference","name":"DurationPipe"},{"__symbolic":"reference","name":"LatLongFormatPipe"},{"__symbolic":"reference","name":"LatitudeFormatPipe"},{"__symbolic":"reference","name":"LongitudeFormatPipe"},{"__symbolic":"reference","name":"HighlightPipe"},{"__symbolic":"reference","name":"NumberFormatPipe"},{"__symbolic":"reference","name":"FileSizePipe"},{"__symbolic":"reference","name":"MathAbsPipe"},{"__symbolic":"reference","name":"OddPipe"},{"__symbolic":"reference","name":"EvenPipe"},{"__symbolic":"reference","name":"NotEmptyArrayPipe"},{"__symbolic":"reference","name":"EmptyArrayPipe"},{"__symbolic":"reference","name":"ArrayLengthPipe"},{"__symbolic":"reference","name":"ArrayFirstPipe"},{"__symbolic":"reference","name":"ArrayPluckPipe"},{"__symbolic":"reference","name":"MapGetPipe"},{"__symbolic":"reference","name":"MapKeysPipe"},{"__symbolic":"reference","name":"MapValuesPipe"},{"__symbolic":"reference","name":"IsNilOrBlankPipe"},{"__symbolic":"reference","name":"IsNotNilOrBlankPipe"},{"__symbolic":"reference","name":"ToStringPipe"},{"__symbolic":"reference","name":"StrLengthPipe"},{"__symbolic":"reference","name":"ArrayIncludesPipe"},{"__symbolic":"reference","name":"ArrayFilterPipe"},{"__symbolic":"reference","name":"TranslateContextPipe"},{"__symbolic":"reference","name":"TranslatablePipe"},{"__symbolic":"reference","name":"NgInitDirective"},{"__symbolic":"reference","name":"FormErrorTranslatePipe"}]}]}],"members":{}},"DateFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":6,"character":1},"arguments":[{"name":"dateFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MomentDateAdapter","line":17,"character":27},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":18,"character":25}]}],"transform":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DateFromNowPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"dateFromNow"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MomentDateAdapter","line":12,"character":25}]}],"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DateDiffDurationPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":8,"character":1},"arguments":[{"name":"dateDiffDuration"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":17,"character":37}]},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":18,"character":23}]}],"transform":[{"__symbolic":"method"}],"format":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LatLongFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"latLongFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"LatitudeFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":19,"character":1},"arguments":[{"name":"latitudeFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"LongitudeFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":27,"character":1},"arguments":[{"name":"longitudeFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":30,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"HighlightPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"highlight"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"NumberFormatPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"numberFormat"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PropertyGetPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"propertyGet"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DurationPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"duration"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":13,"character":23}]}],"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"FileSizePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":33,"character":1},"arguments":[{"name":"fileSize"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"MathAbsPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"mathAbs"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EvenPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":17,"character":1},"arguments":[{"name":"even"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"OddPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":28,"character":1},"arguments":[{"name":"odd"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"NotEmptyArrayPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isNotEmptyArray"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"EmptyArrayPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":17,"character":1},"arguments":[{"name":"isEmptyArray"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayLengthPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":31,"character":1},"arguments":[{"name":"isArrayLength"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayFirstPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":52,"character":1},"arguments":[{"name":"arrayFirst"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayPluckPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":62,"character":1},"arguments":[{"name":"arrayPluck"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayIncludesPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":74,"character":1},"arguments":[{"name":"arrayIncludes"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ArrayFilterPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":85,"character":1},"arguments":[{"name":"arrayFilter"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"MapGetPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"mapGet"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MapKeysPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":16,"character":1},"arguments":[{"name":"mapKeys"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MapValuesPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":28,"character":1},"arguments":[{"name":"mapValues"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsNotNilOrBlankPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isNotNilOrBlank"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsNilOrBlankPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":13,"character":1},"arguments":[{"name":"isNilOrBlank"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":23,"character":1},"arguments":[{"name":"toString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":26,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"StrLengthPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":34,"character":1},"arguments":[{"name":"strLength"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":37,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TranslateContextPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":5,"character":1},"arguments":[{"name":"translateContext"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TranslateContextService"}]}],"transform":[{"__symbolic":"method"}]}},"TranslatablePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":24,"character":1},"arguments":[{"name":"translatable"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":27,"character":1}}],"members":{"transform":[{"__symbolic":"method"}]}},"NgInitDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[ngInit]"}]}],"members":{"ngInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":7,"character":3}}]}],"ngOnInit":[{"__symbolic":"method"}]}},"FormErrorTranslatePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":6,"character":1},"arguments":[{"name":"translateFormError","pure":false}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FormErrorTranslator"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":20,"character":18}]}],"transform":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_updateValue":[{"__symbolic":"method"}],"_dispose":[{"__symbolic":"method"}]}},"AudioType":{"__symbolic":"interface"},"Sound":{"__symbolic":"interface"},"AudioProvider":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":34,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":35,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":32,"character":24},{"__symbolic":"reference","module":"@ionic-native/native-audio/ngx","name":"NativeAudio","line":33,"character":37},{"__symbolic":"reference","module":"@ionic-native/vibration/ngx","name":"Vibration","line":34,"character":35},{"__symbolic":"reference","module":"@ionic-native/audio-management/ngx","name":"AudioManagement","line":35,"character":41}]}],"playBeepConfirm":[{"__symbolic":"method"}],"playBeepError":[{"__symbolic":"method"}],"playStartupSound":[{"__symbolic":"method"}],"preload":[{"__symbolic":"method"}],"play":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}],"vibrate":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"readAudioMode":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"FileService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root","deps":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":13,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":14,"character":4}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":35,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":31,"character":22},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":34,"character":18},null]}],"getImages":[{"__symbolic":"method"}],"getImage":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IStartableService":{"__symbolic":"interface"},"StartableService":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":25,"character":5}}]],"parameters":[{"__symbolic":"error","message":"Expression form not supported","line":25,"character":37,"module":"./src/app/shared/services/startable-service.class"}]}],"start":[{"__symbolic":"method"}],"stop":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}]}},"Page":{"__symbolic":"interface"},"FetchMoreFn":{"__symbolic":"interface"},"LoadResult":{"__symbolic":"interface"},"SuggestFn":{"__symbolic":"interface"},"SuggestService":{"__symbolic":"interface"},"FilterFn":{"__symbolic":"interface"},"FilterFnFactory":{"__symbolic":"interface"},"EntityServiceLoadOptions":{"__symbolic":"interface"},"IEntityService":{"__symbolic":"interface"},"EntitiesServiceWatchOptions":{"__symbolic":"interface"},"IEntitiesService":{"__symbolic":"interface"},"LoadResultByPageFn":{"__symbolic":"interface"},"IEntityFullService":{"__symbolic":"interface"},"mergeLoadResult":{"__symbolic":"function","parameters":["res1","res2"],"value":{"data":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res1"},"member":"data"},"right":[]},"member":"concat"},"arguments":[{"__symbolic":"spread","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res2"},"member":"data"}}]},"total":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res1"},"member":"total"},"right":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res1"},"member":"data"},"member":"length"}},"right":0},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res2"},"member":"total"},"right":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"res2"},"member":"data"},"member":"length"}},"right":0}}}},"EntitiesService":{"__symbolic":"class","arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":101,"character":1}}],"members":{"ngOnDestroy":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}]}},"InMemoryEntitiesServiceOptions":{"__symbolic":"interface"},"InMemoryEntitiesService":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"EntitiesService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":58,"character":24,"module":"./src/app/shared/services/memory-entity-service.class"},{"__symbolic":"error","message":"Expression form not supported","line":59,"character":26,"module":"./src/app/shared/services/memory-entity-service.class"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":60,"character":45,"context":{"typeName":"T"},"module":"./src/app/shared/services/memory-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":60,"character":48,"context":{"typeName":"F"},"module":"./src/app/shared/services/memory-entity-service.class"}]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"sort":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}],"addSortByReplacement":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"markAsSaving":[{"__symbolic":"method"}],"markAsSaved":[{"__symbolic":"method"}]}},"ProgressMode":{"__symbolic":"interface"},"ProgressBarService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"list":[{"__symbolic":"method"}],"increase":[{"__symbolic":"method"}],"decrease":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TranslateContextService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":11,"character":25}]}],"get":[{"__symbolic":"method"}],"instant":[{"__symbolic":"method"}],"contextualKeys":[{"__symbolic":"method"}],"contextualKey":[{"__symbolic":"method"}],"findFirstValid":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CallableWithProgressionFn":{"__symbolic":"interface"},"CallableWithProgressionOptions":{"__symbolic":"interface"},"JobUtils":{"__symbolic":"class","members":{},"statics":{"defers":{"__symbolic":"function","parameters":["runnableList","opts"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"runnableList"},"member":"map"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":14,"character":28,"module":"./src/app/shared/services/job.utils"}]}},"defer":{"__symbolic":"function","parameters":["runnable","opts"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs","name":"defer","line":18,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":18,"character":37,"module":"./src/app/shared/services/job.utils"}]}}}},"APP_FORM_ERROR_I18N_KEYS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":44},"arguments":["appFormErrorKeys"]},"IFormControlPathTranslator":{"__symbolic":"interface"},"FormErrorTranslatorOptions":{"__symbolic":"interface"},"FormErrorTranslator":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_FORM_ERROR_I18N_KEYS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":28,"character":23},{"__symbolic":"reference","name":"ObjectMap"}]}],"translateErrors":[{"__symbolic":"method"}],"translateControlPath":[{"__symbolic":"method"}],"translateError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"KeyType":{"__symbolic":"interface"},"KeyValueType":{"__symbolic":"interface"},"KeysEnum":{"__symbolic":"interface"},"ObjectMap":{"__symbolic":"interface"},"ObjectMapEntry":{"__symbolic":"interface"},"PropertiesMap":{"__symbolic":"interface"},"Property":{"__symbolic":"interface"},"PropertiesArray":{"__symbolic":"interface"},"IconRef":{"__symbolic":"interface"},"DATE_UNIX_TIMESTAMP":"X","DATE_UNIX_MS_TIMESTAMP":"x","DateUtils":{"__symbolic":"class","members":{},"statics":{"min":{"__symbolic":"function","parameters":["date1","date2"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"date1"},"right":{"__symbolic":"reference","name":"date2"}},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"date1"},"member":"isSameOrBefore"},"arguments":[{"__symbolic":"reference","name":"date2"}]}},"thenExpression":{"__symbolic":"reference","name":"date1"},"elseExpression":{"__symbolic":"reference","name":"date2"}}},"max":{"__symbolic":"function","parameters":["date1","date2"],"value":{"__symbolic":"if","condition":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"date1"}},"thenExpression":{"__symbolic":"reference","name":"date2"},"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"date2"}},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"date1"},"member":"isSameOrAfter"},"arguments":[{"__symbolic":"reference","name":"date2"}]}},"thenExpression":{"__symbolic":"reference","name":"date1"},"elseExpression":{"__symbolic":"reference","name":"date2"}}}},"equals":{"__symbolic":"function","parameters":["date1","date2"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"DateUtils"},"member":"isSame"},"arguments":[{"__symbolic":"reference","name":"date1"},{"__symbolic":"reference","name":"date2"}]}}}},"toDateISOString":{"__symbolic":"function"},"fromDateISOString":{"__symbolic":"function"},"fromUnixTimestamp":{"__symbolic":"function","parameters":["timeInSec"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"moment"},"arguments":[{"__symbolic":"reference","name":"timeInSec"},"X"]}},"fromUnixMsTimestamp":{"__symbolic":"function","parameters":["timeInMs"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"moment"},"arguments":[{"__symbolic":"reference","name":"timeInMs"},"x"]}},"toDuration":{"__symbolic":"function"},"isNil":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}}},"isNilOrBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":8,"character":47,"module":"./src/app/shared/functions"},"right":"string"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"trim"}},"right":""}}}},"isNotNil":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}}},"isNotNilOrBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"error","message":"Expression form not supported","line":14,"character":47,"module":"./src/app/shared/functions"},"right":"string"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"trim"}},"right":""}}}},"isNotNilOrNaN":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"error","message":"Expression form not supported","line":17,"character":47,"module":"./src/app/shared/functions"},"right":"number"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}}}},"isNilOrNaN":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":20,"character":47,"module":"./src/app/shared/functions"},"right":"number"},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}}},"isNotEmptyArray":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":">","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"length"},"right":0}}},"firstArrayValue":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotEmptyArray"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"thenExpression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":0},"elseExpression":{"__symbolic":"reference","name":"undefined"}}},"isEmptyArray":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"length"}}}},"isNotNilString":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":32,"character":46,"module":"./src/app/shared/functions"},"right":"string"}},"right":false}},"notNilOrDefault":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"reference","name":"obj"},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"arraySize":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotEmptyArray"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"length"}},"right":0}},"arrayGroupBy":{"__symbolic":"function"},"arrayDistinct":{"__symbolic":"function"},"nullIfUndefined":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"thenExpression":null,"elseExpression":{"__symbolic":"reference","name":"obj"}}},"trimEmptyToNull":{"__symbolic":"function"},"toBoolean":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":"false"},"thenExpression":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"obj"}}},"elseExpression":false},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toNumber":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"pre","operator":"+","operand":{"__symbolic":"reference","name":"obj"}},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toFloat":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseFloat"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toInt":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"parseInt"},"arguments":[{"__symbolic":"reference","name":"obj"},0]},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"toNotNil":{"__symbolic":"function","parameters":["obj","defaultValue"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"undefined"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"thenExpression":{"__symbolic":"reference","name":"obj"},"elseExpression":{"__symbolic":"reference","name":"defaultValue"}}},"removeDuplicatesFromArray":{"__symbolic":"function"},"startsWithUpperCase":{"__symbolic":"function","parameters":["input","search"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"input"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"input"},"member":"toUpperCase"}},"member":"startsWith"},"arguments":[{"__symbolic":"reference","name":"search"}]}}},"matchUpperCase":{"__symbolic":"function","parameters":["input","regexp"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"input"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"input"},"member":"toUpperCase"}},"member":"match"},"arguments":[{"__symbolic":"reference","name":"regexp"}]}}}}},"noTrailingSlash":{"__symbolic":"function"},"replaceAll":{"__symbolic":"function"},"removeEnd":{"__symbolic":"function","parameters":["value","end"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"value"},"member":"endsWith"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"end"},"right":""}]},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"value"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"value"},"member":"length"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"end"},"member":"length"}}]},"elseExpression":{"__symbolic":"reference","name":"value"}}},"changeCaseToUnderscore":{"__symbolic":"function"},"removeDiacritics":{"__symbolic":"function","parameters":["text"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"text"},"member":"normalize"},"arguments":["NFD"]},"member":"replace"},"arguments":[{"__symbolic":"error","message":"Expression form not supported","line":131,"character":39,"module":"./src/app/shared/functions"},""]}},"suggestFromArray":{"__symbolic":"function"},"suggestFromStringArray":{"__symbolic":"function"},"joinPropertiesPath":{"__symbolic":"function"},"joinProperties":{"__symbolic":"function"},"propertyPathComparator":{"__symbolic":"function","parameters":["path"],"value":{"__symbolic":"error","message":"Lambda not supported","line":227,"character":9,"module":"./src/app/shared/functions"}},"propertyComparator":{"__symbolic":"function","parameters":["key","defaultValue"],"value":{"__symbolic":"error","message":"Lambda not supported","line":235,"character":9,"module":"./src/app/shared/functions"}},"propertiesPathComparator":{"__symbolic":"function"},"sort":{"__symbolic":"function"},"isInt":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"value"}]},"right":{"__symbolic":"error","message":"Reference to a local symbol","line":264,"character":6,"context":{"name":"INTEGER_REGEXP"},"module":"./src/app/shared/functions"}}},"isNumber":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"value"}]},"right":{"__symbolic":"error","message":"Reference to a local symbol","line":268,"character":6,"context":{"name":"NUMBER_REGEXP"},"module":"./src/app/shared/functions"}}},"isNumberRange":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"value"}]},"right":{"__symbolic":"error","message":"Reference to a local symbol","line":273,"character":6,"context":{"name":"NUMBER_RANGE_REGEXP"},"module":"./src/app/shared/functions"}}},"getPropertyByPath":{"__symbolic":"function"},"getProperty":{"__symbolic":"function"},"getPropertyByPathAsString":{"__symbolic":"function"},"sleep":{"__symbolic":"function"},"round":{"__symbolic":"function"},"equalsOrNil":{"__symbolic":"function","parameters":["value1","value2"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"value1"},"right":{"__symbolic":"reference","name":"value2"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNil"},"arguments":[{"__symbolic":"reference","name":"value1"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNil"},"arguments":[{"__symbolic":"reference","name":"value2"}]}}}},"removeAll":{"__symbolic":"function"},"remove":{"__symbolic":"function","parameters":["array","predicate"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"array"},"member":"slice"}},"member":"find"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":348,"character":28,"module":"./src/app/shared/functions"}]}},"capitalizeFirstLetter":{"__symbolic":"function"},"uncapitalizeFirstLetter":{"__symbolic":"function"},"splitByProperty":{"__symbolic":"function","parameters":["array","propertyName"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"array"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":367,"character":30,"module":"./src/app/shared/functions"},{}]}},"splitById":{"__symbolic":"function","parameters":["array"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"array"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":377,"character":30,"module":"./src/app/shared/functions"},{}]}},"equals":{"__symbolic":"function"},"Beans":{"__symbolic":"class","members":{},"statics":{"isEmpty":{"__symbolic":"function","parameters":["data","keys","opts"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNil"},"arguments":[{"__symbolic":"reference","name":"data"}]},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"isArray"},"arguments":[{"__symbolic":"reference","name":"keys"}]},"thenExpression":{"__symbolic":"reference","name":"keys"},"elseExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"keys"},"right":{"__symbolic":"reference","name":"data"}}]}},"member":"findIndex"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":461,"character":17,"module":"./src/app/shared/functions"}]},"right":-1}}}}},"filterNotNil":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"filter","line":7,"character":18},"arguments":[{"__symbolic":"reference","name":"isNotNil"}]}]}},"firstNotNil":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"first","line":10,"character":18},"arguments":[{"__symbolic":"reference","name":"isNotNil"}]}]}},"filterTrue":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"filter","line":13,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":13,"character":25,"module":"./src/app/shared/observables"}]}]}},"filterFalse":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"filter","line":16,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":16,"character":25,"module":"./src/app/shared/observables"}]}]}},"firstTruePromise":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"first","line":19,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":19,"character":24,"module":"./src/app/shared/observables"}]}]},"member":"toPromise"}}},"firstFalsePromise":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obs"},"member":"pipe"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"rxjs/operators","name":"first","line":22,"character":18},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":22,"character":24,"module":"./src/app/shared/observables"}]}]},"member":"toPromise"}}},"firstNotNilPromise":{"__symbolic":"function","parameters":["obs"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"firstNotNil"},"arguments":[{"__symbolic":"reference","name":"obs"}]},"member":"toPromise"}}},"chainPromises":{"__symbolic":"function","parameters":["defers"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"defers"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":28,"character":31,"module":"./src/app/shared/observables"},null]}},"WaitForOptions":{"__symbolic":"interface"},"waitFor":{"__symbolic":"function"},"PromiseEventPayload":{"__symbolic":"interface"},"PromiseEvent":{"__symbolic":"interface"},"createPromiseEventEmitter":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"EventEmitter","line":12,"character":13},"arguments":[true]}},"createPromiseEvent":{"__symbolic":"function"},"emitPromiseEvent":{"__symbolic":"function","parameters":["emitter","eventType","initArg"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Promise"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":30,"character":24,"module":"./src/app/shared/events"}]}},"CompletableEvent":{"__symbolic":"interface"},"fromScrollEndEvent":{"__symbolic":"function"},"Alerts":{"__symbolic":"class","members":{}},"SharedHotkeysModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":12,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":13,"character":4},"member":"forChild"}}],"exports":[{"__symbolic":"reference","name":"HotkeysDialogComponent"}],"declarations":[{"__symbolic":"reference","name":"HotkeysDialogComponent"}],"providers":[{"__symbolic":"reference","name":"Hotkeys"}]}]}],"members":{}},"Hotkeys":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":32,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"EventManager","line":30,"character":36},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":31,"character":30},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":33,"character":39}]}],"addShortcut":[{"__symbolic":"method"}],"openHelpModal":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"HotkeysDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"template":"<table>\n <tbody>\n <tr *ngFor=\"let keys of hotkeys\">\n <td>{{ keys[1] | translate }}</td>\n\n <td class=\"text-right\">\n <kbd>{{ keys[0] }}</kbd>\n </td>\n </tr>\n </tbody>\n</table>\n","styles":[":host table{border-collapse:collapse;width:100%;margin-bottom:1rem;color:#212529}:host th{font-weight:500;text-align:left;vertical-align:bottom;padding:.75rem;border-bottom:2px solid #dee2e6}:host td,:host th{border-top:1px solid #dee2e6}:host td{vertical-align:top;padding:.75rem .75rem .75rem 0}:host kbd{margin-right:6px;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-size:12px;line-height:10px;padding:3px 5px;vertical-align:middle}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":10,"character":22}]}]],"parameters":[null]}],"ngOnInit":[{"__symbolic":"method"}]}},"Color":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"number"}]},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"string"}]}],"rgba":[{"__symbolic":"method"}]},"statics":{"get":{"__symbolic":"function","parameters":["name"],"value":{"__symbolic":"index","expression":{},"index":{"__symbolic":"reference","name":"name"}}},"transparent":{"__symbolic":"error","message":"Lambda not supported","line":59,"character":23}}},"ColorName":{"__symbolic":"interface"},"ColorScale":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","name":"any"}]}],"getValueColor":[{"__symbolic":"method"}],"computeLegend":[{"__symbolic":"method"}]},"statics":{"custom":{"__symbolic":"error","message":"Lambda not supported","line":131,"character":18},"default":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColorScale"},"member":"custom"},"arguments":[25]}},"fix":{"__symbolic":"function","parameters":["length","colorName"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"apply"},"arguments":[null,{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Array"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"length"},"right":25}]}]},"member":"map"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"String"},"member":"prototype"},"member":"valueOf"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Color"},"member":"get"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"colorName"},"right":"primary"}]},"member":"rgba"},"arguments":[0.5]}]}}}},"ColorScaleLegend":{"__symbolic":"interface"},"ColorScaleOptions":{"__symbolic":"interface"},"ColorGradientOptions":{"__symbolic":"interface"},"ColorScaleLegendItem":{"__symbolic":"interface"},"rgbToHex":{"__symbolic":"function","parameters":["r","g","b"],"value":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":"#","right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}}},"rgbArrayToHex":{"__symbolic":"function","parameters":["rgb"],"value":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":"#","right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}},"right":{"__symbolic":"error","message":"Reference to a non-exported function","line":28,"character":9,"context":{"name":"componentToHex"},"module":"./src/app/shared/graph/colors.utils"}}},"hexToRgbArray":{"__symbolic":"function"},"hexToRgb":{"__symbolic":"function"},"mixHex":{"__symbolic":"function"},"getColorShade":{"__symbolic":"function","parameters":["color"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"mixHex"},"arguments":["#000000",{"__symbolic":"reference","name":"color"},12]}},"getColorTint":{"__symbolic":"function","parameters":["color"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"mixHex"},"arguments":["#ffffff",{"__symbolic":"reference","name":"color"},10]}},"getColorContrast":{"__symbolic":"function"},"HAMMER_TAP_TIME":250,"HAMMER_PRESS_TIME":400,"AppGestureConfig":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/platform-browser","name":"HammerGestureConfig","line":11,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildHammer":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"HammerSwipeAction":{"__symbolic":"interface"},"HammerSwipeEvent":{"__symbolic":"interface"},"HammerTapEvent":{"__symbolic":"interface"},"SharedValidators":{"__symbolic":"class","members":{},"statics":{"_REGEXP_CACHE":{"__symbolic":"error","message":"Expression form not supported","line":14,"character":16},"I18N_ERROR_KEYS":{"required":"ERROR.FIELD_REQUIRED","min":"ERROR.FIELD_MIN","max":"ERROR.FIELD_MAX","minlength":"ERROR.FIELD_MIN_LENGTH","maxlength":"ERROR.FIELD_MAX_LENGTH","pubkey":"ERROR.FIELD_NOT_VALID_PUBKEY","validDate":"ERROR.FIELD_NOT_VALID_DATE","dateIsAfter":"ERROR.FIELD_NOT_VALID_DATE_AFTER","dateRange":"ERROR.FIELD_NOT_VALID_DATE_RANGE","dateMinDuration":"ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION","dateMaxDuration":"ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION","maxDecimals":"ERROR.FIELD_MAXIMUM_DECIMALS","integer":"ERROR.FIELD_NOT_VALID_INTEGER","email":"ERROR.FIELD_NOT_VALID_EMAIL","latitude":"ERROR.FIELD_NOT_VALID_LATITUDE","longitude":"ERROR.FIELD_NOT_VALID_LONGITUDE","pattern":"ERROR.FIELD_NOT_VALID_PATTERN","unique":"ERROR.FIELD_NOT_UNIQUE","entity":"ERROR.FIELD_INVALID"},"dateIsAfter":{"__symbolic":"function","parameters":["previousValue","errorParam","granularity"],"value":{"__symbolic":"error","message":"Lambda not supported","line":140,"character":11,"module":"./src/app/shared/validator/validators"}},"copyParentErrors":{"__symbolic":"function","parameters":["errorNames"],"value":{"__symbolic":"error","message":"Lambda not supported","line":193,"character":11,"module":"./src/app/shared/validator/validators"}}}},"SharedFormGroupValidators":{"__symbolic":"class","members":{"first":[{"__symbolic":"method"}]},"statics":{"dateMinDuration":{"__symbolic":"function","parameters":["startDateField","endDateField","minDuration","durationUnit"],"value":{"__symbolic":"error","message":"Lambda not supported","line":282,"character":11,"module":"./src/app/shared/validator/validators"}},"requiredIf":{"__symbolic":"function","parameters":["fieldName","anotherFieldToCheck"],"value":{"__symbolic":"error","message":"Lambda not supported","line":304,"character":11,"module":"./src/app/shared/validator/validators"}},"requiredIfTrue":{"__symbolic":"function","parameters":["fieldName","anotherFieldToCheck"],"value":{"__symbolic":"error","message":"Lambda not supported","line":320,"character":11,"module":"./src/app/shared/validator/validators"}},"requiredIfEmpty":{"__symbolic":"function","parameters":["fieldName","anotherFieldToCheck"],"value":{"__symbolic":"error","message":"Lambda not supported","line":336,"character":11,"module":"./src/app/shared/validator/validators"}},"propagateIfDirty":{"__symbolic":"function","parameters":["fieldName","fieldNameToPropagate","valueToPropagate"],"value":{"__symbolic":"error","message":"Lambda not supported","line":350,"character":11,"module":"./src/app/shared/validator/validators"}}}},"SharedFormArrayValidators":{"__symbolic":"class","members":{},"statics":{"uniqueEntity":{"__symbolic":"function","parameters":["controlName"],"value":{"__symbolic":"error","message":"Lambda not supported","line":381,"character":11,"module":"./src/app/shared/validator/validators"}},"validSumMaxValue":{"__symbolic":"function","parameters":["controlName","max"],"value":{"__symbolic":"error","message":"Lambda not supported","line":435,"character":11,"module":"./src/app/shared/validator/validators"}}}},"LatLongPattern":{"__symbolic":"interface"},"LAT_LONG_PATTERNS":["DDMMSS","DDMM","DD"],"LatLongFormatOptions":{"__symbolic":"class","members":{}},"LatLongFormatFn":{"__symbolic":"interface"},"LAT_LONG_DEFAULT_MAX_DECIMALS":3,"formatLatitude":{"__symbolic":"function"},"formatLongitude":{"__symbolic":"function"},"parseLatitudeOrLongitude":{"__symbolic":"function"},"SharedTestingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":9,"character":4},"member":"forChild"}},{"__symbolic":"reference","name":"MaterialTestingModule"}],"exports":[{"__symbolic":"reference","name":"MaterialTestingModule"}]}]}],"members":{}},"MaterialTestingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":59,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":61,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":62,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":63,"character":4},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":65,"character":4},"member":"forChild"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":66,"character":4},"member":"forChild"},"arguments":[[{"path":"","pathMatch":"full","component":{"__symbolic":"reference","name":"MaterialTestingPage"}},{"path":"autocomplete","pathMatch":"full","component":{"__symbolic":"reference","name":"AutocompleteTestPage"}},{"path":"datetime","pathMatch":"full","component":{"__symbolic":"reference","name":"DateTimeTestPage"}},{"path":"latlong","pathMatch":"full","component":{"__symbolic":"reference","name":"LatLongTestPage"}},{"path":"swipe","pathMatch":"full","component":{"__symbolic":"reference","name":"SwipeTestPage"}},{"path":"chips","pathMatch":"full","component":{"__symbolic":"reference","name":"ChipsTestPage"}},{"path":"badge-icon","pathMatch":"full","component":{"__symbolic":"reference","name":"ɵf"}}]]}],"declarations":[{"__symbolic":"reference","name":"MaterialTestingPage"},{"__symbolic":"reference","name":"DateTimeTestPage"},{"__symbolic":"reference","name":"AutocompleteTestPage"},{"__symbolic":"reference","name":"LatLongTestPage"},{"__symbolic":"reference","name":"SwipeTestPage"},{"__symbolic":"reference","name":"ChipsTestPage"},{"__symbolic":"reference","name":"ɵf"}],"exports":[{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":80,"character":4},{"__symbolic":"reference","name":"DateTimeTestPage"},{"__symbolic":"reference","name":"MaterialTestingPage"},{"__symbolic":"reference","name":"AutocompleteTestPage"},{"__symbolic":"reference","name":"LatLongTestPage"},{"__symbolic":"reference","name":"SwipeTestPage"},{"__symbolic":"reference","name":"ChipsTestPage"}]}]}],"members":{}},"TestingPage":{"__symbolic":"interface"},"APP_TESTING_PAGES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":37},"arguments":["testingPages"]},"MaterialTestingPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-material-testing","template":"\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Material components</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <ion-list>\n\n <ion-item-divider>Shared Material components</ion-item-divider>\n\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./datetime')\">\n Date/Time field\n </ion-item>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./autocomplete')\">\n Autocomplete field\n </ion-item>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./latlong')\">\n Lat/Long field\n </ion-item>\n<!-- <ion-item tappable class=\"text-1x\" (click)=\"openPage('./numpad')\">-->\n<!-- Numeric pad component-->\n<!-- </ion-item>-->\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./swipe')\">\n Swipe component\n </ion-item>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./chips')\">\n Chips component\n </ion-item>\n\n <ion-item-divider>Directive</ion-item-divider>\n <ion-item tappable class=\"text-1x\" (click)=\"openPage('./badge-icon')\">\n Badge icon directive\n </ion-item>\n\n <ng-container *ngIf=\"pages && pages.length\">\n <ion-item-divider>Other components</ion-item-divider>\n\n <ion-item *ngFor=\"let item of pages\"\n tappable class=\"text-1x\"\n (click)=\"openPage(item.page)\">{{item.label}}</ion-item>\n\n </ng-container>\n </ion-list>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":19},"arguments":[{"__symbolic":"reference","name":"APP_TESTING_PAGES"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":18,"character":23},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":19,"character":24},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":20,"character":27},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"openPage":[{"__symbolic":"method"}]}},"AutocompleteTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":37,"character":1},"arguments":[{"selector":"app-autocomplete-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Autocomplete field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <!-- Tab nav - mobile/desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link\n [active]=\"mode==='mobile'\"\n (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='memory'\"\n (click)=\"toggleMode('memory')\">\n <mat-label>Memory leak debug</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!--<ion-grid *ngIf=\"mode === 'temp'\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable&lt;any[]&gt;</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n </ion-grid>-->\n\n\n <ion-grid *ngIf=\"mode === 'memory'\">\n\n <!-- debugging memory leak -->\n <ion-row>\n <ion-col>\n <ion-text><h4>Debug memory leak</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Items type\">\n <mat-select (selectionChange)=\"memoryAutocompleteFieldName=$event.value\" [value]=\"memoryAutocompleteFieldName\">\n <mat-option value=\"entity-$items\">Observable</mat-option>\n <mat-option value=\"entity-suggestFn\">Suggest function</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n <ion-col size=\"1\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Mobile ?\">\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [checked]=\"memoryMobile\">\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\" color=\"tertiary\">Start</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\" color=\"tertiary\">Stop</ion-button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n *ngIf=\"!memoryHide && memoryAutocompleteFieldName\"\n [config]=\"autocompleteFields.get(memoryAutocompleteFieldName)\"\n [mobile]=\"memoryMobile\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-memory-leak]'\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n <!-- Mobile mode -->\n <ion-grid *ngIf=\"mode === 'mobile'\">\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Suggest() function\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, suggestFn: (searchText, filter) =&gt; any[]</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-1]'\"\n [required]=\"true\"\n placeholder=\"Suggest field\"\n ></mat-autocomplete-field>\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\">\n Items is an Observable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-observable]'\"\n ></mat-autocomplete-field>\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\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\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\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Change filter\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <ion-button (click)=\"updateFilter('entity-items-filter')\">Filter on: {{autocompleteFields.get('entity-items-filter').filter?.searchAttribute }}</ion-button>\n </ion-col>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-filter]'\"\n ></mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"min-width-large\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"true\"\n class=\"min-width-large\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n </mat-autocomplete-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\n <!-- Desktop mode -->\n <ion-grid *ngIf=\"mode === 'desktop'\">\n <ion-row>\n <ion-col>\n <ion-text><h4>Desktop mode</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n items from suggest function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;\nsuggestLengthThreshold: '3'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-desktop-suggest]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an array\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: [], value: {{stringify(form.controls.entity.value)}}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [logPrefix]=\"'[combo-desktop-array-1]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\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-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\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\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-missing]'\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\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\">\n Full size panel\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class: 'mat-autocomplete-panel-full-size'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [compareWith]=\"compareWithFn\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\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\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-disable]'\"\n ></mat-autocomplete-field>\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\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"mat-autocomplete-panel-full-size\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n class=\"mat-autocomplete-panel-full-size\"\n panelWidth=\"100vw\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>panelWidth: string</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n <ion-col size=\"3\">\n <mat-checkbox #showIcons [checked]=\"false\">\n Icons ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n <mat-icon matPrefix *ngIf=\"showIcons.checked\">keyboard_arrow_right</mat-icon>\n <mat-icon matSuffix *ngIf=\"showIcons.checked\">keyboard_arrow_left</mat-icon>\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":56,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"loadItems":[{"__symbolic":"method"}],"entityToString":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"compareWithFn":[{"__symbolic":"method"}],"toggleMode":[{"__symbolic":"method"}],"startMemoryTimer":[{"__symbolic":"method"}],"stopMemoryTimer":[{"__symbolic":"method"}],"updateFilter":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}]}},"LatLongTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-latlong-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\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 class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!-- Empty value -->\n <form *ngIf=\"form.get('empty') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Empty, with defaults</h4></ion-text></ion-col></ion-row>\n\n <ion-row >\n\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD, defaultSign '-'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\">\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 formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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 <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM, defaultSign '+'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\">\n\n <mat-icon matPrefix >room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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 formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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 <!-- Mobile + DDMM -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Mobile=true\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n mobile=\"true\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\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.get('enable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row><ion-col><ion-text><h4>With value</h4></ion-text></ion-col></ion-row>\n\n <ion-row>\n\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\">\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\">\n Format DDMM\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\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\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMMSS\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\">\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.get('disable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Disabled control</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></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 formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\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 formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (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\">\n Readonly (control is enable)\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field #readonlyField [formControl]=\"form.get('enable.latitude')\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\">\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 </ion-row>\n </ion-grid>\n </form>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":15,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"geoPosition":[{"__symbolic":"method"}]}},"SwipeTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-swipe-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Swipe test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <h1>Swipe page:</h1>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n <!-- empty -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"empty\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [tabindex]=\"1\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- date -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Date\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"date\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"2\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled empty\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"disabledEmpty\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"3\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n<!-- read-only-->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled with date\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"disabledDate\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [compareWithFn]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"4\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":23,"character":27},{"__symbolic":"reference","name":"DateFormatPipe"}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"displayDate":[{"__symbolic":"method"}],"compareDate":[{"__symbolic":"method"}]}},"DateTimeTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-data-time-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Date/Time field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <!-- debugging memory leak -->\n <ion-row><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\">Start timer</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\">Stop timer</ion-button>\n </ion-col>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"never\">\n <input matInput type=\"text\" hidden>\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [value]=\"memoryMobile\">\n Mobile ?\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n <ion-col>\n <mat-date-time-field formControlName=\"empty\"\n *ngIf=\"!memoryHide\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"memoryMobile\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-col>\n </ion-row>\n\n <!-- Mobile mode -->\n <ion-row><ion-col><ion-text><h4>Mobile mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <!-- debug console -->\n <ion-row>\n <!-- buttons -->\n <ion-col size=\"2\">\n <!-- submit form -->\n <ion-button (click)=\"doSubmit($event)\"\n fill=\"outline\">\n <ion-icon name=\"checkmark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n <!-- clear log -->\n <ion-button (click)=\"clearLogPanel()\"\n fill=\"outline\">\n <ion-icon name=\"trash\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col size=\"10\" *ngIf=\"showLogPanel\">\n <ion-text color=\"primary\">Log:<br/></ion-text>\n <div class=\"ion-padding-start\">\n <ion-text color=\"medium\">\n <small [innerHTML]=\"logContent\"></small>\n </ion-text>\n </div>\n </ion-col>\n </ion-row>\n\n <!-- Desktop mode -->\n <ion-row><ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly toggle\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.readonly.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <mat-date-time-field #readonlyField formControlName=\"readonly\"\n placeholder=\"Date/Time\"\n [readonly]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":29,"character":24},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":30,"character":27},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":31,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"log":[{"__symbolic":"method"}],"clearLogPanel":[{"__symbolic":"method"}],"startMemoryTimer":[{"__symbolic":"method"}],"stopMemoryTimer":[{"__symbolic":"method"}]}},"ChipsTestPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"app-chips-test","template":"<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Chips field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Suggest() function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <pre><small>suggestFn: (searchText, filter) =&gt; any[]</small></pre>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [logPrefix]=\"'[mat-chips-empty] '\"\n [compareWith]=\"compareWithFn\"\n ></mat-chips-field>\n {{stringify(form.controls.entity.value)}}\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\">\n Suggest() function with initial value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <pre><small>suggestFn: (searchText, filter) =&gt; any[]</small></pre>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"entityInitial\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[mat-chips-initialized] '\"\n ></mat-chips-field>\n {{stringify(form.controls.entityInitial.value)}}\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\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[mat-chips-disabled] '\"\n ></mat-chips-field>\n {{stringify(form.controls.disableEntity.value)}}\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\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-chips-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[mat-chips-readonly] '\"\n [readonly]=\"true\"\n ></mat-chips-field>\n {{stringify(form.controls.entity.value)}}\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </form>\n\n</ion-content>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":37,"character":27}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"loadItems":[{"__symbolic":"method"}],"entityToString":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"compareWithFn":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}]}},"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":34,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"SharedModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":37,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":38,"character":4},{"__symbolic":"reference","name":"AppGraphQLModule"},{"__symbolic":"reference","module":"ionic-cache","name":"CacheModule","line":40,"character":4},{"__symbolic":"reference","module":"@ionic/storage","name":"IonicStorageModule","line":41,"character":4},{"__symbolic":"reference","module":"ngx-jdenticon","name":"NgxJdenticonModule","line":42,"character":4},{"__symbolic":"reference","name":"AppMenuModule"}],"declarations":[{"__symbolic":"reference","name":"IsOnFieldModePipe"},{"__symbolic":"reference","name":"IsNotOnFieldModePipe"},{"__symbolic":"reference","name":"PersonToStringPipe"},{"__symbolic":"reference","name":"IsLoginAccountPipe"},{"__symbolic":"reference","name":"AccountToStringPipe"},{"__symbolic":"reference","name":"DepartmentToStringPipe"},{"__symbolic":"reference","name":"HomePage"},{"__symbolic":"reference","name":"AboutModal"},{"__symbolic":"reference","name":"AuthForm"},{"__symbolic":"reference","name":"AuthModal"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"RegisterConfirmPage"},{"__symbolic":"reference","name":"AccountPage"},{"__symbolic":"reference","name":"SettingsPage"},{"__symbolic":"reference","name":"SelectPeerModal"},{"__symbolic":"reference","name":"AppInstallUpgradeCard"},{"__symbolic":"reference","name":"TableSelectColumnsComponent"},{"__symbolic":"reference","name":"ActionsColumnComponent"},{"__symbolic":"reference","name":"EntityMetadataComponent"},{"__symbolic":"reference","name":"FormButtonsBarComponent"},{"__symbolic":"reference","name":"AppPropertiesForm"},{"__symbolic":"reference","name":"AppListForm"},{"__symbolic":"reference","name":"ɵl"}],"exports":[{"__symbolic":"reference","name":"SharedModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":83,"character":4},{"__symbolic":"reference","name":"AppGraphQLModule"},{"__symbolic":"reference","name":"AppMenuModule"},{"__symbolic":"reference","name":"IsOnFieldModePipe"},{"__symbolic":"reference","name":"IsNotOnFieldModePipe"},{"__symbolic":"reference","name":"PersonToStringPipe"},{"__symbolic":"reference","name":"IsLoginAccountPipe"},{"__symbolic":"reference","name":"AccountToStringPipe"},{"__symbolic":"reference","name":"HomePage"},{"__symbolic":"reference","name":"AuthForm"},{"__symbolic":"reference","name":"AuthModal"},{"__symbolic":"reference","name":"TableSelectColumnsComponent"},{"__symbolic":"reference","name":"ActionsColumnComponent"},{"__symbolic":"reference","name":"EntityMetadataComponent"},{"__symbolic":"reference","name":"FormButtonsBarComponent"},{"__symbolic":"reference","name":"AboutModal"},{"__symbolic":"reference","name":"AppPropertiesForm"},{"__symbolic":"reference","name":"AppListForm"},{"__symbolic":"reference","name":"AppInstallUpgradeCard"},{"__symbolic":"reference","name":"DepartmentToStringPipe"},{"__symbolic":"reference","name":"ɵl"}]}]}],"members":{}},"Account":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Person"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"AccountVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"asPerson":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":12,"character":9}}},"accountToString":{"__symbolic":"function","parameters":["data"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"data"},"right":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"firstName"},"right":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"firstName"},"right":" "}},"right":""},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"lastName"},"right":""}}},"right":""}},"Software":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"SoftwareVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":17,"character":8}}},"Configuration":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Software"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"ConfigurationVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"clone":[{"__symbolic":"method"}],"copy":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"getPropertyAsBoolean":[{"__symbolic":"method"}],"getPropertyAsInt":[{"__symbolic":"method"}],"getPropertyAsNumbers":[{"__symbolic":"method"}],"getPropertyAsStrings":[{"__symbolic":"method"}],"getProperty":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":59,"character":9}}},"Department":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseReferential"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"DepartmentVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"ENTITY_NAME":"Department","fromObject":{"__symbolic":"error","message":"Variable not initialized","line":8,"character":9}}},"departmentToString":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"name"}},"right":{"__symbolic":"reference","name":"undefined"}}},"departmentsToString":{"__symbolic":"function","parameters":["data","separator"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"data"},"right":[]},"member":"map"},"arguments":[{"__symbolic":"reference","name":"departmentToString"}]},"member":"join"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"separator"},"right":", "}]}},"Cloneable":{"__symbolic":"interface"},"entityToString":{"__symbolic":"function","parameters":["obj","properties"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"joinPropertiesPath"},"arguments":[{"__symbolic":"reference","name":"obj"},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"properties"},"right":["name"]}]}},"right":{"__symbolic":"reference","name":"undefined"}}},"EntityAsObjectOptions":{"__symbolic":"interface"},"IEntity":{"__symbolic":"interface"},"ITreeItemEntity":{"__symbolic":"interface"},"Entity":{"__symbolic":"class","arity":4,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"clone":[{"__symbolic":"method"}],"copy":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]},"statics":{"TYPENAME":{"__symbolic":"error","message":"Variable not initialized","line":56,"character":9}}},"isInstanceOf":{"__symbolic":"function"},"EntityUtils":{"__symbolic":"class","members":{},"statics":{"isNotEmpty":{"__symbolic":"function","parameters":["obj","checkedAttribute"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"obj"}}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":null}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":{"__symbolic":"reference","name":"undefined"}}}},"isEmpty":{"__symbolic":"function","parameters":["obj","checkedAttribute"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"obj"}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"obj"},"index":{"__symbolic":"reference","name":"checkedAttribute"}},"right":{"__symbolic":"reference","name":"undefined"}}}},"getArrayAsMap":{"__symbolic":"function","parameters":["source"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"source"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":138,"character":33,"module":"./src/app/core/services/model/entity.model"},{}]}},"getPropertyArrayAsObject":{"__symbolic":"function","parameters":["source"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"source"},"right":[]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":154,"character":33,"module":"./src/app/core/services/model/entity.model"},{}]}},"sort":{"__symbolic":"function","parameters":["data","sortBy","sortDirection"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"sort"},"arguments":[{"__symbolic":"error","message":"Expression form not supported","line":195,"character":21,"module":"./src/app/core/services/model/entity.model"}]}},"compareValue":{"__symbolic":"function","parameters":["value1","value2","direction"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"value1"},"right":{"__symbolic":"reference","name":"value2"}},"thenExpression":0,"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":">","left":{"__symbolic":"reference","name":"value1"},"right":{"__symbolic":"reference","name":"value2"}},"thenExpression":{"__symbolic":"reference","name":"direction"},"elseExpression":{"__symbolic":"binop","operator":"*","left":-1,"right":{"__symbolic":"reference","name":"direction"}}}}},"isLocal":{"__symbolic":"function","parameters":["entity"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"entity"},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"entity"},"member":"id"}]},"right":{"__symbolic":"binop","operator":"<","left":{"__symbolic":"pre","operator":"+","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"entity"},"member":"id"}},"right":0}}}},"isRemote":{"__symbolic":"function","parameters":["entity"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"entity"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isLocal"},"arguments":[{"__symbolic":"reference","name":"entity"}]}}}},"isLocalId":{"__symbolic":"function","parameters":["id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNotNil"},"arguments":[{"__symbolic":"reference","name":"id"}]},"right":{"__symbolic":"binop","operator":"<","left":{"__symbolic":"pre","operator":"+","operand":{"__symbolic":"reference","name":"id"}},"right":0}}}}},"IEntityFilter":{"__symbolic":"interface"},"EntityFilter":{"__symbolic":"class","arity":5,"extends":{"__symbolic":"reference","name":"Entity"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asPodObject":[{"__symbolic":"method"}],"isEmpty":[{"__symbolic":"method"}],"countNotEmptyCriteria":[{"__symbolic":"method"}],"asFilterFn":[{"__symbolic":"method"}],"buildFilter":[{"__symbolic":"method"}],"isCriteriaNotEmpty":[{"__symbolic":"method"}]}},"EntityFilterUtils":{"__symbolic":"class","members":{},"statics":{"isEntityFilter":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"asPodObject"}},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"asFilterFn"}},"right":true},"right":false}}}},"SynchronizationHistory":{"__symbolic":"interface"},"HistoryPageReference":{"__symbolic":"interface"},"StatusIds":{"DISABLE":0,"ENABLE":1,"TEMPORARY":2,"DELETED":3,"ALL":99},"Peer":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"PeerVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":10,"character":9}}},"UserProfileLabel":{"__symbolic":"interface"},"PRIORITIZED_AUTHORITIES":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[["ADMIN","SUPERVISOR","USER","GUEST"]]},"Person":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"PersonVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":18,"character":9}}},"PersonUtils":{"__symbolic":"class","members":{},"statics":{"personToString":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"lastName"},"right":" "},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"firstName"}}},"right":{"__symbolic":"reference","name":"undefined"}}},"personsToString":{"__symbolic":"function","parameters":["data","separator"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"data"},"right":[]},"member":"map"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"PersonUtils"},"member":"personToString"}]},"member":"join"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"separator"},"right":", "}]}}}},"IReferentialRef":{"__symbolic":"interface"},"ReferentialRef":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"ReferentialVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":179,"character":9}}},"BaseReferential":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"Entity"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]}},"Referential":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseReferential"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"ReferentialVO"}]}],"members":{},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":101,"character":9}}},"ReferentialUtils":{"__symbolic":"class","members":{},"statics":{"isNotEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isNotEmpty"},"arguments":[{"__symbolic":"reference","name":"obj"},"id"]}},"isNotEmptyReferential":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isNotEmpty"},"arguments":[{"__symbolic":"reference","name":"obj"},"id"]}},"isEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"isEmpty"},"arguments":[{"__symbolic":"reference","name":"obj"},"id"]}},"equals":{"__symbolic":"function","parameters":["o1","o2"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"EntityUtils"},"member":"equals"},"arguments":[{"__symbolic":"reference","name":"o1"},{"__symbolic":"reference","name":"o2"},"id"]}}}},"ReferentialAsObjectOptions":{"__symbolic":"interface"},"referentialToString":{"__symbolic":"function","parameters":["obj","properties"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"id"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"joinPropertiesPath"},"arguments":[{"__symbolic":"reference","name":"obj"},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"properties"},"right":["label","name"]}]}},"right":{"__symbolic":"reference","name":"undefined"}}},"referentialsToString":{"__symbolic":"function","parameters":["values","properties","separator"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"values"},"right":[]},"member":"map"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":11,"character":28,"module":"./src/app/core/services/model/referential.model"}]},"member":"join"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"separator"},"right":", "}]}},"IStatus":{"__symbolic":"interface"},"StatusList":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[[{"id":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StatusIds"},"member":"ENABLE"},"icon":"checkmark","label":"REFERENTIAL.STATUS_ENUM.ENABLE"},{"id":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StatusIds"},"member":"DISABLE"},"icon":"close","label":"REFERENTIAL.STATUS_ENUM.DISABLE"},{"id":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StatusIds"},"member":"TEMPORARY"},"icon":"help","label":"REFERENTIAL.STATUS_ENUM.TEMPORARY"}]]},"StatusById":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"splitById"},"arguments":[{"__symbolic":"reference","name":"StatusList"}]}]},"MINIFY_ENTITY_FOR_LOCAL_STORAGE":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"minify":true,"keepTypename":true,"keepEntityName":true,"keepLocalId":true}]},"MINIFY_ENTITY_FOR_POD":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"minify":true,"keepTypename":false,"keepEntityName":false,"keepLocalId":false}]},"UsageMode":{"__symbolic":"interface"},"LocaleConfig":{"__symbolic":"interface"},"APP_LOCALES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":31},"arguments":["locales"]},"OfflineFeature":{"__symbolic":"interface"},"LocalSettings":{"__symbolic":"interface"},"UserSettings":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"UserSettingsVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"merge":[{"__symbolic":"method"}],"asLocalSettings":[{"__symbolic":"method"}]},"statics":{"SETTINGS_PROPERTIES":["locale","latLongFormat"],"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":43,"character":9}}},"AppGraphQLModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":5,"character":4}],"exports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":8,"character":4}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"WatchQueryOptions":{"__symbolic":"interface"},"MutateQueryOptions":{"__symbolic":"interface"},"APP_GRAPHQL_TYPE_POLICIES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":65,"character":45},"arguments":["graphqlTypePolicies"]},"GraphqlService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":68,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":105,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":105,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_GRAPHQL_TYPE_POLICIES"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":98,"character":22},{"__symbolic":"reference","module":"apollo-angular","name":"Apollo","line":99,"character":20},{"__symbolic":"reference","module":"apollo-angular/http","name":"HttpLink","line":100,"character":22},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":102,"character":21},{"__symbolic":"reference","name":"CryptoService"},null,{"__symbolic":"reference","module":"@apollo/client/core","name":"TypePolicies","line":105,"character":73}]}],"setAuthToken":[{"__symbolic":"method"}],"setAuthBasic":[{"__symbolic":"method"}],"addResolver":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"watchQueryRef":[{"__symbolic":"method"}],"queryRefValuesChanges":[{"__symbolic":"method"}],"watchQuery":[{"__symbolic":"method"}],"mutate":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"insertIntoQueryCache":[{"__symbolic":"method"}],"addManyToQueryCache":[{"__symbolic":"method"}],"removeFromCachedQueryById":[{"__symbolic":"method"}],"removeFromCachedQueryByIds":[{"__symbolic":"method"}],"updateToQueryCache":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"registerCustomError":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"resetClient":[{"__symbolic":"method"}],"onApolloError":[{"__symbolic":"method"}],"toApolloError":[{"__symbolic":"method"}],"createAppErrorByCode":[{"__symbolic":"method"}],"getI18nErrorMessageByCode":[{"__symbolic":"method"}],"toAppError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsLoginAccountPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"isLogin"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AccountToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":14,"character":1},"arguments":[{"name":"accountToString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"DepartmentToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"departmentToString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PersonToStringPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"personToString"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsOnFieldModePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"isOnField"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"IsNotOnFieldModePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":16,"character":1},"arguments":[{"name":"isNotOnField"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"transform":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PlatformService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":61,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":62,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":63,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":64,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":66,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":67,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":48,"character":22},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":49,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":50,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":51,"character":23},{"__symbolic":"reference","module":"@angular/material-moment-adapter","name":"MomentDateAdapter","line":52,"character":25},{"__symbolic":"reference","name":"EntitiesStorage"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"ionic-cache","name":"CacheService","line":58,"character":19},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":59,"character":21},{"__symbolic":"reference","name":"AudioProvider"},null,{"__symbolic":"reference","module":"@ionic-native/status-bar/ngx","name":"StatusBar","line":62,"character":35},{"__symbolic":"reference","module":"@ionic-native/keyboard/ngx","name":"Keyboard","line":63,"character":34},{"__symbolic":"reference","module":"@ionic-native/splash-screen/ngx","name":"SplashScreen","line":64,"character":38},{"__symbolic":"reference","module":"@ionic-native/in-app-browser/ngx","name":"InAppBrowser","line":65,"character":33},{"__symbolic":"reference","module":"@ionic-native/downloader/ngx","name":"Downloader","line":66,"character":36},{"__symbolic":"reference","module":"@awesome-cordova-plugins/file-opener/ngx","name":"FileOpener","line":67,"character":36}]}],"is":[{"__symbolic":"method"}],"isWebOrDesktop":[{"__symbolic":"method"}],"isAndroidCordova":[{"__symbolic":"method"}],"width":[{"__symbolic":"method"}],"height":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"openFile":[{"__symbolic":"method"}],"getDownloadingJob":[{"__symbolic":"method"}],"download":[{"__symbolic":"method"}],"configureCordovaPlugins":[{"__symbolic":"method"}],"configureTranslate":[{"__symbolic":"method"}],"configureCache":[{"__symbolic":"method"}],"storageReady":[{"__symbolic":"method"}],"migrateStorage":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"onStartupError":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ConnectionType":{"__symbolic":"interface"},"AuthTokenType":{"__symbolic":"interface"},"getConnectionType":{"__symbolic":"function"},"NetworkEventType":{"__symbolic":"interface"},"NetworkService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":63,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":110,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":110,"character":12}]}],null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":118,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":119,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":120,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":122,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":111,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":112,"character":23},{"__symbolic":"reference","name":"CryptoService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":114,"character":21},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"ionic-cache","name":"CacheService","line":116,"character":19},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":117,"character":18},null,{"__symbolic":"reference","module":"@ionic-native/network/ngx","name":"Network","line":119,"character":33},{"__symbolic":"reference","module":"@ionic-native/splash-screen/ngx","name":"SplashScreen","line":120,"character":38},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":121,"character":35},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":122,"character":41}]}],"on":[{"__symbolic":"method"}],"tryOnline":[{"__symbolic":"method"}],"showOfflineToast":[{"__symbolic":"method"}],"checkPeerAlive":[{"__symbolic":"method"}],"checkPeerCompatible":[{"__symbolic":"method"}],"getNodeInfo":[{"__symbolic":"method"}],"setForceOffline":[{"__symbolic":"method"}],"showSelectPeerModal":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"ngOnAfterStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"stopRefreshTimer":[{"__symbolic":"method"}],"startRefreshTimer":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"onDeviceConnectionChanged":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"getDefaultPeers":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"emit":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"Fragments":{"__symbolic":"error","message":"Tagged template expressions are not supported in metadata","line":28,"character":10,"module":"./src/app/core/services/config.service"},"APP_CONFIG_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":86,"character":38},"arguments":["defaultOptions"]},"ConfigService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":88,"character":1},"arguments":[{"providedIn":"root","deps":[{"__symbolic":"reference","name":"APP_CONFIG_OPTIONS"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":113,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":114,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":114,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_CONFIG_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":106,"character":24},{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":108,"character":23},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"FileService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":111,"character":31},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":112,"character":25},null,{"__symbolic":"reference","name":"FormFieldDefinitionMap"}]}],"ngOnStart":[{"__symbolic":"method"}],"loadDefault":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"getCacheStatistics":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"loadOrRestoreLocally":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"storeLocally":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CORE_CONFIG_OPTIONS":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"LOGO":{"key":"sumaris.logo","label":"CONFIGURATION.OPTIONS.LOGO","type":"string"},"FAVICON":{"key":"sumaris.favicon","label":"CONFIGURATION.OPTIONS.FAVICON","type":"string"},"DEFAULT_LOCALE":{"key":"sumaris.defaultLocale","label":"CONFIGURATION.OPTIONS.DEFAULT_LOCALE","type":"enum","values":{"__symbolic":"reference","name":"APP_LOCALES"}},"DEFAULT_LAT_LONG_FORMAT":{"key":"sumaris.defaultLatLongFormat","label":"CONFIGURATION.OPTIONS.DEFAULT_LATLONG_FORMAT","type":"enum","values":[{"key":"DDMMSS","value":"COMMON.LAT_LONG.DDMMSS_PLACEHOLDER"},{"key":"DDMM","value":"COMMON.LAT_LONG.DDMM_PLACEHOLDER"},{"key":"DD","value":"COMMON.LAT_LONG.DD_PLACEHOLDER"}]},"REGISTRATION_ENABLE":{"key":"sumaris.registration.enable","label":"CONFIGURATION.OPTIONS.HOME.ENABLE_REGISTRATION","type":"boolean","defaultValue":true},"AUTH_TOKEN_TYPE":{"key":"sumaris.auth.token.type","label":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE_PLACEHOLDER","type":"enum","values":[{"key":"token","value":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE.TOKEN"},{"key":"basic","value":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE.BASIC"},{"key":"basic-and-token","value":"CONFIGURATION.OPTIONS.AUTH_TOKEN_TYPE.BASIC_AND_TOKEN"}],"defaultValue":"token"},"GRAVATAR_ENABLE":{"key":"sumaris.gravatar.enable","label":"CONFIGURATION.OPTIONS.ENABLE_GRAVATAR","type":"boolean","defaultValue":false},"GRAVATAR_URL":{"key":"sumaris.gravatar.url","label":"CONFIGURATION.OPTIONS.GRAVATAR_URL","type":"string","defaultValue":"https://www.gravatar.com/avatar/{md5}"},"TESTING":{"key":"sumaris.testing.enable","label":"CONFIGURATION.OPTIONS.TESTING","type":"boolean"},"APP_MIN_VERSION":{"key":"sumaris.app.version.min","label":"CONFIGURATION.OPTIONS.APP_MIN_VERSION","type":"string"},"HELP_URL":{"key":"sumaris.help.url","label":"CONFIGURATION.OPTIONS.HELP_URL","type":"string"},"FORUM_URL":{"key":"sumaris.forum.url","label":"CONFIGURATION.OPTIONS.FORUM_URL","type":"string"},"LOGO_LARGE":{"key":"sumaris.logo.large","label":"CONFIGURATION.OPTIONS.HOME.LOGO_LARGE","type":"string"},"MENU_ITEMS":{"key":"sumaris.menu.items","label":"CONFIGURATION.OPTIONS.MENU.ITEMS","type":"string"},"HOME_PARTNERS_DEPARTMENTS":{"key":"sumaris.partner.departments","label":"CONFIGURATION.OPTIONS.HOME.PARTNER_DEPARTMENTS","type":"string"},"HOME_BACKGROUND_IMAGE":{"key":"sumaris.background.images","label":"CONFIGURATION.OPTIONS.HOME.BACKGROUND_IMAGES","type":"string"},"COLOR_PRIMARY":{"key":"sumaris.color.primary","label":"CONFIGURATION.OPTIONS.COLORS.PRIMARY","type":"color"},"COLOR_SECONDARY":{"key":"sumaris.color.secondary","label":"CONFIGURATION.OPTIONS.COLORS.SECONDARY","type":"color"},"COLOR_TERTIARY":{"key":"sumaris.color.tertiary","label":"CONFIGURATION.OPTIONS.COLORS.TERTIARY","type":"color"},"COLOR_SUCCESS":{"key":"sumaris.color.success","label":"CONFIGURATION.OPTIONS.COLORS.SUCCESS","type":"color"},"COLOR_WARNING":{"key":"sumaris.color.warning","label":"CONFIGURATION.OPTIONS.COLORS.WARNING","type":"color"},"COLOR_ACCENT":{"key":"sumaris.color.accent","label":"CONFIGURATION.OPTIONS.COLORS.ACCENT","type":"color"},"COLOR_DANGER":{"key":"sumaris.color.danger","label":"CONFIGURATION.OPTIONS.COLORS.DANGER","type":"color"},"ANDROID_INSTALL_URL":{"key":"sumaris.android.install.url","label":"CONFIGURATION.OPTIONS.ANDROID_INSTALL_URL","type":"string"}}]},"SETTINGS_STORAGE_KEY":"settings","SETTINGS_TRANSIENT_PROPERTIES":["mobile","touchUi"],"APP_LOCAL_SETTINGS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":42,"character":38},"arguments":["DefaultLocalSettings"]},"APP_LOCAL_SETTINGS_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":43,"character":46},"arguments":["LocalSettingsOptions"]},"AddToPageHistoryOptions":{"__symbolic":"interface"},"LocalSettingsService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":51,"character":1},"arguments":[{"providedIn":"root","deps":[{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS"},{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS_OPTIONS"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":102,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":103,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":103,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":104,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_LOCAL_SETTINGS_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":99,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":100,"character":22},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":101,"character":21},null,{"__symbolic":"reference","name":"LocalSettings"},{"__symbolic":"reference","name":"FormFieldDefinitionMap"}]}],"ngOnStart":[{"__symbolic":"method"}],"isUsageMode":[{"__symbolic":"method"}],"isOnFieldMode":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"setProperty":[{"__symbolic":"method"}],"getProperty":[{"__symbolic":"method"}],"getPropertyAsBoolean":[{"__symbolic":"method"}],"getPropertyAsInt":[{"__symbolic":"method"}],"getPropertyAsNumbers":[{"__symbolic":"method"}],"getPropertyAsStrings":[{"__symbolic":"method"}],"apply":[{"__symbolic":"method"}],"applyProperty":[{"__symbolic":"method"}],"getPageSettings":[{"__symbolic":"method"}],"savePageSetting":[{"__symbolic":"method"}],"getOfflineFeature":[{"__symbolic":"method"}],"getOfflineFeatureLastSyncDate":[{"__symbolic":"method"}],"hasOfflineFeature":[{"__symbolic":"method"}],"saveOfflineFeature":[{"__symbolic":"method"}],"markOfflineFeatureAsSync":[{"__symbolic":"method"}],"removeOfflineFeatures":[{"__symbolic":"method"}],"getFieldDisplayAttributes":[{"__symbolic":"method"}],"getPageFieldDefaultValue":[{"__symbolic":"method"}],"registerOption":[{"__symbolic":"method"}],"registerOptions":[{"__symbolic":"method"}],"addToPageHistory":[{"__symbolic":"method"}],"removePageHistory":[{"__symbolic":"method"}],"clearPageHistory":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"persistLocally":[{"__symbolic":"method"}],"fillPageHistoryDefaults":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AccountDetails":{"__symbolic":"interface"},"AuthData":{"__symbolic":"interface"},"RegisterData":{"__symbolic":"interface"},"IsEmailExistsVariables":{"__symbolic":"interface"},"AccountService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":184,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":247,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","name":"CryptoService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":245,"character":23},{"__symbolic":"reference","name":"FileService"},null]}],"ngOnStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"isLogin":[{"__symbolic":"method"}],"isAuth":[{"__symbolic":"method"}],"hasMinProfile":[{"__symbolic":"method"}],"hasExactProfile":[{"__symbolic":"method"}],"hasProfileAndIsEnable":[{"__symbolic":"method"}],"isAdmin":[{"__symbolic":"method"}],"isSupervisor":[{"__symbolic":"method"}],"isUser":[{"__symbolic":"method"}],"isUsageMode":[{"__symbolic":"method"}],"isOnlyGuest":[{"__symbolic":"method"}],"canUserWriteDataForDepartment":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"authenticate":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"checkEmailAvailable":[{"__symbolic":"method"}],"isEmailExists":[{"__symbolic":"method"}],"sendConfirmationEmail":[{"__symbolic":"method"}],"confirmEmail":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"getAdditionalField":[{"__symbolic":"method"}],"registerAdditionalField":[{"__symbolic":"method"}],"resetData":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"listenSettings":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"saveLocally":[{"__symbolic":"method"}],"saveLocalSettingsRemotely":[{"__symbolic":"method"}],"saveRemotely":[{"__symbolic":"method"}],"saveSettingsRemotely":[{"__symbolic":"method"}],"authenticateAndGetToken":[{"__symbolic":"method"}],"copyIdAndUpdateDate":[{"__symbolic":"method"}],"copyIdAndUpdateDateSettings":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"CryptoSaltParams":{"__symbolic":"interface"},"KeyPair":{"__symbolic":"interface"},"CryptoService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":62,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"scryptKeypair":[{"__symbolic":"method"}],"sign":[{"__symbolic":"method"}],"verify":[{"__symbolic":"method"}],"sha256":[{"__symbolic":"method"}],"sha512":[{"__symbolic":"method"}],"encodeBase64":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"AuthGuardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":16,"character":15},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":14,"character":33},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":15,"character":30},null]}],"canActivate":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"Base58":{"__symbolic":"class","members":{},"statics":{"alphabet":"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz","alphabetMap":{"__symbolic":"error","message":"Variable not initialized","line":12,"character":17}}},"QueryVariables":{"__symbolic":"interface"},"MutateQueryWithCacheUpdateOptions":{"__symbolic":"interface"},"MutableWatchQueryOptions":{"__symbolic":"interface"},"MutableWatchQueryDescription":{"__symbolic":"interface"},"FindMutableWatchQueriesOptions":{"__symbolic":"interface"},"BaseGraphqlServiceOptions":{"__symbolic":"class","members":{}},"BaseGraphqlService":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":65,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":80,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"BaseGraphqlServiceOptions"}]}],"mutableWatchQuery":[{"__symbolic":"method"}],"insertIntoMutableCachedQueries":[{"__symbolic":"method"}],"removeFromMutableCachedQueriesByIds":[{"__symbolic":"method"}],"refetchMutableWatchQueries":[{"__symbolic":"method"}],"computeMutableWatchQueryId":[{"__symbolic":"method"}],"findMutableWatchQueries":[{"__symbolic":"method"}],"registerNewMutableWatchQuery":[{"__symbolic":"method"}],"findRefetchQueries":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}]}},"MutableWatchQueriesUpdatePolicy":{"__symbolic":"interface"},"BaseEntityGraphqlQueries":{"__symbolic":"interface"},"BaseEntityGraphqlMutations":{"__symbolic":"interface"},"BaseEntityGraphqlSubscriptions":{"__symbolic":"interface"},"BaseEntityServiceOptions":{"__symbolic":"interface"},"EntitySaveOptions":{"__symbolic":"interface"},"BaseEntityService":{"__symbolic":"class","arity":8,"extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"error","message":"Expression form not supported","line":94,"character":24,"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Expression form not supported","line":95,"character":26,"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":96,"character":38,"context":{"typeName":"T"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":41,"context":{"typeName":"ID"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":45,"context":{"typeName":"Q"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":48,"context":{"typeName":"M"},"module":"./src/app/core/services/base-entity-service.class"},{"__symbolic":"error","message":"Could not resolve type","line":96,"character":51,"context":{"typeName":"S"},"module":"./src/app/core/services/base-entity-service.class"}]}]}],"watch":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"loadAll":[{"__symbolic":"method"}],"countAll":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"copyIdAndUpdateDate":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"fillDefaultProperties":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"getRefetchQueriesForMutation":[{"__symbolic":"method"}],"getLoadQueries":[{"__symbolic":"method"}]}},"EntitiesStorageTypePolicies":{"__symbolic":"interface"},"APP_LOCAL_STORAGE_TYPE_POLICIES":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":19,"character":51},"arguments":["localStorageTypePolicies"]},"EntitiesStorage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StartableService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":45,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":46,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":46,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_LOCAL_STORAGE_TYPE_POLICIES"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":42,"character":22},{"__symbolic":"reference","name":"ProgressBarService"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":44,"character":21},{"__symbolic":"reference","name":"Environment"},{"__symbolic":"reference","name":"any"}]}],"watchAll":[{"__symbolic":"method"}],"loadAll":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"nextValue":[{"__symbolic":"method"}],"nextValues":[{"__symbolic":"method"}],"currentValue":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteById":[{"__symbolic":"method"}],"deleteMany":[{"__symbolic":"method"}],"deleteFromTrash":[{"__symbolic":"method"}],"deleteFromTrashById":[{"__symbolic":"method"}],"moveToTrash":[{"__symbolic":"method"}],"moveManyToTrash":[{"__symbolic":"method"}],"saveToTrash":[{"__symbolic":"method"}],"clearTrash":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"ngOnStart":[{"__symbolic":"method"}],"ngOnStop":[{"__symbolic":"method"}],"getEntityStore":[{"__symbolic":"method"}],"detectEntityName":[{"__symbolic":"method"}],"restoreLocally":[{"__symbolic":"method"}],"storeLocally":[{"__symbolic":"method"}]},"statics":{"TRASH_PREFIX":"Trash#","REMOTE_PREFIX":"Remote#","ɵprov":{}}},"ENTITIES_STORAGE_KEY_PREFIX":"entities","EntityStoreTypePolicyMode":{"__symbolic":"interface"},"EntityStoreTypePolicy":{"__symbolic":"interface"},"EntityStorageLoadOptions":{"__symbolic":"interface"},"EntityStore":{"__symbolic":"class","arity":3,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@ionic/storage","name":"Storage","line":62,"character":32},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":63,"character":35,"context":{"typeName":"T"},"module":"./src/app/core/services/storage/entity-store.class"}]}]}],"nextValue":[{"__symbolic":"method"}],"currentValue":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"loadAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteMany":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"loadCachedEntity":[{"__symbolic":"method"}],"loadFullEntity":[{"__symbolic":"method"}],"setEntities":[{"__symbolic":"method"}],"reduceAndSort":[{"__symbolic":"method"}],"createLightEntityMapFn":[{"__symbolic":"method"}],"emitEvent":[{"__symbolic":"method"}]}},"AppValidatorService":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":10,"character":10},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":14,"character":27},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":15,"character":26}]}],"getRowValidator":[{"__symbolic":"method"}],"getFormGroup":[{"__symbolic":"method"}],"getFormGroupConfig":[{"__symbolic":"method"}],"getI18nFormErrors":[{"__symbolic":"method"}],"getI18nErrors":[{"__symbolic":"method"}],"getI18nError":[{"__symbolic":"method"}]}},"IAppEditor":{"__symbolic":"interface"},"AppTabEditorOptions":{"__symbolic":"class","members":{}},"AppEditor":{"__symbolic":"class","arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":42,"character":1}}],"members":{"toolbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":66,"character":3},"arguments":[{"__symbolic":"reference","name":"ToolbarToken"}]}]}],"formButtonsBar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":67,"character":3},"arguments":[{"__symbolic":"reference","name":"FormButtonsBarToken"},{"static":true}]}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":68,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":68,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":120,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":121,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":122,"character":25},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":123,"character":25}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addChildForm":[{"__symbolic":"method"}],"addChildForms":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}],"reloadWithConfirmation":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"logFormErrors":[{"__symbolic":"method"}],"scrollToTop":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"unregisterSubscription":[{"__symbolic":"method"}],"saveIfDirtyAndConfirm":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"logChildrenFormErrors":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AppTabEditor":{"__symbolic":"class","arity":3,"extends":{"__symbolic":"reference","name":"AppEditor"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":455,"character":1}}],"members":{"queryTabIndexParamName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":466,"character":3}}]}],"selectedTabIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":468,"character":3}}]}],"selectedTabIndexChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":475,"character":3}}]}],"tabGroup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":477,"character":3},"arguments":["tabGroup",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":483,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":120,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":121,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":122,"character":25},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":123,"character":25},{"__symbolic":"reference","name":"AppTabEditorOptions"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setSelectedTabIndex":[{"__symbolic":"method"}],"onTabChange":[{"__symbolic":"method"}],"onSwipeTab":[{"__symbolic":"method"}],"onSubTabChange":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}]}},"AppEditorOptions":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppTabEditorOptions"},"members":{}},"AppEntityEditor":{"__symbolic":"class","arity":3,"extends":{"__symbolic":"reference","name":"AppTabEditor"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":44,"character":1}}],"members":{"markAsSaving":[{"__symbolic":"method"}],"markAsSaved":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":118,"character":14},{"__symbolic":"error","message":"Expression form not supported","line":119,"character":24,"module":"./src/app/core/form/entity-editor.class"},{"__symbolic":"error","message":"Could not resolve type","line":120,"character":28,"context":{"typeName":"S"},"module":"./src/app/core/form/entity-editor.class"},{"__symbolic":"reference","name":"AppEditorOptions"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"loadFromRoute":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"startListenRemoteChanges":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}],"updateViewState":[{"__symbolic":"method"}],"updateTabAndRoute":[{"__symbolic":"method"}],"updateTabIndex":[{"__symbolic":"method"}],"saveAndClose":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveAndGetDataIfValid":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"goBack":[{"__symbolic":"method"}],"setError":[{"__symbolic":"method"}],"registerForms":[{"__symbolic":"method"}],"computeTitle":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"getFirstInvalidTabIndex":[{"__symbolic":"method"}],"canUserWrite":[{"__symbolic":"method"}],"computeNextTabIndex":[{"__symbolic":"method"}],"unload":[{"__symbolic":"method"}],"onBeforeEntityLoad":[{"__symbolic":"method"}],"onNewEntity":[{"__symbolic":"method"}],"onEntityLoaded":[{"__symbolic":"method"}],"onEntitySaved":[{"__symbolic":"method"}],"onEntityDeleted":[{"__symbolic":"method"}],"computeUsageMode":[{"__symbolic":"method"}],"waitWhilePending":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"getJsonValueToSave":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"addToPageHistory":[{"__symbolic":"method"}],"computePageHistory":[{"__symbolic":"method"}],"removePageHistory":[{"__symbolic":"method"}],"computePageUrl":[{"__symbolic":"method"}],"getParentPageUrl":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"openFirstInvalidTab":[{"__symbolic":"method"}],"updateRoute":[{"__symbolic":"method"}]}},"EntityMetadataComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-entity-metadata","animations":[{"__symbolic":"reference","name":"fadeInAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":19},"member":"OnPush"},"template":"<ng-container *ngIf=\"value && value.id\">\n <ion-card @fadeInAnimation>\n\n <!-- recorder -->\n <ion-item color=\"light\"\n *ngIf=\"showRecorder && value &&  (value.recorderDepartment || value.recorderPerson)\">\n\n <!-- recorder avatar -->\n <ion-avatar slot=\"start\" *ngIf=\"value.recorderPerson; let recorderPerson\">\n <img *ngIf=\"recorderPerson.avatar; else generateAvatar\"\n src=\"{{ recorderPerson.avatar }}\">\n <ng-template #generateAvatar>\n <svg *ngIf=\"recorderPerson.id; let personId\"\n width=\"38\" height=\"38\" [data-jdenticon-value]=\"personId\"></svg>\n </ng-template>\n </ion-avatar>\n\n <!-- recorder name -->\n <ion-label>\n <ion-card-subtitle translate>COMMON.RECORDER</ion-card-subtitle>\n <ion-card-title>{{value.recorderPerson?.firstName}} {{value.recorderPerson?.lastName}}</ion-card-title>\n <ion-card-subtitle>{{value.recorderDepartment?.label}}</ion-card-subtitle>\n </ion-label>\n </ion-item>\n\n <ion-card-content>\n <ion-label class=\"ion-text-wrap status\">\n <!-- creation date -->\n <ion-text *ngIf=\"value.creationDate\">\n <ion-icon name=\"calendar\"></ion-icon>&nbsp;\n <span translate>COMMON.CREATED_ON</span>\n <span>\n <b>{{ value.creationDate | dateFormat: {time: true} }}</b>\n </span>\n </ion-text>\n\n <!-- update date -->\n <ion-text *ngIf=\"value.updateDate && value.updateDate != value.creationDate\">\n <br *ngIf=\"value.creationDate\"/>\n <ion-label>\n <ion-icon name=\"time-outline\"></ion-icon>&nbsp;\n <span translate>COMMON.UPDATED_ON</span>\n <span>&nbsp;{{ value.updateDate | dateFormat: {time: true, seconds: true} }}</span>\n </ion-label>\n </ion-text>\n\n </ion-label>\n\n <ng-content></ng-content>\n\n </ion-card-content>\n </ion-card>\n</ng-container>\n","styles":["ion-card ion-avatar{height:40px;width:40px}ion-card ion-avatar img,ion-card ion-avatar svg{border:1px solid rgba(0,0,0,.2)}ion-card ion-avatar img{background-color:var(--ion-color-secondary)!important}ion-card ion-avatar svg{border-radius:20px;height:38px;width:38px}ion-card ion-card-content{background-color:var(--ion-color-light-tint)}ion-card ion-card-content * ion-label.status,ion-card ion-card-content ion-label.status{font-size:12px!important;color:var(--ion-color-step-850)}"]}]}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"showRecorder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}]}},"AppForm":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":11,"character":1}}],"members":{"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"errorTranslatorOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":123,"character":3}}]}],"onSubmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":126,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":130,"character":14},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroup","line":131,"character":11}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"setForm":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"updateValueAndValidity":[{"__symbolic":"method"}],"translateControlPath":[{"__symbolic":"method"}],"getFormError":[{"__symbolic":"method"}],"getI18nFieldName":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"registerAutocompleteField":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"IAppFormGetter":{"__symbolic":"interface"},"OnReady":{"__symbolic":"interface"},"IAppForm":{"__symbolic":"interface"},"AppNullForm":{"__symbolic":"class","members":{"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}]}},"AppFormProvider":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":86,"character":32,"module":"./src/app/core/form/form.utils"}]}],"waitDelegate":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}]},"statics":{"NULL_FORM":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"AppNullForm"}}}},"AppFormUtils":{"__symbolic":"class","members":{},"statics":{"copyEntity2Form":{"__symbolic":"reference","name":"copyEntity2Form"},"getFormValueFromEntity":{"__symbolic":"reference","name":"getFormValueFromEntity"},"logFormErrors":{"__symbolic":"reference","name":"logFormErrors"},"getControlFromPath":{"__symbolic":"reference","name":"getControlFromPath"},"filterNumberInput":{"__symbolic":"reference","module":"../../shared/inputs","name":"filterNumberInput","line":174,"character":29},"disableControls":{"__symbolic":"reference","name":"disableControls"},"selectInputContent":{"__symbolic":"reference","module":"../../shared/inputs","name":"selectInputContent","line":176,"character":30},"markAsTouched":{"__symbolic":"reference","name":"markAllAsTouched"},"markAllAsTouched":{"__symbolic":"reference","name":"markAllAsTouched"},"markAsUntouched":{"__symbolic":"reference","name":"markAsUntouched"},"waitWhilePending":{"__symbolic":"reference","name":"waitWhilePending"},"waitIdle":{"__symbolic":"reference","name":"waitIdle"},"updateValueAndValidity":{"__symbolic":"reference","name":"updateValueAndValidity"},"getFormErrors":{"__symbolic":"reference","name":"getFormErrors"},"isForm":{"__symbolic":"function","parameters":["object"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"object"},"right":{"__symbolic":"reference","name":"AppFormProvider"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"in","left":"dirty","right":{"__symbolic":"reference","name":"object"}},"right":{"__symbolic":"binop","operator":"in","left":"enabled","right":{"__symbolic":"reference","name":"object"}}},"right":{"__symbolic":"binop","operator":"in","left":"valid","right":{"__symbolic":"reference","name":"object"}}}}},"addValueInArray":{"__symbolic":"reference","name":"addValueInArray"},"removeValueInArray":{"__symbolic":"reference","name":"removeValueInArray"},"resizeArray":{"__symbolic":"reference","name":"resizeArray"},"clearValueInArray":{"__symbolic":"reference","name":"clearValueInArray"},"calculatedSuffix":"Calculated","isControlHasInput":{"__symbolic":"reference","name":"isControlHasInput"},"setCalculatedValue":{"__symbolic":"reference","name":"setCalculatedValue"},"resetCalculatedValue":{"__symbolic":"reference","name":"resetCalculatedValue"}}},"copyEntity2Form":{"__symbolic":"function"},"getFormValueFromEntity":{"__symbolic":"function","parameters":["entity","form"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"adaptValueToControl"},"arguments":[{"__symbolic":"reference","name":"entity"},{"__symbolic":"reference","name":"form"}]}},"adaptValueToControl":{"__symbolic":"function"},"logFormErrors":{"__symbolic":"function"},"FormErrors":{"__symbolic":"interface"},"getFormErrors":{"__symbolic":"function"},"getControlFromPath":{"__symbolic":"function"},"disableControls":{"__symbolic":"function"},"addValueInArray":{"__symbolic":"function"},"resizeArray":{"__symbolic":"function"},"removeValueInArray":{"__symbolic":"function"},"clearValueInArray":{"__symbolic":"function"},"markAllAsTouched":{"__symbolic":"function"},"markFormGroupAsTouched":{"__symbolic":"function"},"markControlAsTouched":{"__symbolic":"function"},"updateValueAndValidity":{"__symbolic":"function"},"markAsUntouched":{"__symbolic":"function"},"waitWhilePending":{"__symbolic":"function"},"waitIdle":{"__symbolic":"function"},"isControlHasInput":{"__symbolic":"function","parameters":["controls","controlName"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"select","expression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"controls"},"index":{"__symbolic":"reference","name":"controlName"}},"member":"value"},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"toBoolean"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"controls"},"index":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"reference","name":"controlName"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AppFormUtils"},"member":"calculatedSuffix"}}},"member":"value"},false]}}}},"setCalculatedValue":{"__symbolic":"function"},"resetCalculatedValue":{"__symbolic":"function"},"FormArrayHelperOptions":{"__symbolic":"interface"},"FormArrayHelper":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormArray","line":676,"character":33},{"__symbolic":"error","message":"Expression form not supported","line":677,"character":27,"module":"./src/app/core/form/form.utils"},{"__symbolic":"error","message":"Expression form not supported","line":678,"character":20,"module":"./src/app/core/form/form.utils"},{"__symbolic":"error","message":"Expression form not supported","line":679,"character":21,"module":"./src/app/core/form/form.utils"},{"__symbolic":"reference","name":"any"}]}],"add":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"resize":[{"__symbolic":"method"}],"clearAt":[{"__symbolic":"method"}],"isLast":[{"__symbolic":"method"}],"removeAllEmpty":[{"__symbolic":"method"}],"size":[{"__symbolic":"method"}],"at":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"setAllowEmptyArray":[{"__symbolic":"method"}]}},"FormButtonsBarToken":{"__symbolic":"class","members":{}},"FormButtonsBarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-form-buttons-bar","providers":[{"provide":{"__symbolic":"reference","name":"FormButtonsBarToken"},"useExisting":{"__symbolic":"reference","name":"FormButtonsBarComponent"}}],"template":"<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col>\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n","styles":[":host{width:100%}:host ion-toolbar{height:var(--app-form-buttons-bar-height);padding:0 6px}:host ion-col{padding:0}"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"disabledCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"onSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"onNext":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"onBack":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Hotkeys"}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ItemButton":{"__symbolic":"interface"},"AppListFormOptions":{"__symbolic":"interface"},"AppListForm":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":36,"character":1},"arguments":[{"selector":"app-list-form","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":40,"character":19},"member":"OnPush"},"template":"\n<ng-container *ngIf=\"!loading; else listSkeleton\">\n\n <!-- List -->\n <ion-list class=\"ion-no-padding\" >\n\n <ng-container *ngFor=\"let itemControl of itemControls; index as i; last as last\">\n <ion-item *ngIf=\"itemControl.value; let item\"\n [class.disabled]=\"disabled\" tappable\n (click)=\"onItemClick($event, item)\"\n [color]=\"selection.isSelected(item) ? 'secondary100' : undefined\"\n [button]=\"selectionChanges.observers.length > 0\">\n <ion-label>{{displayWith(item)}}</ion-label>\n\n <!-- buttons -->\n <ion-buttons slot=\"end\" *ngIf=\"enabled\" class=\"action-buttons\">\n <ion-button fill=\"clear\" (click)=\"removeAt(i)\">\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n\n <ion-button *ngFor=\"let button of options.buttons\"\n fill=\"clear\" [color]=\"button.color\"\n [class.cdk-visually-hidden]=\"button.disabled|async\"\n (click)=\"onItemButtonClick(button, $event, item, i)\"\n [title]=\"(button.title || '')|translate\">\n <ion-icon slot=\"icon-only\" [name]=\"button.icon\"></ion-icon>\n </ion-button>\n\n </ion-buttons>\n </ion-item>\n </ng-container>\n </ion-list>\n\n <!-- Add button -->\n <ion-button color=\"tertiary\" fill=\"clear\"\n *ngIf=\"enabled && onNewItem.observers.length; else emptyText\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"onNewClick($event)\" >\n <ion-icon slot=\"start\" name=\"add\"></ion-icon>\n <ion-label translate>COMMON.BTN_ADD</ion-label>\n </ion-button>\n\n <!-- Empty (if readonly) -->\n <ng-template #emptyText>\n <ion-text *ngIf=\"!length\" color=\"medium\"><i translate>COMMON.EMPTY_OPTION</i></ion-text>\n </ng-template>\n</ng-container>\n\n<ng-template #listSkeleton>\n\n <ion-list>\n <ng-container *ngTemplateOutlet=\"itemSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemSkeleton\"></ng-container>\n </ion-list>\n\n</ng-template>\n\n<ng-template #itemSkeleton>\n\n <ion-item>\n <ion-label>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </ion-label>\n </ion-item>\n\n</ng-template>\n","styles":[":host{--ion-item-background-selected:var(--ion-color-secondary100);--ion-item-text-color-selected:var(--ion-color-secondary100-contrast);--ion-item-icon-color-selected:var(--ion-color-secondary100-contrast)}ion-item.disabled ion-label{color:var(--ion-color-medium-shade,grey)}ion-item .action-buttons{visibility:hidden;display:none}ion-item:hover{height:48px!important}ion-item:hover .action-buttons{margin-top:-1px;visibility:visible;display:block}ion-item.selected{background:var(--ion-item-background-selected)!important;--color-hover:var(--ion-item-background-selected)!important}ion-item.selected ion-label,ion-item.selected ion-text{color:var(--ion-item-text-color-selected)!important}ion-item.selected:hover{--color-hover:var(--ion-item-background-selected)!important;--ion-item-icon-color-selected:var(--ion-item-icon-color)!important;--ion-item-text-color-selected:var(--ion-item-text-color)!important}"]}]}],"members":{"formArrayName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"formArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"displayWithFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3},"arguments":["displayWith"]}]}],"equalsFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3},"arguments":["equals"]}]}],"onNewItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":53,"character":3}}]}],"selectionChanges":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":116,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":111,"character":24},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":112,"character":27},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":113,"character":39}]},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":115,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":116,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"isAllSelected":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"onItemClick":[{"__symbolic":"method"}],"onItemButtonClick":[{"__symbolic":"method"}],"hasSelection":[{"__symbolic":"method"}],"onNewClick":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"displayWith":[{"__symbolic":"method"}],"createControl":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AppPropertiesForm":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-properties-form","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":15,"character":19},"member":"OnPush"},"template":"\n<!-- Properties -->\n<form [formGroup]=\"form\" class=\"form-container\">\n <ion-grid *ngIf=\"!loading; else propertiesSkeleton\"\n formArrayName=\"properties\" class=\"ion-no-padding\" >\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding ion-align-self-end\" size=\"12\">\n <span class=\"toolbar-spacer\"></span>\n\n <!-- Show more options -->\n <ion-button color=\"light\" *ngIf=\"formArray?.length === 0\"\n [title]=\"'SETTINGS.BTN_SHOW_MORE_HELP'|translate\"\n (click)=\"helper.add()\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n <ng-container *ngFor=\"let fieldForm of fieldForms; let i=index\">\n <ion-row class=\"ion-no-padding\" [formGroupName]=\"i\">\n\n <!-- property key -->\n <ion-col size=\"6\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"never\">\n <mat-select [formControl]=\"fieldForm.controls.key\"\n [placeholder]=\"'SETTINGS.PROPERTY_KEY'|translate\"\n (selectionChange)=\"updateDefinitionAt(i)\"\n [tabindex]=\"20+i*2\"\n required>\n\n <!-- When option's key not a well known option, add it as first select option -->\n <mat-option *ngIf=\"isUnknownField(fieldForm)\" [value]=\"fieldForm.controls.key.value\">\n {{fieldForm.controls.key.value}}\n </mat-option>\n\n <mat-option *ngFor=\"let item of definitions\" [value]=\"item.key\">{{ item.label | translate }}\n </mat-option>\n\n </mat-select>\n\n <mat-error *ngIf=\"fieldForm.controls.key.hasError('required') && !helper.isLast(i)\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n </ion-col>\n\n <!-- property value -->\n <ion-col class=\"ion-no-padding\" padding-left >\n <app-form-field *ngIf=\"getDefinitionAt(i) else unknownValue; let definition; \"\n floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"fieldForm.controls.value\"\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [required]=\"true\"\n [tabindex]=\"20+i*2 + 1\">\n </app-form-field>\n <ng-template #unknownValue>\n <mat-form-field floatLabel=\"never\">\n <input type=\"text\" matInput\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [formControl]=\"fieldForm.controls.value\"\n [required]=\"true\"\n [tabindex]=\"20+i*2 + 1\">\n </mat-form-field>\n </ng-template>\n </ion-col>\n\n <ion-col size=\"auto\" class=\"ion-no-padding\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"disabled\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"removeAt(i)\">\n <mat-icon>close</mat-icon>\n </button>\n <button [hidden]=\"!helper.isLast(i)\"\n type=\"button\"\n mat-icon-button\n color=\"light\"\n [disabled]=\"disabled\"\n [title]=\"'SETTINGS.BTN_ADD_PROPERTY'|translate\"\n (click)=\"helper.add()\">\n <mat-icon>add</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n </ng-container>\n </ion-grid>\n</form>\n\n<ng-template #propertiesSkeleton>\n\n <ion-grid class=\"ion-no-padding\">\n <ng-container *ngTemplateOutlet=\"propertyRowSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"propertyRowSkeleton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"propertyRowSkeleton\"></ng-container>\n </ion-grid>\n\n</ng-template>\n\n<ng-template #propertyRowSkeleton>\n\n <ion-row>\n <!-- property key -->\n <ion-col>\n <mat-form-field>\n <input matInput hidden>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n <ion-icon name=\"arrow-dropdown\" matSuffix></ion-icon>\n </mat-form-field>\n </ion-col>\n <!-- value -->\n <ion-col>\n <mat-form-field>\n <input matInput hidden>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </mat-form-field>\n </ion-col>\n <!-- buttons -->\n <ion-col size=\"2\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"true\">\n <mat-icon>close</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n\n</ng-template>\n"}]}],"members":{"formArrayName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"formArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"definitions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":44,"character":14},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":45,"character":27},{"__symbolic":"reference","name":"DateAdapter","module":"@angular/material/core","arguments":[{"__symbolic":"reference","module":"moment","name":"Moment","line":46,"character":39}]},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":48,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":49,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"getDefinitionAt":[{"__symbolic":"method"}],"updateDefinitionAt":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"isUnknownField":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"getPropertyFormGroup":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SETTINGS_DISPLAY_COLUMNS":"displayColumns","SETTINGS_SORTED_COLUMN":"sortedColumn","SETTINGS_FILTER":"filter","SETTINGS_PAGE_SIZE":"pageSize","DEFAULT_PAGE_SIZE":20,"DEFAULT_PAGE_SIZE_OPTIONS":[20,50,100,200,500],"RESERVED_START_COLUMNS":["select","id"],"RESERVED_END_COLUMNS":["actions"],"DEFAULT_REQUIRED_COLUMNS":["id"],"CellValueChangeListener":{"__symbolic":"class","members":{}},"IModalDetailOptions":{"__symbolic":"interface"},"SaveActionType":{"__symbolic":"interface"},"AppTable":{"__symbolic":"class","arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1}}],"members":{"settingsId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"i18nColumnPrefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3}}]}],"i18nColumnSuffix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3}}]}],"autoLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":134,"character":3}}]}],"readOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":135,"character":3}}]}],"inlineEdition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"focusFirstColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":137,"character":3}}]}],"confirmBeforeDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3}}]}],"confirmBeforeCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":139,"character":3}}]}],"undoableDeletion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":140,"character":3}}]}],"saveBeforeDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":141,"character":3}}]}],"keepEditedRowOnSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3}}]}],"saveBeforeSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":143,"character":3}}]}],"saveBeforeFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":144,"character":3}}]}],"propagateRowError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":145,"character":3}}]}],"defaultSortBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":147,"character":3}}]}],"defaultSortDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":148,"character":3}}]}],"defaultPageSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":149,"character":3}}]}],"defaultPageSizeOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":150,"character":3}}]}],"focusColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":153,"character":3}}]}],"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":163,"character":3}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":171,"character":3}}]}],"onRefresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":183,"character":3}}]}],"onOpenRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":184,"character":3}}]}],"onNewRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":185,"character":3}}]}],"onStartEditingRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":186,"character":3}}]}],"onConfirmEditCreateRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":187,"character":3}}]}],"onCancelOrDeleteRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":188,"character":3}}]}],"onBeforeDeleteRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":189,"character":3}}]}],"onBeforeCancelRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":190,"character":3}}]}],"onBeforeSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":191,"character":3}}]}],"onAfterDeletedRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":192,"character":3}}]}],"onSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":193,"character":3}}]}],"onDirty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":194,"character":3}}]}],"onError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":195,"character":3}}]}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":228,"character":3}}]}],"markAsDirty":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAllAsTouched":[{"__symbolic":"method"}],"markAsSaving":[{"__symbolic":"method"}],"markAsSaved":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}],"markRowAsDirty":[{"__symbolic":"method"}],"markAsReady":[{"__symbolic":"method"}],"enableSort":[{"__symbolic":"method"}],"disableSort":[{"__symbolic":"method"}],"paginator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":379,"character":3}}]}],"table":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":387,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/table","name":"MatTable","line":387,"character":13},{"static":false}]}]}],"childPaginator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":388,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/paginator","name":"MatPaginator","line":388,"character":13},{"static":false}]}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":389,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":389,"character":13},{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":392,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":393,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":394,"character":24},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":395,"character":24},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":396,"character":25},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","name":"EntitiesTableDataSource"},{"__symbolic":"error","message":"Could not resolve type","line":400,"character":22,"context":{"typeName":"F"},"module":"./src/app/core/table/table.class"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":401,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}],"setDatasource":[{"__symbolic":"method"}],"resetDataSource":[{"__symbolic":"method"}],"addColumnDef":[{"__symbolic":"method"}],"removeColumnDef":[{"__symbolic":"method"}],"setFilter":[{"__symbolic":"method"}],"confirmAndAdd":[{"__symbolic":"method"}],"confirmAndBackward":[{"__symbolic":"method"}],"confirmAndForward":[{"__symbolic":"method"}],"editRowById":[{"__symbolic":"method"}],"confirmEditCreate":[{"__symbolic":"method"}],"cancelOrDelete":[{"__symbolic":"method"}],"addRow":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"duplicateRow":[{"__symbolic":"method"}],"isAllSelected":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"deleteSelection":[{"__symbolic":"method"}],"deleteRow":[{"__symbolic":"method"}],"deleteRows":[{"__symbolic":"method"}],"selectRowById":[{"__symbolic":"method"}],"selectRowByData":[{"__symbolic":"method"}],"clickRow":[{"__symbolic":"method"}],"moveRow":[{"__symbolic":"method"}],"ready":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"openSelectColumnsModal":[{"__symbolic":"method"}],"trackByFn":[{"__symbolic":"method"}],"doRefresh":[{"__symbolic":"method"}],"getCurrentColumns":[{"__symbolic":"method"}],"escapeEditingRow":[{"__symbolic":"method"}],"translateControlPath":[{"__symbolic":"method"}],"editRow":[{"__symbolic":"method"}],"selectRowByIdOrData":[{"__symbolic":"method"}],"canDeleteRows":[{"__symbolic":"method"}],"canCancelRows":[{"__symbolic":"method"}],"saveBeforeAction":[{"__symbolic":"method"}],"openRow":[{"__symbolic":"method"}],"openNewRowDetail":[{"__symbolic":"method"}],"getRequiredColumns":[{"__symbolic":"method"}],"getUserColumns":[{"__symbolic":"method"}],"getSortedColumn":[{"__symbolic":"method"}],"getPageSize":[{"__symbolic":"method"}],"getDisplayColumns":[{"__symbolic":"method"}],"updateColumns":[{"__symbolic":"method"}],"registerSubscription":[{"__symbolic":"method"}],"unregisterSubscription":[{"__symbolic":"method"}],"registerAutocompleteField":[{"__symbolic":"method"}],"getI18nColumnName":[{"__symbolic":"method"}],"generateTableId":[{"__symbolic":"method"}],"addRowToTable":[{"__symbolic":"method"}],"registerCellValueChanges":[{"__symbolic":"method"}],"setShowColumn":[{"__symbolic":"method"}],"getShowColumn":[{"__symbolic":"method"}],"startsWithUpperCase":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"askDeleteConfirmation":[{"__symbolic":"method"}],"askCancelConfirmation":[{"__symbolic":"method"}],"askRestoreConfirmation":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"resetError":[{"__symbolic":"method"}],"getRowError":[{"__symbolic":"method"}],"setError":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}],"setLoading":[{"__symbolic":"method"}],"deleteNewRow":[{"__symbolic":"method"}],"cancelExistingRow":[{"__symbolic":"method"}],"checkIfPristine":[{"__symbolic":"method"}],"applyFilter":[{"__symbolic":"method"}],"listenDatasourceLoading":[{"__symbolic":"method"}],"startCellValueChanges":[{"__symbolic":"method"}],"stopCellValueChanges":[{"__symbolic":"method"}]}},"AppTableUtils":{"__symbolic":"class","members":{}},"AppInMemoryTable":{"__symbolic":"class","arity":3,"extends":{"__symbolic":"reference","name":"AppTable"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":13,"character":1}}],"members":{"canEdit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"canDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":33,"character":24},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"error","message":"Expression form not supported","line":35,"character":24,"module":"./src/app/core/table/memory-table.class"},{"__symbolic":"reference","name":"InMemoryEntitiesService"},{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":37,"character":32},{"__symbolic":"reference","name":"AppTableDataSourceOptions"},{"__symbolic":"error","message":"Could not resolve type","line":39,"character":13,"context":{"typeName":"F"},"module":"./src/app/core/table/memory-table.class"}]}],"ngOnInit":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"equals":[{"__symbolic":"method"}]}},"AppTableDataServiceOptions":{"__symbolic":"interface"},"AppTableDataSourceOptions":{"__symbolic":"class","arity":3,"members":{}},"EntitiesTableDataSource":{"__symbolic":"class","arity":4,"extends":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"TableDataSource","line":41,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":34,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":85,"character":24,"module":"./src/app/core/table/entities-table-datasource.class"},{"__symbolic":"reference","name":"IEntitiesService"},{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":87,"character":33},{"__symbolic":"reference","name":"AppTableDataSourceOptions"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"watchAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"updateDatasource":[{"__symbolic":"method"}],"createNew":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}],"waitIdle":[{"__symbolic":"method"}],"confirmCreate":[{"__symbolic":"method"}],"confirmEdit":[{"__symbolic":"method"}],"startEdit":[{"__symbolic":"method"}],"cancelOrDelete":[{"__symbolic":"method"}],"handleError":[{"__symbolic":"method"}],"handleErrorPromise":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"getRows":[{"__symbolic":"method"}],"asyncCreateNew":[{"__symbolic":"method"}],"markAsLoading":[{"__symbolic":"method"}],"markAsLoaded":[{"__symbolic":"method"}]}},"ColumnItem":{"__symbolic":"interface"},"TableSelectColumnsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"table-select-columns","template":"<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n"}]}],"members":{"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"canHideColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"NavParams","line":22,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":23,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"onRenderItems":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}]}},"ActionsColumnComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-actions-column","template":"<ng-container matColumnDef=\"actions\" [stickyEnd]=\"stickyEnd\">\n <th mat-header-cell *matHeaderCellDef [class]=\"classList\" [class.mat-column-sticky]=\"stickyEnd\">\n <button mat-icon-button\n *ngIf=\"optionsClick.observers | isNotEmptyArray\"\n [title]=\"optionsTitle | translate\"\n (click)=\"optionsClick.emit($event)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <ng-content select=\"[matHeader]\"></ng-content>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class]=\"classList\">\n <ng-container *ngIf=\"row.editing; else view\">\n\n <!-- pending -->\n <ion-spinner *ngIf=\"row.validator?.pending\" name=\"dots\" class=\"center\"></ion-spinner>\n\n <!-- new row -->\n <ng-container *ngIf=\"row.id === -1; else existingRow\">\n\n <!-- delete button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canDelete && row.validator.invalid\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n\n <!-- add button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"!canForward && canConfirmAndAdd && row.validator.valid\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"confirmAndAddClick.emit({event: $event, row: row})\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button style=\"color: transparent; width: 0; padding: 0; margin: 0;\"\n *ngIf=\"canForward && row.validator.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-container>\n\n <!-- existing row -->\n <ng-template #existingRow>\n <!-- cancel button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canCancel && row.validator.dirty\"\n [title]=\"'COMMON.BTN_UNDO' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>undo</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button style=\"color: transparent; width: 0; padding: 0; margin: 0;\"\n *ngIf=\"canForward && row.validator.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n </ng-container>\n\n <ng-template #view>\n <!-- dirty icon -->\n <ion-icon *ngIf=\"dirtyIcon && row.validator?.dirty\" [name]=\"dirtyIcon\" color=\"accent\" class=\"dirty-icon\"></ion-icon>\n\n <!-- backward button (invisible - focusable only) -->\n <button mat-icon-button style=\"color: transparent; width: 0; padding: 0; margin: 0;\"\n *ngIf=\"canBackward\"\n (focus)=\"this.backward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: row }\"></ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef>\n <ng-content select=\"[matFooter]\"></ng-content>\n </td>\n</ng-container>\n"}]}],"members":{"columnDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":12,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/table","name":"MatColumnDef","line":12,"character":13}]}]}],"matMenuTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuTrigger","line":13,"character":13}]}]}],"stickyEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"canCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"canDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"canBackward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"canForward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"canConfirmAndAdd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"dirtyIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"optionsTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"classList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3},"arguments":["class"]}]}],"cellTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"optionsClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":26,"character":3}}]}],"cancelOrDeleteClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"confirmAndAddClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"backward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"forward":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatTable","module":"@angular/material/table","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"getRandomImage":{"__symbolic":"function"},"APP_HOME_BUTTONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":37,"character":36},"arguments":["homeButton"]},"HomePage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":39,"character":1},"arguments":[{"moduleId":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"module"},"member":"id"},"member":"toString"}},"selector":"app-page-home","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":44,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"reference","name":"fadeInAnimation"},{"__symbolic":"reference","name":"slideUpDownAnimation"}],"template":"<app-toolbar [canGoBack]=\"false\"\n visible-xs visible-sm visible-mobile>\n\n <!-- change locale button -->\n <ion-button slot=\"end\" *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n</app-toolbar>\n\n<!-- change locale menu -->\n<mat-menu #localeMenu=\"matMenu\">\n <button *ngFor=\"let item of locales\"\n mat-menu-item\n (click)=\"changeLanguage(item.key)\">\n <ion-label>{{item.value}}</ion-label>\n </button>\n</mat-menu>\n\n<ion-content [ngStyle]=\"contentStyle\" no-padding-xs>\n\n <!-- loading spinner -->\n <div class=\"loading-page\" [class.cdk-visually-hidden]=\"!loading\">\n <div class=\"spinner\" *ngIf=\"loading && showSpinner\">\n <p>Loading...</p>\n <div class=\"sk-cube1 sk-cube\"></div>\n <div class=\"sk-cube2 sk-cube\"></div>\n <div class=\"sk-cube4 sk-cube\"></div>\n <div class=\"sk-cube3 sk-cube\"></div>\n </div>\n </div>\n\n <!-- Desktop: translucent top toolbar -->\n <div hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar translucent>\n <ion-buttons slot=\"start\">\n <ion-menu-toggle>\n <ion-button color=\"light\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n\n <ion-buttons slot=\"end\">\n <!-- change locale button -->\n <ion-button color=\"secondary\" fill=\"solid\"\n *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </div>\n\n <!-- Install (and upgrade) card -->\n <app-install-upgrade-card [isLogin]=\"isLogin\"\n showInstallButton=\"true\">\n </app-install-upgrade-card>\n\n <!-- Welcome card -->\n <ion-card *ngIf=\"!loading\"\n class=\"main welcome ion-padding ion-text-center ion-align-self-center\"\n @fadeInAnimation>\n <ion-card-header>\n <ion-card-title class=\"ion-text-center\">\n <span *ngIf=\"isWeb\" [innerHTML]=\"'HOME.WELCOME_WEB'|translate: {appName: appName}\"></span>\n <span *ngIf=\"!isWeb\" [innerHTML]=\"'HOME.WELCOME_APP'|translate: {appName: appName}\"></span>\n </ion-card-title>\n <ion-card-subtitle [innerHTML]=\"description\">\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content class=\"ion-no-padding\">\n <ion-text color=\"primary\">\n <img class=\"logo\" *ngIf=\"logo\" src=\"{{ logo }}\">\n </ion-text>\n <!-- register help text -->\n <ion-text *ngIf=\"!isLogin && canRegister\">\n <br/>\n <span translate>HOME.REGISTER_HELP</span>\n </ion-text>\n </ion-card-content>\n\n <ion-footer class=\"ion-padding-top\">\n\n <!-- If NOT login -->\n <ng-container *ngIf=\"!isLogin; else loginButtons;\">\n\n <ion-button *ngIf=\"canRegister\" expand=\"block\" color=\"tertiary\" (click)=\"register()\">\n <span translate>HOME.BTN_REGISTER</span>\n </ion-button>\n <ion-button expand=\"block\" color=\"light\" [routerLink]=\"['/']\" (click)=\"login()\">\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n </ng-container>\n\n <!-- If user login -->\n <ng-template #loginButtons>\n\n <!-- Feature buttons -->\n <ng-container *ngIf=\"$filteredButtons | async as buttons\">\n <ng-container *ngFor=\"let item of buttons\">\n <ion-button *ngIf=\"item.path\"\n expand=\"block\" color=\"tertiary\"\n [class]=\"item.cssClass\"\n [routerLink]=\"item.path\"\n routerDirection=\"root\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-text>{{'HOME.BTN_DATA_ENTRY'|translate: {name: (item.title | translate) } }}</ion-text>\n </ion-button>\n\n <!-- divider -->\n <div *ngIf=\"!item.path && !item.action\" [class]=\"item.cssClass\">\n <ion-label translate>{{item.title}}&nbsp;</ion-label>\n </div>\n </ng-container>\n\n <!--<p *ngIf=\"buttons.length\" class=\"visible-mobile\">&nbsp;</p>-->\n </ng-container>\n\n <ion-button expand=\"block\" color=\"secondary\" [routerLink]=\"['/account']\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" name=\"person-circle\"></ion-icon>\n <ion-text translate>HOME.BTN_MY_ACCOUNT</ion-text>\n </ion-button>\n\n <p hidden-xs hidden-sm hidden-mobile>\n <ion-text [innerHTML]=\"'HOME.NOT_THIS_ACCOUNT_QUESTION' | translate: {displayName: accountName }\"></ion-text>\n <br/>\n <ion-text>\n <a href=\"#\" (click)=\"logout($event)\">\n <span translate>HOME.BTN_DISCONNECT</span>\n </a>\n </ion-text>\n </p>\n\n\n </ng-template>\n\n </ion-footer>\n </ion-card>\n\n <!-- Page history -->\n <ion-grid *ngIf=\"!loading && isLogin && pageHistory.length; else bottomBanner\"\n class=\"history-container ion-align-self-center\">\n <ion-row>\n <ion-col size=\"12\" size-xl=\"\" *ngFor=\"let page of pageHistory; trackBy: getPagePath\"\n class=\"ion-text-center\">\n <ion-card class=\"ion-align-self-start ion-text-start\" @fadeInAnimation>\n <ion-card-header class=\"ion-no-padding\">\n <!-- top bar -->\n <ion-card-subtitle>\n <button type=\"button\" tabindex=\"-1\"\n (click)=\"settings.removePageHistory(page.path)\"\n mat-icon-button class=\"ion-float-start ion-no-margin\">\n <mat-icon>close</mat-icon>\n </button>\n <ion-label [innerHTML]=\"page.subtitle|translate\"></ion-label>\n <ion-text class=\"ion-float-end\" [title]=\"page.time|dateFormat:{time: true}\">\n <small><ion-icon name=\"time-outline\"></ion-icon>&nbsp;{{ page.time|dateFromNow }}</small>&nbsp;\n </ion-text>\n </ion-card-subtitle>\n\n <!-- main page -->\n <ion-card-title class=\"ion-no-margin ion-no-padding\">\n <ion-item detail=\"true\"\n tappable class=\"text-1x\"\n [routerLink]=\"page.path\"\n routerDirection=\"root\" lines=\"none\">\n <!-- page icon-->\n <ion-icon *ngIf=\"page.icon\" slot=\"start\" [name]=\"page.icon\"></ion-icon>\n <mat-icon *ngIf=\"page.matIcon\" slot=\"start\">{{page.matIcon}}</mat-icon>\n\n <ion-label color=\"primary\" [title]=\"page.title\">{{page.title}}</ion-label>\n </ion-item>\n </ion-card-title>\n </ion-card-header>\n\n <!-- children pages -->\n <ion-card-content class=\"ion-no-padding ion-padding-start\" *ngIf=\"page.children?.length\">\n <ion-list class=\"ion-no-padding\">\n <ion-item detail=\"true\"\n *ngFor=\"let childPage of page.children\"\n tappable class=\"text-1x\"\n [routerLink]=\"childPage.path\"\n routerDirection=\"root\">\n <!-- page icon-->\n <ion-icon *ngIf=\"childPage.icon\" slot=\"start\" color=\"dark\" [name]=\"childPage.icon\"></ion-icon>\n <mat-icon *ngIf=\"childPage.matIcon\" slot=\"start\" color=\"dark\">{{childPage.matIcon}}</mat-icon>\n\n <ion-label color=\"dark\" [innerHTML]=\"childPage.title\"></ion-label>\n </ion-item>\n </ion-list>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Display configured Departments logos -->\n <ng-template #bottomBanner>\n <div class=\"bottom-banner ion-text-center ion-padding\" *ngIf=\"!loadingBanner\" @fadeInAnimation>\n <a href=\"{{ item.siteUrl }}\" *ngFor=\"let item of $partners | async \">\n <img class=\"logo\" src=\"{{ item.logo }}\" alt=\"{{item.label}}\" [title]=\"item.label\" />\n </a>\n </div>\n </ng-template>\n\n\n</ion-content>\n","styles":["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":86,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":87,"character":5},"arguments":[{"__symbolic":"reference","name":"APP_LOCALES"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":88,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":88,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_HOME_BUTTONS"}]}]],"parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":78,"character":23},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":79,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":80,"character":29},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":83,"character":16},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"LocalSettingsService"},null,{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"LocaleConfig"}]},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"MenuItem"}]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"login":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"changeLanguage":[{"__symbolic":"method"}],"getPagePath":[{"__symbolic":"method"}],"tryOnline":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"onConfigLoaded":[{"__symbolic":"method"}],"onSettingsChanged":[{"__symbolic":"method"}],"onLogin":[{"__symbolic":"method"}],"onLogout":[{"__symbolic":"method"}],"refreshButtons":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"SettingsPage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"page-settings","providers":[{"provide":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":27,"character":14},"useExisting":{"__symbolic":"reference","name":"ɵk"}}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":29,"character":19},"member":"OnPush"},"template":"<app-toolbar [title]=\"'SETTINGS.TITLE'|translate\" color=\"primary\"\n [hasValidate]=\"form.dirty && !saving\"\n [hasClose]=\"!form.dirty && !saving\"\n (onValidate)=\"save($event)\"\n (onClose)=\"close($event)\">\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"loading || saving\"></ion-spinner>\n\n <!-- options menu -->\n <ion-button [matMenuTriggerFor]=\"optionsMenu\">\n <mat-icon slot=\"icon-only\">more_vert</mat-icon>\n </ion-button>\n </ion-buttons>\n</app-toolbar>\n\n<!-- Options menu -->\n<mat-menu #optionsMenu=\"matMenu\">\n <!-- Clear cache -->\n <button mat-menu-item (click)=\"clearCache($event)\">\n <ion-label translate>SETTINGS.BTN_CLEAR_CACHE</ion-label>\n </button>\n\n <!-- Reset -->\n <button mat-menu-item\n [disabled]=\"!dirty\"\n (click)=\"cancel($event)\">\n <ion-label>\n <mat-icon><ion-icon slot=\"start\" name=\"refresh\"></ion-icon></mat-icon>&nbsp;\n <span translate>COMMON.BTN_RESET</span>\n </ion-label>\n </button>\n</mat-menu>\n\n<ion-content>\n\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"save($event)\" class=\"form-container\">\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"2\">&nbsp;\n </ion-col>\n\n <ion-col class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <p [innerHTML]=\"'SETTINGS.DESCRIPTION'|translate\"></p>\n\n <!-- account inheritance (desktop) -->\n <mat-form-field [hidden]=\"!isLogin\" *ngIf=\"!mobile; else accountInheritanceMobile\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- check box (if desktop) -->\n <mat-checkbox\n *ngIf=\"!mobile; else accountInheritanceMobile\"\n (change)=\"setAccountInheritance($event.checked)\"\n [checked]=\"accountInheritance\">\n <span translate>SETTINGS.INHERIT_FROM_ACCOUNT</span>\n </mat-checkbox>\n\n <mat-error *ngIf=\"form.controls.accountInheritance.hasError('required')\" translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- account inheritance (if mobile) -->\n <ng-template #accountInheritanceMobile>\n <mat-form-field [hidden]=\"!isLogin\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- slide toggle -->\n <ion-text translate>SETTINGS.INHERIT_FROM_ACCOUNT</ion-text>\n <mat-slide-toggle matSuffix\n (change)=\"setAccountInheritance($event.checked)\"\n [checked]=\"accountInheritance\">\n\n </mat-slide-toggle>\n <mat-error *ngIf=\"form.controls.accountInheritance.hasError('required')\" translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n </ng-template>\n\n <!-- locale -->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.LOCALE'|translate\" formControlName=\"locale\" required>\n <mat-option *ngFor=\"let item of locales\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"form.controls.locale.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Network entry -->\n <h3>\n <ion-text translate>SETTINGS.NETWORK_DIVIDER</ion-text>\n </h3>\n\n <!-- Peer address -->\n <mat-form-field>\n <input matInput type=\"text\" [placeholder]=\"'SETTINGS.PEER_URL'|translate\" formControlName=\"peerUrl\"\n required>\n\n <button mat-icon-button type=\"button\" matSuffix (click)=\"showSelectPeerModal()\" tabindex=\"-1\"\n [title]=\"'SETTINGS.BTN_CHANGE_PEER'|translate\">\n <mat-icon>search</mat-icon>\n </button>\n\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('peerAlive')\"\n translate>SETTINGS.ERROR.PEER_NOT_REACHABLE\n </mat-error>\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('peerNotCompatible')\"\n translate>SETTINGS.ERROR.PEER_NOT_COMPATIBLE\n </mat-error>\n </mat-form-field>\n\n <!-- Offline mode (if mobile) -->\n <mat-form-field *ngIf=\"mobile\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- slide toggle -->\n <ion-text translate>SETTINGS.OFFLINE_MODE</ion-text>\n <mat-slide-toggle matSuffix\n (change)=\"network.setForceOffline($event.checked)\"\n [checked]=\"network.offline\">\n\n </mat-slide-toggle>\n </mat-form-field>\n\n <!-- Data entry -->\n <h3>\n <ion-text translate>SETTINGS.DATA_ENTRY_DIVIDER</ion-text>\n </h3>\n\n <!-- Usage mode -->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.USAGE_MODE'|translate\" formControlName=\"usageMode\"\n required>\n <mat-option *ngFor=\"let item of usageModes\" [value]=\"item\">\n {{'SETTINGS.USAGE_MODES.'+item|translate}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"form.controls.usageMode.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- lat/long format-->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.LAT_LONG_FORMAT'|translate\" formControlName=\"latLongFormat\"\n required>\n <mat-option *ngFor=\"let item of latLongFormats\" [value]=\"item\">\n {{'COMMON.LAT_LONG.'+item+'_PLACEHOLDER'|translate}}\n </mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"form.controls.latLongFormat.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- fields options -->\n <ion-grid formArrayName=\"properties\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding ion-align-self-end\" size=\"12\">\n <span class=\"toolbar-spacer\"></span>\n\n <!-- Show more options -->\n <ion-button color=\"light\" *ngIf=\"propertiesForm?.length === 0\"\n [title]=\"'SETTINGS.BTN_SHOW_MORE_HELP'|translate\"\n (click)=\"propertiesFormHelper.add()\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n <!-- Fields options -->\n <ng-container *ngFor=\"let propertyForm of propertiesForm?.controls; let i=index\">\n <ion-row class=\"ion-no-padding\" [formGroupName]=\"i\">\n\n <!-- property key -->\n <ion-col class=\"ion-no-padding\">\n <mat-form-field>\n <mat-select formControlName=\"key\"\n [placeholder]=\" 'SETTINGS.PROPERTY_KEY'|translate\">\n <mat-option *ngFor=\"let item of propertyDefinitions\" [value]=\"item.key\">{{ item.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <!-- property value -->\n <ion-col class=\"ion-no-padding\" padding-left>\n <app-form-field *ngIf=\"getPropertyDefinition(i); let definition\"\n floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"propertyForm.controls.value\"\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [required]=\"true\">\n </app-form-field>\n </ion-col>\n <ion-col size=\"2\" class=\"ion-no-padding\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"loading\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"removePropertyAt(i)\">\n <mat-icon>close</mat-icon>\n </button>\n <button *ngIf=\"propertiesFormHelper.isLast(i)\"\n type=\"button\"\n mat-icon-button\n color=\"light\"\n [disabled]=\"loading\"\n [title]=\"'SETTINGS.BTN_ADD_PROPERTY'|translate\"\n (click)=\"propertiesFormHelper.add()\">\n <mat-icon>add</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n </ng-container>\n </ion-grid>\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"2\">&nbsp;\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n </form>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <app-form-buttons-bar (onCancel)=\"cancel()\" (onSave)=\"save($event)\" [disabled]=\"!form.dirty || saving\"></app-form-buttons-bar>\n</ion-footer>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":70,"character":5},"arguments":[{"__symbolic":"reference","name":"APP_LOCALES"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":59,"character":14},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":61,"character":22},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":63,"character":25},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":64,"character":25},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":65,"character":27},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":68,"character":18},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"LocaleConfig"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"getPropertyDefinition":[{"__symbolic":"method"}],"updatePropertyDefinition":[{"__symbolic":"method"}],"removePropertyAt":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"setAccountInheritance":[{"__symbolic":"method"}],"showSelectPeerModal":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"getJsonValueToSave":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AccountPage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"app-page-account","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"template":"<app-toolbar [title]=\"'ACCOUNT.TITLE'|translate\" color=\"primary\"\n [hasValidate]=\"form.dirty && !saving\"\n (onValidate)=\"save($event)\"\n [canGoBack]=\"false\">\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading || saving; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button [matTooltip]=\"'COMMON.BTN_REFRESH'|translate\"\n (click)=\"refresh($event)\">\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n</app-toolbar>\n\n<ion-content>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"save($event)\" class=\"form-container\">\n\n <mat-tab-group>\n\n <!-- TAB: user details -->\n <mat-tab label=\"{{'ACCOUNT.USER_DETAILS.TITLE'|translate}}\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <mat-icon>\n <ion-icon matPrefix slot=\"start\" name=\"person-circle\"></ion-icon>\n </mat-icon>\n <ion-label>{{'ACCOUNT.USER_DETAILS.TITLE'|translate}}</ion-label>\n <ion-icon slot=\"end\" name=\"alert-circle\" color=\"danger\" *ngIf=\"submitted && form.invalid\"></ion-icon>\n </ng-template>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;</ion-col>\n\n <ion-col class=\"ion-padding\">\n <p [innerHTML]=\"'ACCOUNT.USER_DETAILS.DESCRIPTION'|translate\"></p>\n\n <!--h1>Identité</h1-->\n\n <!-- Email -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.EMAIL'|translate\"\n formControlName=\"email\" autocomplete=\"section-red email\">\n <mat-error *ngIf=\"form.controls.email.hasError('required') && form.controls.email.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.email.hasError('email') && form.controls.email.dirty\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n <ion-grid *ngIf=\"email.notConfirmed\" class=\"ion-no-padding ion-padding-bottom\">\n <ion-row>\n <ion-col color=\"danger\">\n <ion-icon slot=\"start\" color=\"danger\" name=\"alert-circle\" color=\"danger\"></ion-icon>\n <ion-text [innerHTML]=\"'ACCOUNT.EMAIL_NOT_CONFIRMED_LABEL'|translate\"></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row style=\"height: 51px;\">\n <ion-col style=\"text-align: right;\">\n <ion-text>\n <small [innerHTML]=\"'ACCOUNT.EMAIL_NOT_RECEIVED_QUESTION'|translate\"></small>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"secondary\" *ngIf=\"!email.sending\" (click)=\"sendConfirmationEmail($event)\">\n {{'ACCOUNT.BTN_RESEND'|translate}}\n </ion-button>\n <ion-spinner class=\"ion-no-padding\" *ngIf=\"email.sending\"></ion-spinner>\n </ion-col>\n </ion-row>\n\n <ion-row *ngIf=\"email.error && !email.sending\">\n <ion-col>\n <span *ngIf=\"email.error && !email.sending\" [innerHTML]=\"email.error|translate\"></span>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Last name -->\n <mat-form-field>\n <input matInput [appAutofocus]=\"true\" [autofocusDelay]=\"500\" [placeholder]=\"'USER.LAST_NAME'|translate\"\n formControlName=\"lastName\"\n autocomplete=\"section-blue family-name\"\n required>\n <mat-error *ngIf=\"form.controls.lastName.hasError('required') && form.controls.lastName.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.lastName.hasError('minlength') && form.controls.lastName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- First name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.FIRST_NAME'|translate\" formControlName=\"firstName\" autocomplete=\"section-blue given-name\"\n required>\n <mat-error *ngIf=\"form.controls.firstName.hasError('required') && form.controls.firstName.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.firstName.hasError('minlength') && form.controls.firstName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n\n <!-- Additional fields -->\n <ng-container *ngFor=\"let definition of additionalFields\">\n <app-form-field [definition]=\"definition\"\n [formControlName]=\"definition.key\"\n [required]=\"definition.extra && definition.extra.account && definition.extra.account.required || false\">\n </app-form-field>\n </ng-container>\n\n <h3 translate>ACCOUNT.USER_DETAILS.TECHNICAL_DIVIDER</h3>\n\n <!-- profile -->\n <mat-form-field>\n <input matInput hidden readonly=\"true\" [placeholder]=\"'ACCOUNT.USER_DETAILS.PROFILE'|translate\"\n formControlName=\"mainProfile\" required>\n <span>{{'USER.PROFILE_ENUM.'+form.controls.mainProfile.value | translate}}</span>\n <mat-error *ngIf=\"form.controls.firstName.hasError('mainProfile') && form.controls.mainProfile.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- pubkey -->\n <mat-form-field>\n <input matInput readonly=\"true\" [placeholder]=\"'ACCOUNT.USER_DETAILS.PUBKEY'|translate\" formControlName=\"pubkey\"\n required>\n <mat-error *ngIf=\"form.controls.firstName.hasError('pubkey') && form.controls.firstName.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.firstName.hasError('pubkey') && form.controls.firstName.dirty\">\n <span translate>ERROR.FIELD_NOT_VALID_PUBKEY</span>\n </mat-error>\n </mat-form-field>\n\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;</ion-col>\n </ion-row>\n </ion-grid>\n </mat-tab>\n\n <!-- TAB: settings -->\n <mat-tab label=\"{{'ACCOUNT.SETTINGS.TITLE'|translate}}\" formGroupName=\"settings\">\n <ng-template mat-tab-label>\n <mat-icon>\n <ion-icon matPrefix slot=\"start\" name=\"settings\"></ion-icon>\n </mat-icon>\n <ion-label translate>ACCOUNT.SETTINGS.TITLE</ion-label>\n </ng-template>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;\n </ion-col>\n\n <ion-col class=\"ion-padding\">\n\n <p [innerHTML]=\"'ACCOUNT.SETTINGS.DESCRIPTION'|translate\"></p>\n\n <mat-form-field>\n <mat-select [placeholder]=\"'ACCOUNT.SETTINGS.LOCALE'|translate\" formControlName=\"locale\" required>\n <mat-option *ngFor=\"let item of locales\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"settingsForm.controls.locale.hasError('required') && settingsForm.controls.locale.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- lat/long format-->\n <mat-form-field>\n <mat-select [placeholder]=\"'ACCOUNT.SETTINGS.LAT_LONG_FORMAT'|translate\" formControlName=\"latLongFormat\"\n required>\n <mat-option *ngFor=\"let item of latLongFormats\" [value]=\"item\">\n {{'COMMON.LAT_LONG.'+item+'_PLACEHOLDER'|translate}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"settingsForm.controls.latLongFormat.hasError('required') && settingsForm.controls.latLongFormat.dirty\"\n translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <form formGroupName=\"content\">\n\n\n </form>\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"3\">&nbsp;\n </ion-col>\n </ion-row>\n </ion-grid>\n </mat-tab>\n </mat-tab-group>\n\n\n </form>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <app-form-buttons-bar (onCancel)=\"cancel()\" (onSave)=\"save($event)\" [disabled]=\"!form.dirty || saving\"></app-form-buttons-bar>\n</ion-footer>\n","styles":["mat-tab-group .mat-tab-body-content{padding:var(--ion-grid-padding);display:grid}form,form mat-form-field{width:100%}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":54,"character":5},"arguments":[{"__symbolic":"reference","name":"APP_LOCALES"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":45,"character":14},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":46,"character":22},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":47,"character":24},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":51,"character":25},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":53,"character":18},null]}],"ngOnDestroy":[{"__symbolic":"method"}],"onLogin":[{"__symbolic":"method"}],"onLogout":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"startListenChanges":[{"__symbolic":"method"}],"stopListenChanges":[{"__symbolic":"method"}],"sendConfirmationEmail":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AuthForm":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppForm"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"app-form-auth","animations":[{"__symbolic":"reference","name":"slideUpDownAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"},"template":"<form [formGroup]=\"form\" novalidate (ngSubmit)=\"doSubmit($event)\" class=\"form-container ion-padding\" (keyup.enter)=\"doSubmit($event)\">\n\n <!-- error -->\n <ion-item lines=\"none\" *ngIf=\"error && !loading\" @slideUpDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- Username -->\n <mat-form-field>\n <input matInput [appAutofocus]=\"true\" [autofocusDelay]=\"500\"\n [placeholder]=\"usernamePlaceholder|translate\"\n formControlName=\"username\"\n autocomplete=\"off\"\n required>\n <mat-error *ngIf=\"form.controls.username.hasError('required') && form.controls.username.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.username.hasError('email') && form.controls.username.dirty\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.PASSWORD'|translate\"\n formControlName=\"password\"\n autocomplete=\"section-red new-password\"\n [type]=\"showPwd ? 'text' : 'password'\"\n (keyup.enter)=\"doSubmit($event)\"\n required>\n\n <!-- Show pwd button -->\n <button matSuffix type=\"button\"\n mat-icon-button\n *ngIf=\"mobile\"\n (click)=\"showPwd = !showPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"form.controls.password.hasError('required') && form.controls.password.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"canWorkOffline\">\n <!-- Force offline (desktop) -->\n <mat-form-field hidden-xs hidden-sm hidden-mobile color=\"medium\">\n <input matInput hidden formControlName=\"offline\" type=\"text\">\n\n <!-- check box -->\n <mat-checkbox\n [disabled]=\"network.offline\"\n (change)=\"form.controls.offline.setValue($event.checked)\"\n [checked]=\"form.controls.offline.value\">\n <ion-text color=\"medium\" translate>AUTH.OFFLINE_MODE</ion-text>\n </mat-checkbox>\n </mat-form-field>\n\n <!-- Force offline (mobile) -->\n <mat-form-field visible-xs visible-sm visible-mobile\n color=\"medium\">\n <input matInput hidden formControlName=\"offline\" type=\"text\">\n <!-- slide toggle -->\n <ion-text color=\"medium\" translate>AUTH.OFFLINE_MODE</ion-text>\n <mat-slide-toggle matSuffix\n [disabled]=\"network.offline\"\n (change)=\"form.controls.offline.setValue($event.checked)\"\n [checked]=\"form.controls.offline.value\">\n </mat-slide-toggle>\n </mat-form-field>\n </ng-container>\n\n <!-- Not register yet ? -->\n <p *ngIf=\"canRegister\" class=\"padding\" style=\"text-align: center;\">\n <span translate>AUTH.NO_ACCOUNT_QUESTION</span>\n <br/>\n <a href=\"#\" (click)=\"register()\">\n <span translate>AUTH.BTN_REGISTER</span>\n </a>\n </p>\n</form>\n","styles":[""]}]}],"members":{"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"onSubmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"disable":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":48,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":48,"character":17},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":40,"character":14},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":42,"character":17},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":45,"character":23},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":47,"character":16},null]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"AuthModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":19},"member":"OnPush"},"template":"<ion-header>\n <ion-toolbar color=\"accent\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'AUTH.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"loading\"></ion-spinner>\n\n <ion-button\n (click)=\"doSubmit()\" *ngIf=\"!loading\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <app-form-auth #form\n (onSubmit)=\"doSubmit()\"\n (onCancel)=\"cancel()\">\n </app-form-auth>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button [fill]=\"form.invalid ? 'clear' : 'solid'\"\n [disabled]=\"loading || form.invalid\"\n (click)=\"doSubmit()\"\n (keyup.enter)=\"doSubmit()\"\n color=\"tertiary\">\n <ion-label translate>AUTH.BTN_LOGIN</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n","styles":[""]}]}],"members":{"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":18,"character":3},"arguments":["form",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":21,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":22,"character":41}]}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"RegisterConfirmPage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"page-register-confirm","template":"<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n","styles":["h1,h2,h3,h4,h5{white-space:normal}.bottom-banner,.center,ion-card,ion-card img,ion-content,ion-text{text-align:center;display:inline-block}ion-content{--ion-background-color:transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":26,"character":28},{"__symbolic":"reference","name":"ConfigService"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"doConfirm":[{"__symbolic":"method"}]}},"APP_ABOUT_DEVELOPERS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":13,"character":40},"arguments":["aboutDevelopers"]},"APP_ABOUT_PARTNERS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":14,"character":38},"arguments":["aboutPartners"]},"AboutModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"modal-about","template":"<ion-header>\n <ion-toolbar color=\"light\">\n\n <ion-title>\n {{'ABOUT.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{'COMMON.BTN_CLOSE'|translate}}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <ion-list lines=\"none\">\n\n <!-- Peer info -->\n <ion-item *ngIf=\"config$ | async; let config\">\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\" >\n <h2>\n <b>{{config.label}}</b> - <span [innerHTML]=\"config.name\"></span>\n </h2>\n <p *ngIf=\"config.description\">\n <markdown [data]=\"config.description\"\n emoji>\n </markdown>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <small *ngIf=\"name\">{{'ABOUT.POWERED_BY'|translate}}</small> {{name}}\n <span *ngIf=\"version\" [innerHTML]=\"'ABOUT.VERSION'| translate: {version: version}\"></span>\n </h2>\n <p [innerHTML]=\"'ABOUT.LICENSE'| translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{'ABOUT.HELP'|translate}}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{helpUrl}}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{forumUrl}}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.REPORT_ISSUE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{reportIssueUrl}}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.SOURCE_CODE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{sourceUrl}}\" target=\"_system\">{{sourceUrl}}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.DEVELOPED_BY'|translate}}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\"\n class=\"ion-no-padding\">\n <img slot=\"end\" src=\"{{item.logo}}\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{item.siteUrl}}\" target=\"_system\">{{item.name||item.label}}</a>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{'ABOUT.PARTNERS'|translate}}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{item.siteUrl}}\" class=\"partners\" target=\"_system\">\n <img src=\"{{item.logo}}\">\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n","styles":[".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":37,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":37,"character":17},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":38,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_ABOUT_DEVELOPERS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":39,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_ABOUT_PARTNERS"}]}]],"parameters":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":34,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":35,"character":31},{"__symbolic":"reference","name":"ConfigService"},null,{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":38,"character":65,"context":{"typeName":"Partial"},"module":"./src/app/core/about/modal-about"}]},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":39,"character":61,"context":{"typeName":"Partial"},"module":"./src/app/core/about/modal-about"}]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"setConfig":[{"__symbolic":"method"}]}},"SelectPeerModal":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"select-peer-modal","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":23,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"reference","name":"fadeInAnimation"}],"template":"<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" *ngIf=\"canCancel\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'NETWORK.PEER.SELECT_MODAL.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button *ngIf=\"onRefresh.observers | isNotEmptyArray\"\n [matTooltip]=\"'COMMON.BTN_REFRESH'|translate\"\n (click)=\"refresh($event)\">\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <ion-list>\n\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <p translate>NETWORK.PEER.SELECT_MODAL.HELP</p>\n </ion-label>\n </ion-list-header>\n\n <ion-item *ngFor=\"let peer of $peers | async\"\n tappable\n (click)=\"selectPeer(peer)\"\n detail\n @fadeInAnimation>\n\n <!-- icon -->\n <ion-avatar slot=\"start\" *ngIf=\"peer.reachable\" >\n <ion-img [src]=\"peer.favicon || (peer.url + '/api/favicon')\"></ion-img>\n </ion-avatar>\n <ion-icon slot=\"start\" *ngIf=\"!peer.reachable\" name=\"desktop\" color=\"medium\" class=\"ion-text-center\"></ion-icon>\n\n <!-- Peer is UP -->\n <ion-grid *ngIf=\"peer.reachable\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"dark\">\n <h3>{{peer.hostAndPort}}{{peer.path}}</h3>\n </ion-text>\n <ion-text color=\"primary\">\n <h4>{{peer.label}}</h4>\n </ion-text>\n </ion-label>\n </ion-col>\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap ion-text-center\" color=\"medium\">\n <h3>{{peer.softwareName}}</h3>\n <h4 *ngIf=\"!peerMinVersion || isCompatible(peer); else invalidVersion\">\n <small>v{{peer.softwareVersion}}</small>\n </h4>\n <ng-template #invalidVersion>\n <ion-text color=\"danger\" [matTooltip]=\"'NETWORK.PEER.SELECT_MODAL.NOT_COMPATIBLE_HELP'|translate: {version: peerMinVersion} \">\n <h4 class=\"ion-color-danger\">\n <small><mat-icon>warning</mat-icon>v{{peer.softwareVersion}}</small>\n </h4>\n </ion-text>\n </ng-template>\n </ion-label>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Peer is DOWN -->\n <ion-label class=\"ion-text-wrap\" *ngIf=\"!peer.reachable\">\n <ion-text color=\"medium\">\n <h3>{{peer.hostAndPort}}{{peer.path}}</h3>\n </ion-text>\n <ion-text color=\"danger\">\n <h4>\n <small><ion-icon size=\"small\" name=\"close-circle\"></ion-icon></small>\n <span translate>NETWORK.PEER.OFFLINE</span>\n </h4>\n </ion-text>\n </ion-label>\n </ion-item>\n </ion-list>\n\n</ion-content>\n\n\n<ion-footer *ngIf=\"canCancel\" hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n","styles":["ion-item h4 ion-icon,ion-item h4 mat-icon{height:14px;width:14px;font-size:14px;line-height:14px}ion-item h4 small ion-icon,ion-item h4 small mat-icon{height:12px;width:12px;font-size:12px;line-height:12px}"]}]}],"members":{"canCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"allowSelectDownPeer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"onRefresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":39,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":40,"character":16},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":41,"character":18},null]}],"cancel":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"selectPeer":[{"__symbolic":"method"}],"isCompatible":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"refreshPeers":[{"__symbolic":"method"}],"refreshPeer":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"InstallAppLink":{"__symbolic":"interface"},"AppInstallUpgradeCard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":35,"character":1},"arguments":[{"selector":"app-install-upgrade-card","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":39,"character":19},"member":"OnPush"},"animations":[{"__symbolic":"reference","name":"slideUpDownAnimation"}],"template":"\n\n<!-- Offline mode card-->\n<ion-card *ngIf=\"showOfflineWarning && (!loading && offline || waitingNetwork)\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\" *ngIf=\"!waitingNetwork; else waitingNetworkText\">\n <h4>\n <b *ngIf=\"isLogin; else notLogin\" [innerHTML]=\"'NETWORK.INFO.OFFLINE_OR_UNAUTHORIZED'| translate\"></b>\n <ng-template #notLogin>\n <b [innerHTML]=\"'NETWORK.INFO.OFFLINE'| translate\"></b>\n </ng-template>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.OFFLINE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n <ng-template #waitingNetworkText>\n <ion-text class=\"ion-text-wrap\" [innerHTML]=\"'NETWORK.INFO.RETRY_TO_CONNECT'| translate\"></ion-text>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button *ngIf=\"!waitingNetwork; else waitingSpinner\" color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"tryOnline()\">\n <span translate>NETWORK.BTN_CHECK_ALIVE</span>\n </ion-button>\n\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Upgrade links -->\n<ion-card *ngIf=\"showUpgradeWarning && !loading && !offline && upgradeLinks\"\n color=\"accent\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of upgradeLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3>\n <span *ngIf=\"link.version\" [innerHTML]=\"'INFO.UPDATE_APP_TO_VERSION'| translate: link\"></span>\n <span *ngIf=\"!link.version\" [innerHTML]=\"'INFO.UPDATE_APP'| translate: link\"></span>\n </h3>\n <h4>\n <small *ngIf=\"last\" [innerHTML]=\"'INFO.UPDATE_APP_HELP'|translate\"></small>\n </h4>\n </ion-text>\n </ion-col>\n\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Install links -->\n<ion-card *ngIf=\"showInstallButton && !loading && !offline && installLinks\"\n color=\"secondary\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of installLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3 [innerHTML]=\"'INFO.DOWNLOAD_APP_TITLE'| translate: {name: link.name, platform: getPlatformName(link.platform) }\"></h3>\n <h4><small *ngIf=\"last\" [innerHTML]=\"'INFO.DOWNLOAD_APP_HELP'|translate\"></small></h4>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Update offline feature card-->\n<ion-card *ngIf=\"showUpdateOfflineFeature && !loading && !offline\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h4>\n <b [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE'| translate\"></b>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"onUpdateOfflineModeClick.emit($event)\">\n <span translate>NETWORK.BTN_UPDATE</span>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Display a download button, depending on the link URL, and the device platform -->\n<ng-template #downloadButton let-link>\n\n <ng-container *ngIf=\"link.filename; else redirectButton\">\n\n <ng-container *ngIf=\"canDownload; else webDownloadButton\">\n <!-- Download using platform -->\n <ion-button (click)=\"download($event, asLink(link))\"\n *ngIf=\"!link.location; else openButton\"\n [disabled]=\"downloading\"\n color=\"tertiary\" class=\"ion-float-end\">\n <ion-icon slot=\"start\" *ngIf=\"!downloading\" name=\"download\"></ion-icon>\n <ion-spinner slot=\"start\" class=\"ion-no-padding\" *ngIf=\"link.downloading\"></ion-spinner>\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n\n <!-- Open APK button -->\n <ng-template #openButton>\n <ion-button *ngIf=\"link.location\"\n (click)=\"openFile($event, link)\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_INSTALL</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web download button -->\n <ng-template #webDownloadButton>\n <ion-button [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n</ng-template>\n\n\n<!-- Waiting spinner -->\n<ng-template #waitingSpinner>\n <ion-spinner color=\"light\"></ion-spinner>\n</ng-template>\n","styles":["ion-text small{font-size:85%}"]}]}],"members":{"isLogin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"showUpgradeWarning":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"showOfflineWarning":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"showInstallButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"showUpdateOfflineFeature":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"onUpdateOfflineModeClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":83,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":75,"character":23},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":77,"character":29},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":78,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":79,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":80,"character":16},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"NetworkService"},null]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"download":[{"__symbolic":"method"}],"openFile":[{"__symbolic":"method"}],"tryOnline":[{"__symbolic":"method"}],"getPlatformName":[{"__symbolic":"method"}],"asLink":[{"__symbolic":"method"}],"checkNeedInstallOrUpdate":[{"__symbolic":"method"}],"getCompatibleInstallLinks":[{"__symbolic":"method"}],"getCompatibleUpgradeLinks":[{"__symbolic":"method"}],"getLinks":[{"__symbolic":"method"}],"getFilename":[{"__symbolic":"method"}],"listenDownloadJobs":[{"__symbolic":"method"}],"listenDownloadJob":[{"__symbolic":"method"}],"showDownloadFailedToast":[{"__symbolic":"method"}],"showDownloadCompleteDialog":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}]}},"APP_MENU_ITEMS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":22,"character":34},"arguments":["menuItems"]},"MenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"app-menu","animations":[{"__symbolic":"reference","name":"fadeInAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":31,"character":19},"member":"OnPush"},"template":"<ion-split-pane #splitPane contentId=\"menu-content\" (swiperight)=\"onSwipeRight($event)\">\n\n <ion-menu id=\"menu\" menuId=\"left\" contentId=\"menu-content\">\n <ion-header>\n\n <ion-toolbar @fadeInAnimation *ngIf=\"isLogin; else notLogin\" class=\"ion-toolbar-top\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"4\">\n <button type=\"button\" mat-flat-button\n class=\"user-avatar\" [class.primary]=\"!accountAvatar\"\n [style.background-image]=\"'url('+(accountAvatar||'./assets/img/person.png')+')'\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"menuClose()\">\n </button>\n </ion-col>\n <ion-col size=\"8\" class=\"user-logo\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"108px;\"/>\n <span *ngIf=\"!logo\" width=\"108px;\">{{appName}}</span>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n\n <button mat-button type=\"button\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"menuClose()\">\n <ion-label color=\"primary\" class=\"ion-text-wrap ion-text-start\">\n <h3 class=\"no-margin username\">\n <b>{{accountName}}</b>\n </h3>\n <h4>{{accountEmail}}</h4>\n </ion-label>\n </button>\n\n </ion-row>\n </ion-grid>\n\n </ion-toolbar>\n\n <!-- User not logged -->\n <ng-template #notLogin>\n <mat-toolbar class=\"ion-padding\" @fadeInAnimation\n style=\"height: unset; display: block; margin: auto; text-align: center;\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"150px;\">\n <span *ngIf=\"!logo\" style=\"width: 150px\">{{appName}}</span>\n </mat-toolbar>\n </ng-template>\n </ion-header>\n\n <ion-content [class.has-user-header]=\"isLogin\">\n\n <ion-list lines=\"none\">\n <ion-menu-toggle auto-hide=\"false\"\n [class.flex-spacer]=\"item.cssClass == 'flex-spacer'\"\n *ngFor=\"let item of $items | async\">\n\n <!-- link -->\n <ion-item *ngIf=\"!loading && item.path\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n [routerLink]=\"item.path\"\n routerDirection=\"root\"\n routerLinkActive=\"selected\"\n [routerLinkActiveOptions]=\"{exact: (item.path === '/')}\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- action -->\n <ion-item *ngIf=\"!loading && item.action\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n (click)=\"doAction(item.action, $event)\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- divider -->\n <ion-item-divider @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}}\"\n *ngIf=\"!loading && !item.path && !item.action\">\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item-divider>\n\n </ion-menu-toggle>\n </ion-list>\n </ion-content>\n\n <ion-footer class=\"hidden-xs hidden-sm\">\n <ion-toolbar>\n\n <ion-buttons slot=\"start\">\n <ion-button mat-icon-button color=\"accent\" (click)=\"openAboutModal($event)\">\n <mat-icon slot=\"icon-only\">help_outline</mat-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title (click)=\"openAboutModal($event)\" color=\"medium\">\n {{'MENU.FOOTER_VERSION_ABOUT'| translate: {version: appVersion} }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <button mat-icon-button color=\"accent\" (click)=\"toggleSplitPane($event)\"\n class=\"hidden-xs hidden-sm hidden-md\"\n [title]=\"(splitPaneOpened ? 'COMMON.BTN_HIDE_MENU' : 'COMMON.BTN_SHOW_MENU') |translate\">\n <mat-icon><span>{{splitPaneOpened ? '&#xab;' : '&#xbb;'}}</span></mat-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n </ion-footer>\n\n </ion-menu>\n\n <ng-content></ng-content>\n\n</ion-split-pane>\n","styles":["ion-menu{--ion-item-background:transparent;--ion-item-divider-background:transparent;--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint);--ion-item-background-selected:var(--ion-color-secondary100);--ion-item-text-color-selected:var(--ion-color-primary);--ion-item-icon-color-selected:var(--ion-color-primary);--ion-item-text-color-disable:var(--ion-color-medium);--ion-item-icon-color-disable:var(--ion-color-medium)}ion-menu ion-header ion-text{color:var(--ion-color-primary)}ion-menu ion-header .user-avatar{background-size:cover;background-repeat:no-repeat;background-position:50%;background-color:var(--ion-color-secondary);border:1px solid var(--ion-color-primary);overflow:hidden!important;font-size:var(--avatar-size,60px)!important;line-height:var(--avatar-size,60px);height:var(--avatar-size,60px)!important;width:var(--avatar-size,60px)!important;border-radius:50%;display:inline-block}ion-menu ion-header .user-logo{text-align:right}ion-menu ion-header .user-logo img{max-width:120px;max-height:var(--avatar-size,60px);width:auto}ion-menu ion-header .username{padding-top:0;margin-top:0;margin-bottom:0;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-menu ion-header button[mat-button]{padding:0;text-align:start!important;width:100%}ion-menu .scroll-content{margin-top:79px!important}ion-menu .has-user-header .scroll-content{margin-top:188px!important}ion-menu ion-content.has-profile-header{--offset-top:188px}ion-menu ion-content.no-profile-header{--offset-top:79px}ion-menu ion-content ion-list{min-height:100%;display:flex;flex-direction:column;justify-content:flex-start}ion-menu ion-content ion-list ion-menu-toggle.flex-spacer{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-end}ion-menu ion-content ion-list ion-item.primary{--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint)}ion-menu ion-content ion-list ion-item.secondary{--ion-item-icon-color:var(--ion-color-secondary-tint);--ion-item-text-color:var(--ion-color-secondary-tint)}ion-menu ion-content ion-list ion-item.tertiary{--ion-item-icon-color:var(--ion-color-tertiary-tint);--ion-item-text-color:var(--ion-color-tertiary-tint)}ion-menu ion-content ion-list ion-item.danger{--ion-item-icon-color:var(--ion-color-danger-tint);--ion-item-text-color:var(--ion-color-danger-tint)}ion-menu ion-content ion-list ion-item.medium{--ion-item-icon-color:var(--ion-color-medium-shade);--ion-item-text-color:var(--ion-color-medium-shade)}ion-menu ion-content ion-list ion-item.dark{--ion-item-icon-color:var(--ion-color-dark-tint);--ion-item-text-color:var(--ion-color-dark-tint)}ion-menu ion-content ion-list ion-item ion-icon,ion-menu ion-content ion-list ion-item mat-icon{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item ion-label,ion-menu ion-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-menu ion-content ion-list ion-item.selected{background-color:var(--ion-item-background-selected)!important;--color-hover:var(--ion-item-background-selected)!important}ion-menu ion-content ion-list ion-item.selected ion-icon,ion-menu ion-content ion-list ion-item.selected mat-icon{color:var(--ion-item-icon-color-selected)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item.selected ion-label,ion-menu ion-content ion-list ion-item.selected ion-text{color:var(--ion-item-text-color-selected)!important}ion-menu ion-content ion-list ion-item.selected:hover{--color-hover:var(--ion-item-background-selected)!important;--ion-item-icon-color-selected:var(--ion-item-icon-color)!important;--ion-item-text-color-selected:var(--ion-item-text-color)!important}ion-menu ion-footer{display:block!important}ion-menu ion-footer ion-toolbar ion-title{cursor:pointer;font-size:12pt;font-weight:400;text-align:center;padding:0 8px}ion-menu ion-footer ion-toolbar ion-button{--width:40px}@media screen and (max-width:767px){ion-menu ion-footer{display:none!important;visibility:hidden!important}}@media screen and (min-width:768px){ion-menu ion-scroll{overflow-y:auto!important}ion-menu .user-avatar{font-size:var(--avatar-size,80px)!important;line-height:var(--avatar-size,80px);height:var(--avatar-size,80px)!important;width:var(--avatar-size,80px)!important}ion-menu .user-logo img{max-height:var(--avatar-size,80px)}}"]}]}],"members":{"logo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"appName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"appVersion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"side":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"splitPane":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":59,"character":3},"arguments":["splitPane",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":72,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":73,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":73,"character":17},"arguments":[{"__symbolic":"reference","name":"APP_MENU_ITEMS"}]}]],"parameters":[{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":64,"character":22},{"__symbolic":"reference","module":"@ionic/angular","name":"MenuController","line":65,"character":20},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":66,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":67,"character":31},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":68,"character":25},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":70,"character":18},{"__symbolic":"reference","name":"MenuService"},null,{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"MenuItem"}]}]}],"onResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":81,"character":3},"arguments":["window:resize",["$event"]]}]}],"ngOnInit":[{"__symbolic":"method"}],"onLogin":[{"__symbolic":"method"}],"onLogout":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"menuClose":[{"__symbolic":"method"}],"openAboutModal":[{"__symbolic":"method"}],"toggleSplitPane":[{"__symbolic":"method"}],"doAction":[{"__symbolic":"method"}],"onSwipeRight":[{"__symbolic":"method"}],"refreshMenuItems":[{"__symbolic":"method"}],"detectChanges":[{"__symbolic":"method"}]}},"MenuItem":{"__symbolic":"interface"},"MenuItems":{"__symbolic":"class","members":{}},"AppMenuModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"SharedModule"},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":10,"character":4},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":11,"character":4}],"declarations":[{"__symbolic":"reference","name":"MenuComponent"}],"exports":[{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":20,"character":4},{"__symbolic":"reference","name":"MenuComponent"}]}]}],"members":{}},"MenuService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"toggleMenu":[{"__symbolic":"method"}],"menuVisible":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EntityClass":{"__symbolic":"function"},"EntityClasses":{"__symbolic":"class","members":{},"statics":{"CLASSES_BY_NAME":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Map"}}}},"SocialModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","name":"CoreModule"}],"declarations":[{"__symbolic":"reference","name":"UserEventsTable"}],"exports":[{"__symbolic":"reference","name":"UserEventsTable"}]}]}],"members":{}},"UserEventTypes":{"DEBUG_DATA":"DEBUG_DATA","INBOX_MESSAGE":"INBOX_MESSAGE"},"UserEvent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"UserEventVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"asObject":[{"__symbolic":"method"}],"fromObject":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":15,"character":9}}},"UserEventAction":{"__symbolic":"interface"},"UserEventFilter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"EntityFilter"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"UserEventVO"}]}],"members":{"fromObject":[{"__symbolic":"method"}],"buildFilter":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":27,"character":9}}},"UserEventWatchOptions":{"__symbolic":"interface"},"UserEventActionDefinition":{"__symbolic":"interface"},"UserEventService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseGraphqlService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":94,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":107,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":105,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":106,"character":31},null]}],"watchAll":[{"__symbolic":"method"}],"watchPage":[{"__symbolic":"method"}],"saveAll":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"deleteAll":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"registerAction":[{"__symbolic":"method"}],"getActionsByTypename":[{"__symbolic":"method"}],"showToastErrorWithContext":[{"__symbolic":"method"}],"sendDataForDebug":[{"__symbolic":"method"}],"asFilter":[{"__symbolic":"method"}],"convertObjectToString":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"fillDefaultProperties":[{"__symbolic":"method"}],"copyIdAndUpdateDate":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"UserEventDetail":{"__symbolic":"interface"},"UserEventIcon":{"__symbolic":"interface"},"UserEventsTable":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppTable"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":78,"character":1},"arguments":[{"selector":"app-user-events-table","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":82,"character":19},"member":"OnPush"},"template":"\n<!-- Type = options menu -->\n<mat-menu #optionsMenu=\"matMenu\" xPosition=\"after\">\n\n <!-- display columns -->\n <button mat-menu-item\n (click)=\"openSelectColumnsModal($event)\">\n <mat-icon>view_column</mat-icon>\n <ion-label translate>COMMON.DISPLAYED_COLUMNS_DOTS</ion-label>\n </button>\n\n</mat-menu>\n\n<!-- top header -->\n<mat-toolbar>\n\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n\n <button mat-icon-button [title]=\"'COMMON.BTN_REFRESH'|translate\" (click)=\"onRefresh.emit()\">\n <mat-icon>refresh</mat-icon>\n </button>\n\n </ng-container>\n\n <!-- if row selection -->\n <ng-template #hasSelection>\n\n <!-- delete -->\n <button mat-icon-button class=\"hidden-xs hidden-sm\" *ngIf=\"canDelete\"\n [title]=\"'COMMON.BTN_DELETE'|translate\" (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n </ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" hidden-xs hidden-sm hidden-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <div class=\"toolbar-spacer\"></div>\n\n <button mat-icon-button\n [title]=\"'COMMON.BTN_OPTIONS'|translate\"\n [matMenuTriggerFor]=\"optionsMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n</mat-toolbar>\n\n\n<mat-table [dataSource]=\"dataSource\" matSort\n [matSortActive]=\"defaultSortBy\"\n [matSortDirection]=\"defaultSortDirection\"\n matSortDisableClear [trackBy]=\"trackByFn\">\n\n <!-- select -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <!-- id -->\n <ng-container matColumnDef=\"id\">\n <mat-header-cell *matHeaderCellDef mat-sort-header [class.cdk-visually-hidden]=\"!isAdmin\">\n <app-loading-spinner [loading]=\"loadingSubject|async\"><ion-label>#</ion-label></app-loading-spinner>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!isAdmin\">{{ row.currentData.id | mathAbs }}</mat-cell>\n </ng-container>\n\n <!-- creationDate -->\n <ng-container matColumnDef=\"creationDate\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.CREATION_DATE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ion-text>\n {{row.currentData.creationDate | dateFromNow }}<br/>\n <ion-text color=\"medium\"><small>{{row.currentData.creationDate | dateFormat: {time: true} }}</small></ion-text>\n </ion-text>\n </mat-cell>\n </ng-container>\n\n <!-- icon -->\n <ng-container matColumnDef=\"icon\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getIcon(row.currentData); let details\">\n <ion-icon slot=\"start\" *ngIf=\"details.icon\" [name]=\"details.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"details.matIcon\">{{details.matIcon}}</mat-icon>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- event type -->\n <ng-container matColumnDef=\"eventType\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>SOCIAL.USER_EVENT.EVENT_TYPE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <span>{{'SOCIAL.EVENT_TYPE_ENUM.' + row.currentData.eventType | translate}}</span>\n </mat-cell>\n </ng-container>\n\n <!-- message -->\n <ng-container matColumnDef=\"message\">\n <mat-header-cell *matHeaderCellDef>\n <ion-label translate>SOCIAL.USER_EVENT.MESSAGE</ion-label>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row;\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <ion-text [innerHTML]=\"details.title|translate\">\n </ion-text>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <!-- Actions buttons column -->\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\">\n <ng-container *ngIf=\"getDetail(row.currentData); let details\">\n <button mat-icon-button color=\"light\"\n *ngFor=\"let action of details.actions\"\n [title]=\"action.title |translate\"\n [color]=\"action.color\"\n (click)=\"doAction(action, row)\">\n <ion-icon slot=\"start\" *ngIf=\"action.icon\" [name]=\"action.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"action.matIcon\">{{action.matIcon}}</mat-icon>\n </button>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"mat-row-disabled\"\n (click)=\"clickRow($event, row)\"></mat-row>\n\n</mat-table>\n\n<ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col class=\"ion-no-padding\" size=\"auto\">\n <mat-paginator [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\" [pageSizeOptions]=\"defaultPageSizeOptions\" showFirstLastButtons>\n </mat-paginator>\n </ion-col>\n</ion-row>\n","styles":[".mat-header-row .mat-column-icon,.mat-row .mat-column-icon{max-width:40px;padding-left:0}.mat-header-row .mat-column-icon ion-icon,.mat-header-row .mat-column-icon mat-icon,.mat-row .mat-column-icon ion-icon,.mat-row .mat-column-icon mat-icon{font-size:1.2em;height:1.2em;width:1.2em}.mat-header-row .mat-column-creationDate,.mat-row .mat-column-creationDate{min-width:100px;max-width:120px}"]}]}],"members":{"recipient":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"withContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"defaultSortBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"defaultSortDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":99,"character":24},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"UserEventService"},{"__symbolic":"reference","name":"EntitiesStorage"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":18},null]}],"ngOnInit":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}],"getIcon":[{"__symbolic":"method"}],"getDetail":[{"__symbolic":"method"}],"doAction":[{"__symbolic":"method"}]}},"AdminModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","name":"CoreModule"},{"__symbolic":"reference","name":"SocialModule"},{"__symbolic":"reference","name":"SharedMaterialModule"},{"__symbolic":"reference","module":"ngx-jdenticon","name":"NgxJdenticonModule","line":15,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateModule","line":16,"character":4},"member":"forChild"}}],"declarations":[{"__symbolic":"reference","name":"UsersPage"}],"exports":[{"__symbolic":"reference","name":"UsersPage"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"AdminRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":19,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"SharedRoutingModule"},{"__symbolic":"reference","name":"AdminModule"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":23,"character":4},"member":"forChild"},"arguments":[[{"path":"users","pathMatch":"full","component":{"__symbolic":"reference","name":"UsersPage"},"canActivate":[{"__symbolic":"reference","name":"AuthGuardService"}],"data":{"profile":"ADMIN"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":25,"character":12}]}]}],"members":{}},"PersonFilter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"EntityFilter"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"EntityClass"},"arguments":[{"typename":"PersonFilterVO"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"fromObject":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}],"buildFilter":[{"__symbolic":"method"}]},"statics":{"fromObject":{"__symbolic":"error","message":"Variable not initialized","line":12,"character":9},"searchFilter":{"__symbolic":"function","parameters":["source"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"source"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"PersonFilter"},"member":"fromObject"},"arguments":[{"__symbolic":"reference","name":"source"}]},"member":"asFilterFn"}}}}}},"PersonValidatorService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":12,"character":27},{"__symbolic":"reference","name":"ɵh"}]}],"getRowValidator":[{"__symbolic":"method"}],"getFormGroup":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ErrorCodes":{"LOAD_PERSONS_ERROR":100,"SAVE_PERSONS_ERROR":101,"DELETE_PERSONS_ERROR":102},"PersonFragments":{"__symbolic":"error","message":"Tagged template expressions are not supported in metadata","line":19,"character":10,"module":"./src/app/admin/services/person.service"},"PersonService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseEntityService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":78,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"GraphqlService"},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","name":"NetworkService"},{"__symbolic":"reference","name":"EntitiesStorage"}]}],"loadAll":[{"__symbolic":"method"}],"loadAllLocally":[{"__symbolic":"method"}],"suggest":[{"__symbolic":"method"}],"executeImport":[{"__symbolic":"method"}],"asObject":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"UsersPage":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppTable"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"app-users-table","providers":[{"provide":{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":31,"character":14},"useExisting":{"__symbolic":"reference","name":"PersonValidatorService"}}],"animations":[{"__symbolic":"reference","name":"slideUpDownAnimation"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"<app-toolbar [title]=\"'USER.LIST.TITLE'|translate\"\n color=\"primary\"\n [canGoBack]=\"false\"\n [hasValidate]=\"!(loadingSubject|async) && dirty\"\n (onValidate)=\"save()\">\n <ion-buttons slot=\"end\">\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n <!-- Add -->\n <button mat-icon-button\n *ngIf=\"canEdit && !mobile\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"addRow()\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Refresh -->\n <button mat-icon-button *ngIf=\"!mobile\"\n [title]=\"'COMMON.BTN_REFRESH'|translate\"\n (click)=\"onRefresh.emit()\">\n <mat-icon>refresh</mat-icon>\n </button>\n\n <!-- reset filter -->\n <button mat-icon-button (click)=\"resetFilter()\"\n *ngIf=\"filterCriteriaCount\">\n <mat-icon color=\"accent\">filter_list_alt</mat-icon>\n <mat-icon class=\"icon-secondary\" style=\"left: 16px; top: 5px; font-weight: bold;\">close</mat-icon>\n </button>\n\n <!-- show filter -->\n <button mat-icon-button (click)=\"filterExpansionPanel.toggle()\">\n <mat-icon *ngIf=\"filterCriteriaCount; else emptyFilter\"\n [matBadge]=\"filterCriteriaCount\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\">filter_list_alt\n </mat-icon>\n <ng-template #emptyFilter>\n <mat-icon>filter_list_alt</mat-icon>\n </ng-template>\n </button>\n </ng-container>\n\n <ng-template #hasSelection>\n <!-- delete -->\n <button mat-icon-button\n class=\"hidden-xs hidden-sm\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n </ng-template>\n </ion-buttons>\n</app-toolbar>\n\n<ion-content class=\"ion-no-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"errorSubject|async ; let error\" lines=\"none\" @slideUpDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- search -->\n <mat-expansion-panel #filterExpansionPanel class=\"ion-no-padding filter-panel filter-panel-floating\">\n <form class=\"form-container ion-padding\" [formGroup]=\"filterForm\" (ngSubmit)=\"onRefresh.emit()\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- search -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.LIST.FILTER.SEARCH'|translate\" formControlName=\"searchText\">\n\n <button mat-icon-button matSuffix tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearControlValue($event, filterForm.controls.searchText)\"\n [hidden]=\"filterForm.controls.searchText.disabled || !filterForm.controls.searchText.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <!-- status -->\n <mat-form-field>\n <mat-select formControlName=\"statusId\" [placeholder]=\"'USER.STATUS'|translate\">\n <mat-option [value]=\"null\"><i><span translate>COMMON.EMPTY_OPTION</span></i></mat-option>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n\n <button mat-icon-button matSuffix tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearControlValue($event, filterForm.controls.statusId)\"\n [hidden]=\"filterForm.controls.statusId.disabled || !filterForm.controls.statusId.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <mat-action-row>\n <!-- Counter -->\n <ion-label [hidden]=\"(loadingSubject|async) || filterForm.dirty\"\n [color]=\"empty && 'danger'\"\n class=\"ion-padding\">\n {{ (totalRowCount ? 'COMMON.RESULT_COUNT' : 'COMMON.NO_RESULT') | translate: {\n count: (totalRowCount |\n numberFormat)\n } }}\n </ion-label>\n\n <div class=\"toolbar-spacer\"></div>\n\n <!-- Close panel -->\n <ion-button mat-button fill=\"clear\" color=\"dark\"\n (click)=\"filterExpansionPanel.close()\"\n [disabled]=\"loadingSubject|async\">\n <ion-text translate>COMMON.BTN_CLOSE</ion-text>\n </ion-button>\n\n <!-- Search button -->\n <ion-button mat-button\n [color]=\"filterForm.dirty ? 'tertiary' : 'dark'\"\n [fill]=\"filterForm.dirty ? 'solid' : 'clear'\"\n (click)=\"applyFilterAndClosePanel($event)\"\n [disabled]=\"loadingSubject|async\">\n <ion-text translate>COMMON.BTN_APPLY</ion-text>\n </ion-button>\n\n </mat-action-row>\n </mat-expansion-panel>\n\n <!-- error -->\n <ion-item *ngIf=\"error\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <div class=\"table-container\">\n <table #table mat-table matSort\n [dataSource]=\"dataSource\"\n [matSortActive]=\"defaultSortBy\" [matSortDirection]=\"defaultSortDirection\"\n matSortDisableClear [trackBy]=\"trackByFn\">\n\n <ng-container matColumnDef=\"select\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!inlineEdition\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!inlineEdition\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Id Column -->\n <ng-container matColumnDef=\"id\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label>#</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">{{ row.currentData.id }}</td>\n </ng-container>\n\n <!-- avatar Column -->\n <ng-container matColumnDef=\"avatar\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <div class=\"avatar\" *ngIf=\"row.currentData.avatar; else generateIcon\"\n [ngStyle]=\"{'background-image':'url('+row.currentData.avatar+')'}\"></div>\n <ng-template #generateIcon>\n <div class=\"avatar\">\n <svg width=\"38\" width=\"38\" [data-jdenticon-value]=\"row.currentData.id\"></svg>\n </div>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- lastName -->\n <ng-container matColumnDef=\"lastName\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.LAST_NAME</span>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"focusColumn='lastName'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput\n [formControl]=\"row.validator.controls['lastName']\"\n [placeholder]=\"'USER.LAST_NAME'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='lastName'\">\n <mat-error *ngIf=\"row.validator.controls['lastName'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['lastName'].hasError('minlength')\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n </td>\n\n </ng-container>\n\n <!-- firstname -->\n <ng-container matColumnDef=\"firstName\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.FIRST_NAME</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n\n (click)=\"focusColumn='firstName'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator.controls['firstName']\"\n [placeholder]=\"'USER.FIRST_NAME'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='firstName'\">\n <mat-error *ngIf=\"row.validator.controls['firstName'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['firstName'].hasError('minlength')\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- email -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.EMAIL</span>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"focusColumn='email'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator.controls['email']\"\n [placeholder]=\"'USER.EMAIL'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='email'\">\n <mat-error *ngIf=\"row.validator.controls['email'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['email'].hasError('email')\">\n <span translate>ERROR.FIELD_NOT_VALID_EMAIL</span>\n </mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- additional fields -->\n <ng-container *ngFor=\"let definition of additionalFields\" [matColumnDef]=\"definition.key\">\n <th mat-header-cell *matHeaderCellDef>\n <span>{{definition.label|translate}}</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn=definition.key\">\n <app-form-field floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"row.validator.controls[definition.key]\"\n [required]=\"definition.extra?.account?.required\"\n [autofocus]=\"row.editing && focusColumn===definition.ke\">\n </app-form-field>\n </td>\n </ng-container>\n\n <!-- profile column -->\n <ng-container matColumnDef=\"profile\">\n <th mat-header-cell *matHeaderCellDef>\n <span translate>USER.PROFILE</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='profile'\">\n <mat-form-field floatLabel=\"never\">\n <mat-select [formControl]=\"row.validator.controls['mainProfile']\"\n [placeholder]=\"'USER.PROFILE'|translate\">\n <mat-option *ngFor=\"let item of profiles\" [value]=\"item\">\n {{ ('USER.PROFILE_ENUM.' + item) | uppercase |translate }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"row.validator.controls['mainProfile'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Status column -->\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef>\n <span translate>USER.STATUS</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='status'\">\n <mat-form-field floatLabel=\"never\">\n <ion-icon matPrefix *ngIf=\"row.validator.controls['statusId'].value &gt;=0\" [name]=\"statusById[row.validator.controls['statusId'].value]?.icon\"></ion-icon>\n\n <mat-select [formControl]=\"row.validator.controls['statusId']\"\n [placeholder]=\"'REFERENTIAL.STATUS'|translate\">\n <mat-select-trigger>\n <span *ngIf=\"row.validator.controls['statusId'].value &gt;=0\">\n {{ statusById[row.validator.controls['statusId'].value]?.label | translate}}</span>\n </mat-select-trigger>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"row.validator.controls['statusId'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- username -->\n <ng-container matColumnDef=\"username\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.USERNAME</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='username'\">\n <mat-form-field floatLabel=\"never\" >\n <input matInput [formControl]=\"row.validator.controls.username\"\n [placeholder]=\"'USER.USERNAME'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='username'\">\n <mat-error *ngIf=\"row.validator.controls.username.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- username extranet -->\n <ng-container matColumnDef=\"usernameExtranet\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.USERNAME_EXTRANET</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"focusColumn='usernameExtranet'\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator.controls.usernameExtranet\"\n [placeholder]=\"'USER.USERNAME_EXTRANET'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn==='usernameExtranet'\">\n <mat-error *ngIf=\"row.validator.controls.usernameExtranet.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- pubkey -->\n <ng-container matColumnDef=\"pubkey\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <span translate>USER.PUBKEY</span>\n </th>\n <td mat-cell *matCellDef=\"let row\"\n [title]=\"row.validator.controls['pubkey'].value\"\n (click)=\"focusColumn='pubkey'\">\n <mat-form-field floatLabel=\"never\" >\n <input matInput [formControl]=\"row.validator.controls['pubkey']\" [placeholder]=\"'USER.PUBKEY'|translate\"\n [readonly]=\"!row.editing\" autocomplete=\"off\">\n <mat-error *ngIf=\"row.validator.controls['pubkey'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"row.validator.controls['pubkey'].hasError('pubkey')\">\n <span translate>ERROR.FIELD_NOT_VALID_PUBKEY</span>\n </mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Actions buttons column -->\n <app-actions-column [stickyEnd]=\"useSticky\"\n (optionsClick)=\"openSelectColumnsModal($event)\"\n (cancelOrDeleteClick)=\"cancelOrDelete($event.event, $event.row)\"\n (confirmAndAddClick)=\"confirmAndAdd($event.event, $event.row)\"\n (backward)=\"confirmAndBackward($event.event, $event.row)\"\n (forward)=\"confirmAndForward($event.event, $event.row)\"\n [canCancel]=\"false\">\n </app-actions-column>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [class.mat-row-error]=\"row.validator.invalid\"\n [class.mat-row-dirty]=\"row.currentData.dirty\"\n [class.mat-row-disabled]=\"!row.editing\"\n (click)=\"clickRow($event, row)\"\n (keydown.escape)=\"escapeEditingRow($event)\"\n [cdkTrapFocus]=\"row.validator.invalid\"></tr>\n </table>\n\n <ng-container *ngIf=\"loadingSubject|async; else noResult\">\n <ion-item>\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-item>\n </ng-container>\n\n <ng-template #noResult>\n <ion-item *ngIf=\"totalRowCount === 0\">\n <ion-text color=\"danger\" class=\"text-italic\" translate>COMMON.NO_RESULT</ion-text>\n </ion-item>\n </ng-template>\n </div>\n</ion-content>\n\n<ion-footer>\n <mat-paginator class=\"mat-paginator-footer\"\n [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"defaultPageSizeOptions\" showFirstLastButtons>\n </mat-paginator>\n\n <app-form-buttons-bar *ngIf=\"!mobile && inlineEdition\"\n (onCancel)=\"onRefresh.emit()\" (onSave)=\"save()\" [disabled]=\"(loadingSubject|async) || !dirty\"></app-form-buttons-bar>\n</ion-footer>\n\n<ion-fab slot=\"fixed\" vertical=\"bottom\" horizontal=\"end\" *ngIf=\"mobile\">\n <ion-fab-button color=\"tertiary\" (click)=\"addRow()\">\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n","styles":[".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:100%}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-id{width:30px}.mat-table .mat-column-avatar{width:50px}.mat-table .mat-column-avatar .avatar{border-radius:5px;border:1px solid rgba(var(--ion-color-secondary-rgb),.5)}.mat-table .mat-column-firstName,.mat-table .mat-column-lastName{min-width:80px}.mat-table .mat-column-email{min-width:120px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]}]}],"members":{"useSticky":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"filterExpansionPanel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":57,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/expansion","name":"MatExpansionPanel","line":57,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":73,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":60,"character":21},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":61,"character":22},{"__symbolic":"reference","name":"PlatformService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":63,"character":24},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":64,"character":25},{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"LocalSettingsService"},{"__symbolic":"reference","module":"@e-is/ngx-material-table","name":"ValidatorService","line":67,"character":32},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","name":"PersonService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":70,"character":18},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":71,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":72,"character":14},null]}],"ngOnInit":[{"__symbolic":"method"}],"applyFilterAndClosePanel":[{"__symbolic":"method"}],"resetFilter":[{"__symbolic":"method"}],"restoreFilterOrLoad":[{"__symbolic":"method"}],"clearControlValue":[{"__symbolic":"method"}],"markForCheck":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":25,"character":17}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":25,"character":29},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":25,"character":36}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":22,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":23,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":24,"character":34},{"__symbolic":"reference","name":"any"}]}],"appendNumpadToBody":[{"__symbolic":"method"}],"destroyNumpad":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/material/badge","name":"MatBadgeModule","line":10,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵd"}],"declarations":[{"__symbolic":"reference","name":"ɵd"}]}]}],"members":{}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":7,"character":1},"arguments":[{"selector":"[matBadgeIcon], [ionBadgeIcon]","inputs":["size: matBadgeSize","color: matBadgeColor","fill: matBadgeFill"]}]}],"members":{"matIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3},"arguments":["matBadgeIcon"]}]}],"ionIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3},"arguments":["ionBadgeIcon"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"function"},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"mat-badge-icon-test","template":"\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span matBadge matIcon=\"check\"\n matBadgeSize=\"small\"\n matBadgeColor=\"accent\"\n matBadgeOverlap=\"false\">Small badge</span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text matBadge matBadgeIcon=\"check\"\n matBadgeSize=\"medium\"\n matBadgeColor=\"tertiary\"\n matBadgeOverlap=\"false\"\n >Medium badge</ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label matBadge matBadgeIcon=\"close\" matBadgeSize=\"large\"\n matBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label matBadge matBadgeIcon=\"check\" matBadgeColor=\"success\"\n matBadgeOverlap=\"false\">Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label matBadge\n ionBadgeIcon=\"checkmark\"\n matBadgeColor=\"success\"\n matBadgeOverlap=\"false\">Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label matBadge\n ionBadgeIcon=\"checkmark-circle\"\n matBadgeColor=\"tertiary\"\n matBadgeFill=\"clear\"\n matBadgeOverlap=\"false\">Badge with clear icon\n </ion-label>\n </p>\n\n\n</ion-content>\n"}]}],"members":{}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"form-register","template":"<mat-horizontal-stepper linear #stepper=\"matHorizontalStepper\">\n\n <!-- Step 1: Username -->\n <mat-step [stepControl]=\"forms[0]\" *ngIf=\"forms[0].controls; let controls\">\n\n <form [formGroup]=\"forms[0]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n <ng-template matStepLabel>{{'REGISTER.STEP_EMAIL'|translate}}</ng-template>\n\n <!-- Email -->\n <mat-form-field>\n <input matInput\n [appAutofocus]=\"true\" [autofocusDelay]=\"500\" [placeholder]=\"'USER.EMAIL'|translate\"\n formControlName=\"email\" autocomplete=\"off\" required>\n <mat-error *ngIf=\"controls.email.hasError('required') && controls.email.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.email.hasError('email') && !controls.email.hasError('required') && controls.email.touched\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n <mat-error *ngIf=\"controls.email.hasError('availability') && controls.email.touched\" translate>REGISTER.ERROR.EMAIL_ALREADY_REGISTERED</mat-error>\n\n </mat-form-field>\n\n <!-- Confirm Email -->\n <mat-form-field>\n <input matInput autocomplete=\"off\" matFormFieldControl [placeholder]=\"'REGISTER.CONFIRM_EMAIL'|translate\" formControlName=\"confirmEmail\">\n <mat-error *ngIf=\"controls.confirmEmail.hasError('required') && controls.confirmEmail.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmEmail.hasError('equals') && controls.confirmEmail.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 2: Password -->\n <mat-step [stepControl]=\"forms[1]\" *ngIf=\"forms[1].controls; let controls\">\n\n <form [formGroup]=\"forms[1]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_PASSWORD'|translate}}</ng-template>\n\n <!-- Password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.PASSWORD'|translate\"\n formControlName=\"password\"\n autocomplete=\"section-red new-password\"\n [type]=\"showPwd ? 'text' : 'password'\"\n required>\n <button matSuffix mat-icon-button\n type=\"button\"\n (click)=\"showPwd = !showPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.password.hasError('required') && controls.password.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.password.hasError('minlength') && controls.password.touched\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 8} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Confirm password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'REGISTER.CONFIRM_PASSWORD'|translate\"\n formControlName=\"confirmPassword\"\n autocomplete=\"section-red new-password\"\n [type]=\"showConfirmPwd ? 'text' : 'password'\"\n required>\n <button mat-icon-button matSuffix\n (click)=\"showConfirmPwd = !showConfirmPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showConfirmPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('required') && controls.confirmPassword.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('equals') && controls.confirmPassword.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_PASSWORD' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 3: user details -->\n <mat-step [stepControl]=\"forms[2]\" *ngIf=\"forms[2].controls; let controls\">\n\n <form [formGroup]=\"forms[2]\" (ngSubmit)=\"doSubmit($event)\" class=\"form-container ion-padding\" (keyup.enter)=\"doSubmit()\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_USER_DETAILS'|translate}}</ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error && !sending\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- Last name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.LAST_NAME'|translate\" formControlName=\"lastName\" autocomplete=\"section-blue family-name\"\n required>\n <mat-error *ngIf=\"controls.lastName.hasError('required') && controls.lastName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.lastName.hasError('minlength') && controls.lastName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- First name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.FIRST_NAME'|translate\" formControlName=\"firstName\" autocomplete=\"section-blue given-name\"\n required>\n <mat-error *ngIf=\"controls.firstName.hasError('required') && controls.firstName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.firstName.hasError('minlength') && controls.firstName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Additional fields -->\n <app-form-field *ngFor=\"let field of additionalFields\"\n [definition]=\"field\"\n [formControlName]=\"field.key\"\n [required]=\"true\">\n </app-form-field>\n\n </form>\n </mat-step>\n</mat-horizontal-stepper>\n","styles":["form ion-toolbar.toolbar-buttons .toolbar-content{text-align:right}form ion-toolbar.toolbar-buttons .toolbar-background{border:0;background:inherit!important}"]}]}],"members":{"stepper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":44,"character":3},"arguments":["stepper",{"static":true}]}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":46,"character":3}}]}],"onSubmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":49,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":56,"character":5},"arguments":[{"__symbolic":"reference","name":"ENVIRONMENT"}]}],null],"parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":55,"character":24},null,{"__symbolic":"reference","name":"LocalSettingsService"}]}],"ngOnInit":[{"__symbolic":"method"}],"isEnd":[{"__symbolic":"method"}],"isBeginning":[{"__symbolic":"method"}],"slidePrev":[{"__symbolic":"method"}],"slideNext":[{"__symbolic":"method"}],"equalsValidator":[{"__symbolic":"method"}],"emailAvailability":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"disable":[{"__symbolic":"method"}],"enable":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppValidatorService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":14,"character":27},{"__symbolic":"reference","name":"AccountService"}]}],"getFormGroupConfig":[{"__symbolic":"method"}],"getValidators":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"modal-register","template":"<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button *ngIf=\"form.isBeginning()\" (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n <ion-button *ngIf=\"!form.isBeginning()\" (click)=\"form.slidePrev()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title translate>REGISTER.TITLE</ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"sending\"></ion-spinner>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\"\n visible-xs visible-sm visible-mobile>\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd() && !sending\" (click)=\"doSubmit()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <form-register (onSubmit)=\"doSubmit()\" (onCancel)=\"cancel()\" #form>\n </form-register>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <!-- buttons -->\n <ion-toolbar>\n\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button *ngIf=\"form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"form.slidePrev()\" [disabled]=\"sending\">\n <ion-icon slot=\"start\" name=\"arrow-back\"></ion-icon>\n <ion-label translate>COMMON.BTN_BACK</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\" fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd()\" (click)=\"doSubmit()\" fill=\"solid\" [disabled]=\"sending\" color=\"tertiary\">\n <span translate>COMMON.BTN_SEND</span>\n <ion-icon slot=\"end\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n"}]}],"members":{"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":["form",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AccountService"},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":16,"character":21}]}],"cancel":[{"__symbolic":"method"}],"doSubmit":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppValidatorService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":9,"character":17}]}],"getFormGroup":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵk":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"AppValidatorService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":12,"character":17},{"__symbolic":"reference","name":"NetworkService"}]}],"getFormGroup":[{"__symbolic":"method"}],"getPropertiesArray":[{"__symbolic":"method"}],"getPropertyFormGroup":[{"__symbolic":"method"}],"peerAlive":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-icon","template":"<ion-icon *ngIf=\"icon; else matIconTemplate\" slot=\"icon-only\"\n [color]=\"color\"\n [name]=\"icon\"\n></ion-icon>\n<ng-template #matIconTemplate>\n <mat-icon [svgIcon]=\"matSvgIcon\"\n [style.color]=\"'var(--ion-color-'+color+')'\">{{matIcon}}</mat-icon>\n</ng-template>\n\n"}]}],"members":{"icon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"matIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"matSvgIcon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"ref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}]}}},"origins":{"ENVIRONMENT":"./src/environments/environment.class","Environment":"./src/environments/environment.class","DATE_ISO_PATTERN":"./src/app/shared/constants","DEFAULT_PLACEHOLDER_CHAR":"./src/app/shared/constants","PUBKEY_REGEXP":"./src/app/shared/constants","SPACE_PLACEHOLDER_CHAR":"./src/app/shared/constants","KEYBOARD_HIDE_DELAY_MS":"./src/app/shared/constants","scrollFactory":"./src/app/shared/shared.module","SharedModule":"./src/app/shared/shared.module","ɵa":"./src/app/shared/shared-routing.module","SharedRoutingModule":"./src/app/shared/shared-routing.module","SharedMaterialModule":"./src/app/shared/material/material.module","SharedMatBooleanModule":"./src/app/shared/material/boolean/boolean.module","MatBooleanField":"./src/app/shared/material/boolean/material.boolean","SharedMatAutocompleteModule":"./src/app/shared/material/autocomplete/material.autocomplete.module","MatAutocompleteField":"./src/app/shared/material/autocomplete/material.autocomplete","MatAutocompleteFieldConfig":"./src/app/shared/material/autocomplete/material.autocomplete","MatAutocompleteConfigHolder":"./src/app/shared/material/autocomplete/material.autocomplete","MatAutocompleteFieldAddOptions":"./src/app/shared/material/autocomplete/material.autocomplete","MaterialChipsModule":"./src/app/shared/material/chips/chips.module","MatChipsField":"./src/app/shared/material/chips/material.chips","fadeInAnimation":"./src/app/shared/material/material.animations","fadeInOutAnimation":"./src/app/shared/material/material.animations","slideInOutAnimation":"./src/app/shared/material/material.animations","slideUpDownAnimation":"./src/app/shared/material/material.animations","MatPaginatorI18n":"./src/app/shared/material/paginator/material.paginator-i18n","MatStepperI18n":"./src/app/shared/material/stepper/material.stepper-i18n","SharedMatDateTimeModule":"./src/app/shared/material/datetime/datetime.module","MatDateShort":"./src/app/shared/material/datetime/material.dateshort","MatDateTime":"./src/app/shared/material/datetime/material.datetime","MatDate":"./src/app/shared/material/datetime/material.date","MatLatLongField":"./src/app/shared/material/latlong/material.latlong","SharedMatLatLongModule":"./src/app/shared/material/latlong/material.latlong.module","SharedMatDurationModule":"./src/app/shared/material/duration/duration.module","MatDuration":"./src/app/shared/material/duration/material.duration","SharedMatNumpadModule":"./src/app/shared/material/numpad/numpad.module","NumpadDirective":"./src/app/shared/material/numpad/numpad.directive","AppendToInputDirective":"./src/app/shared/material/numpad/numpad.append-to-input.directive","AnimationState":"./src/app/shared/material/numpad/numpad.container","MatNumpadContainerComponent":"./src/app/shared/material/numpad/numpad.container","MatNumpadContent":"./src/app/shared/material/numpad/numpad.content","MatNumpadComponent":"./src/app/shared/material/numpad/numpad.component","SharedMatSwipeModule":"./src/app/shared/material/swipe/swipe.module","MatSwipeField":"./src/app/shared/material/swipe/material.swipe","selectInputContent":"./src/app/shared/inputs","selectInputRange":"./src/app/shared/inputs","getCaretPosition":"./src/app/shared/inputs","moveInputCaretToSeparator":"./src/app/shared/inputs","filterNumberInput":"./src/app/shared/inputs","focusInput":"./src/app/shared/inputs","setTabIndex":"./src/app/shared/inputs","InputElement":"./src/app/shared/inputs","isInputElement":"./src/app/shared/inputs","asInputElement":"./src/app/shared/inputs","tabindexComparator":"./src/app/shared/inputs","CanGainFocusOptions":"./src/app/shared/inputs","GetFocusableInputOptions":"./src/app/shared/inputs","canHaveFocus":"./src/app/shared/inputs","getFocusableInputElements":"./src/app/shared/inputs","focusNextInput":"./src/app/shared/inputs","focusPreviousInput":"./src/app/shared/inputs","AppFormField":"./src/app/shared/form/field.component","AppLoadingSpinner":"./src/app/shared/form/loading-spinner","DisplayFn":"./src/app/shared/form/field.model","CompareWithFn":"./src/app/shared/form/field.model","FormFieldType":"./src/app/shared/form/field.model","FormFieldDefinition":"./src/app/shared/form/field.model","FormFieldDefinitionMap":"./src/app/shared/form/field.model","FormFieldValuesHolder":"./src/app/shared/form/field.model","ToolbarToken":"./src/app/shared/toolbar/toolbar","ToolbarComponent":"./src/app/shared/toolbar/toolbar","ModalToolbarComponent":"./src/app/shared/toolbar/modal-toolbar","ProgressInterceptor":"./src/app/shared/interceptors/progess.interceptor","ShowToastOptions":"./src/app/shared/toasts","Toasts":"./src/app/shared/toasts","AppHelpModalOptions":"./src/app/shared/help/help.modal","AppHelpModal":"./src/app/shared/help/help.modal","CanLeave":"./src/app/shared/guard/component-dirty.guard","ComponentDirtyGuard":"./src/app/shared/guard/component-dirty.guard","SharedDirectivesModule":"./src/app/shared/directives/directives.module","AutofocusDirective":"./src/app/shared/directives/autofocus.directive","SharedPipesModule":"./src/app/shared/pipes/pipes.module","DateFormatPipe":"./src/app/shared/pipes/date-format.pipe","DateFromNowPipe":"./src/app/shared/pipes/date-from-now.pipe","DateDiffDurationPipe":"./src/app/shared/pipes/date-diff-duration.pipe","LatLongFormatPipe":"./src/app/shared/pipes/latlong-format.pipe","LatitudeFormatPipe":"./src/app/shared/pipes/latlong-format.pipe","LongitudeFormatPipe":"./src/app/shared/pipes/latlong-format.pipe","HighlightPipe":"./src/app/shared/pipes/highlight.pipe","NumberFormatPipe":"./src/app/shared/pipes/number-format.pipe","PropertyGetPipe":"./src/app/shared/pipes/properties.pipe","DurationPipe":"./src/app/shared/pipes/duration.pipe","FileSizePipe":"./src/app/shared/pipes/file-size.pipe","MathAbsPipe":"./src/app/shared/pipes/math.pipes","EvenPipe":"./src/app/shared/pipes/math.pipes","OddPipe":"./src/app/shared/pipes/math.pipes","NotEmptyArrayPipe":"./src/app/shared/pipes/arrays.pipe","EmptyArrayPipe":"./src/app/shared/pipes/arrays.pipe","ArrayLengthPipe":"./src/app/shared/pipes/arrays.pipe","ArrayFirstPipe":"./src/app/shared/pipes/arrays.pipe","ArrayPluckPipe":"./src/app/shared/pipes/arrays.pipe","ArrayIncludesPipe":"./src/app/shared/pipes/arrays.pipe","ArrayFilterPipe":"./src/app/shared/pipes/arrays.pipe","MapGetPipe":"./src/app/shared/pipes/maps.pipe","MapKeysPipe":"./src/app/shared/pipes/maps.pipe","MapValuesPipe":"./src/app/shared/pipes/maps.pipe","IsNotNilOrBlankPipe":"./src/app/shared/pipes/string.pipes","IsNilOrBlankPipe":"./src/app/shared/pipes/string.pipes","ToStringPipe":"./src/app/shared/pipes/string.pipes","StrLengthPipe":"./src/app/shared/pipes/string.pipes","TranslateContextPipe":"./src/app/shared/pipes/translate-context.pipe","TranslatablePipe":"./src/app/shared/pipes/translate-context.pipe","NgInitDirective":"./src/app/shared/pipes/ng-init.pipe","FormErrorTranslatePipe":"./src/app/shared/pipes/form.pipes","AudioType":"./src/app/shared/audio/audio","Sound":"./src/app/shared/audio/audio","AudioProvider":"./src/app/shared/audio/audio","FileService":"./src/app/shared/file/file.service","IStartableService":"./src/app/shared/services/startable-service.class","StartableService":"./src/app/shared/services/startable-service.class","Page":"./src/app/shared/services/entity-service.class","FetchMoreFn":"./src/app/shared/services/entity-service.class","LoadResult":"./src/app/shared/services/entity-service.class","SuggestFn":"./src/app/shared/services/entity-service.class","SuggestService":"./src/app/shared/services/entity-service.class","FilterFn":"./src/app/shared/services/entity-service.class","FilterFnFactory":"./src/app/shared/services/entity-service.class","EntityServiceLoadOptions":"./src/app/shared/services/entity-service.class","IEntityService":"./src/app/shared/services/entity-service.class","EntitiesServiceWatchOptions":"./src/app/shared/services/entity-service.class","IEntitiesService":"./src/app/shared/services/entity-service.class","LoadResultByPageFn":"./src/app/shared/services/entity-service.class","IEntityFullService":"./src/app/shared/services/entity-service.class","mergeLoadResult":"./src/app/shared/services/entity-service.class","EntitiesService":"./src/app/shared/services/entity-service.class","InMemoryEntitiesServiceOptions":"./src/app/shared/services/memory-entity-service.class","InMemoryEntitiesService":"./src/app/shared/services/memory-entity-service.class","ProgressMode":"./src/app/shared/services/progress-bar.service","ProgressBarService":"./src/app/shared/services/progress-bar.service","TranslateContextService":"./src/app/shared/services/translate-context.service","CallableWithProgressionFn":"./src/app/shared/services/job.utils","CallableWithProgressionOptions":"./src/app/shared/services/job.utils","JobUtils":"./src/app/shared/services/job.utils","APP_FORM_ERROR_I18N_KEYS":"./src/app/shared/validator/form-error-adapter.class","IFormControlPathTranslator":"./src/app/shared/validator/form-error-adapter.class","FormErrorTranslatorOptions":"./src/app/shared/validator/form-error-adapter.class","FormErrorTranslator":"./src/app/shared/validator/form-error-adapter.class","KeyType":"./src/app/shared/types","KeyValueType":"./src/app/shared/types","KeysEnum":"./src/app/shared/types","ObjectMap":"./src/app/shared/types","ObjectMapEntry":"./src/app/shared/types","PropertiesMap":"./src/app/shared/types","Property":"./src/app/shared/types","PropertiesArray":"./src/app/shared/types","IconRef":"./src/app/shared/types","DATE_UNIX_TIMESTAMP":"./src/app/shared/dates","DATE_UNIX_MS_TIMESTAMP":"./src/app/shared/dates","DateUtils":"./src/app/shared/dates","toDateISOString":"./src/app/shared/dates","fromDateISOString":"./src/app/shared/dates","fromUnixTimestamp":"./src/app/shared/dates","fromUnixMsTimestamp":"./src/app/shared/dates","toDuration":"./src/app/shared/dates","isNil":"./src/app/shared/functions","isNilOrBlank":"./src/app/shared/functions","isNotNil":"./src/app/shared/functions","isNotNilOrBlank":"./src/app/shared/functions","isNotNilOrNaN":"./src/app/shared/functions","isNilOrNaN":"./src/app/shared/functions","isNotEmptyArray":"./src/app/shared/functions","firstArrayValue":"./src/app/shared/functions","isEmptyArray":"./src/app/shared/functions","isNotNilString":"./src/app/shared/functions","notNilOrDefault":"./src/app/shared/functions","arraySize":"./src/app/shared/functions","arrayGroupBy":"./src/app/shared/functions","arrayDistinct":"./src/app/shared/functions","nullIfUndefined":"./src/app/shared/functions","trimEmptyToNull":"./src/app/shared/functions","toBoolean":"./src/app/shared/functions","toNumber":"./src/app/shared/functions","toFloat":"./src/app/shared/functions","toInt":"./src/app/shared/functions","toNotNil":"./src/app/shared/functions","removeDuplicatesFromArray":"./src/app/shared/functions","startsWithUpperCase":"./src/app/shared/functions","matchUpperCase":"./src/app/shared/functions","noTrailingSlash":"./src/app/shared/functions","replaceAll":"./src/app/shared/functions","removeEnd":"./src/app/shared/functions","changeCaseToUnderscore":"./src/app/shared/functions","removeDiacritics":"./src/app/shared/functions","suggestFromArray":"./src/app/shared/functions","suggestFromStringArray":"./src/app/shared/functions","joinPropertiesPath":"./src/app/shared/functions","joinProperties":"./src/app/shared/functions","propertyPathComparator":"./src/app/shared/functions","propertyComparator":"./src/app/shared/functions","propertiesPathComparator":"./src/app/shared/functions","sort":"./src/app/shared/functions","isInt":"./src/app/shared/functions","isNumber":"./src/app/shared/functions","isNumberRange":"./src/app/shared/functions","getPropertyByPath":"./src/app/shared/functions","getProperty":"./src/app/shared/functions","getPropertyByPathAsString":"./src/app/shared/functions","sleep":"./src/app/shared/functions","round":"./src/app/shared/functions","equalsOrNil":"./src/app/shared/functions","removeAll":"./src/app/shared/functions","remove":"./src/app/shared/functions","capitalizeFirstLetter":"./src/app/shared/functions","uncapitalizeFirstLetter":"./src/app/shared/functions","splitByProperty":"./src/app/shared/functions","splitById":"./src/app/shared/functions","equals":"./src/app/shared/functions","Beans":"./src/app/shared/functions","filterNotNil":"./src/app/shared/observables","firstNotNil":"./src/app/shared/observables","filterTrue":"./src/app/shared/observables","filterFalse":"./src/app/shared/observables","firstTruePromise":"./src/app/shared/observables","firstFalsePromise":"./src/app/shared/observables","firstNotNilPromise":"./src/app/shared/observables","chainPromises":"./src/app/shared/observables","WaitForOptions":"./src/app/shared/observables","waitFor":"./src/app/shared/observables","PromiseEventPayload":"./src/app/shared/events","PromiseEvent":"./src/app/shared/events","createPromiseEventEmitter":"./src/app/shared/events","createPromiseEvent":"./src/app/shared/events","emitPromiseEvent":"./src/app/shared/events","CompletableEvent":"./src/app/shared/events","fromScrollEndEvent":"./src/app/shared/events","Alerts":"./src/app/shared/alerts","SharedHotkeysModule":"./src/app/shared/hotkeys/shared-hotkeys.module","Hotkeys":"./src/app/shared/hotkeys/hotkeys.service","HotkeysDialogComponent":"./src/app/shared/hotkeys/dialog/hotkeys-dialog.component","Color":"./src/app/shared/graph/graph-colors","ColorName":"./src/app/shared/graph/graph-colors","ColorScale":"./src/app/shared/graph/graph-colors","ColorScaleLegend":"./src/app/shared/graph/graph-colors","ColorScaleOptions":"./src/app/shared/graph/graph-colors","ColorGradientOptions":"./src/app/shared/graph/graph-colors","ColorScaleLegendItem":"./src/app/shared/graph/graph-colors","rgbToHex":"./src/app/shared/graph/colors.utils","rgbArrayToHex":"./src/app/shared/graph/colors.utils","hexToRgbArray":"./src/app/shared/graph/colors.utils","hexToRgb":"./src/app/shared/graph/colors.utils","mixHex":"./src/app/shared/graph/colors.utils","getColorShade":"./src/app/shared/graph/colors.utils","getColorTint":"./src/app/shared/graph/colors.utils","getColorContrast":"./src/app/shared/graph/colors.utils","HAMMER_TAP_TIME":"./src/app/shared/gesture/gesture-config","HAMMER_PRESS_TIME":"./src/app/shared/gesture/gesture-config","AppGestureConfig":"./src/app/shared/gesture/gesture-config","HammerSwipeAction":"./src/app/shared/gesture/hammer.utils","HammerSwipeEvent":"./src/app/shared/gesture/hammer.utils","HammerTapEvent":"./src/app/shared/gesture/hammer.utils","SharedValidators":"./src/app/shared/validator/validators","SharedFormGroupValidators":"./src/app/shared/validator/validators","SharedFormArrayValidators":"./src/app/shared/validator/validators","LatLongPattern":"./src/app/shared/material/latlong/latlong.utils","LAT_LONG_PATTERNS":"./src/app/shared/material/latlong/latlong.utils","LatLongFormatOptions":"./src/app/shared/material/latlong/latlong.utils","LatLongFormatFn":"./src/app/shared/material/latlong/latlong.utils","LAT_LONG_DEFAULT_MAX_DECIMALS":"./src/app/shared/material/latlong/latlong.utils","formatLatitude":"./src/app/shared/material/latlong/latlong.utils","formatLongitude":"./src/app/shared/material/latlong/latlong.utils","parseLatitudeOrLongitude":"./src/app/shared/material/latlong/latlong.utils","SharedTestingModule":"./src/app/shared/shared.testing.module","MaterialTestingModule":"./src/app/shared/material/testing/material.testing.module","TestingPage":"./src/app/shared/material/testing/material.testing.page","APP_TESTING_PAGES":"./src/app/shared/material/testing/material.testing.page","MaterialTestingPage":"./src/app/shared/material/testing/material.testing.page","AutocompleteTestPage":"./src/app/shared/material/autocomplete/testing/autocomplete.test","LatLongTestPage":"./src/app/shared/material/latlong/testing/latlong.test","SwipeTestPage":"./src/app/shared/material/swipe/testing/swipe.test","DateTimeTestPage":"./src/app/shared/material/datetime/testing/mat-date-time.test","ChipsTestPage":"./src/app/shared/material/chips/testing/chips.test","CoreModule":"./src/app/core/core.module","Account":"./src/app/core/services/model/account.model","accountToString":"./src/app/core/services/model/account.model","Software":"./src/app/core/services/model/config.model","Configuration":"./src/app/core/services/model/config.model","Department":"./src/app/core/services/model/department.model","departmentToString":"./src/app/core/services/model/department.model","departmentsToString":"./src/app/core/services/model/department.model","Cloneable":"./src/app/core/services/model/entity.model","entityToString":"./src/app/core/services/model/entity.model","EntityAsObjectOptions":"./src/app/core/services/model/entity.model","IEntity":"./src/app/core/services/model/entity.model","ITreeItemEntity":"./src/app/core/services/model/entity.model","Entity":"./src/app/core/services/model/entity.model","isInstanceOf":"./src/app/core/services/model/entity.model","EntityUtils":"./src/app/core/services/model/entity.model","IEntityFilter":"./src/app/core/services/model/filter.model","EntityFilter":"./src/app/core/services/model/filter.model","EntityFilterUtils":"./src/app/core/services/model/filter.model","SynchronizationHistory":"./src/app/core/services/model/history.model","HistoryPageReference":"./src/app/core/services/model/history.model","StatusIds":"./src/app/core/services/model/model.enum","Peer":"./src/app/core/services/model/peer.model","UserProfileLabel":"./src/app/core/services/model/person.model","PRIORITIZED_AUTHORITIES":"./src/app/core/services/model/person.model","Person":"./src/app/core/services/model/person.model","PersonUtils":"./src/app/core/services/model/person.model","IReferentialRef":"./src/app/core/services/model/referential.model","ReferentialRef":"./src/app/core/services/model/referential.model","BaseReferential":"./src/app/core/services/model/referential.model","Referential":"./src/app/core/services/model/referential.model","ReferentialUtils":"./src/app/core/services/model/referential.model","ReferentialAsObjectOptions":"./src/app/core/services/model/referential.model","referentialToString":"./src/app/core/services/model/referential.model","referentialsToString":"./src/app/core/services/model/referential.model","IStatus":"./src/app/core/services/model/referential.model","StatusList":"./src/app/core/services/model/referential.model","StatusById":"./src/app/core/services/model/referential.model","MINIFY_ENTITY_FOR_LOCAL_STORAGE":"./src/app/core/services/model/referential.model","MINIFY_ENTITY_FOR_POD":"./src/app/core/services/model/referential.model","UsageMode":"./src/app/core/services/model/settings.model","LocaleConfig":"./src/app/core/services/model/settings.model","APP_LOCALES":"./src/app/core/services/model/settings.model","OfflineFeature":"./src/app/core/services/model/settings.model","LocalSettings":"./src/app/core/services/model/settings.model","UserSettings":"./src/app/core/services/model/settings.model","AppGraphQLModule":"./src/app/core/graphql/graphql.module","WatchQueryOptions":"./src/app/core/graphql/graphql.service","MutateQueryOptions":"./src/app/core/graphql/graphql.service","APP_GRAPHQL_TYPE_POLICIES":"./src/app/core/graphql/graphql.service","GraphqlService":"./src/app/core/graphql/graphql.service","IsLoginAccountPipe":"./src/app/core/services/pipes/account.pipes","AccountToStringPipe":"./src/app/core/services/pipes/account.pipes","DepartmentToStringPipe":"./src/app/core/services/pipes/department-to-string.pipe","PersonToStringPipe":"./src/app/core/services/pipes/person-to-string.pipe","IsOnFieldModePipe":"./src/app/core/services/pipes/usage-mode.pipes","IsNotOnFieldModePipe":"./src/app/core/services/pipes/usage-mode.pipes","PlatformService":"./src/app/core/services/platform.service","ConnectionType":"./src/app/core/services/network.service","AuthTokenType":"./src/app/core/services/network.service","getConnectionType":"./src/app/core/services/network.service","NetworkEventType":"./src/app/core/services/network.service","NetworkService":"./src/app/core/services/network.service","Fragments":"./src/app/core/services/config.service","APP_CONFIG_OPTIONS":"./src/app/core/services/config.service","ConfigService":"./src/app/core/services/config.service","CORE_CONFIG_OPTIONS":"./src/app/core/services/config/core.config","SETTINGS_STORAGE_KEY":"./src/app/core/services/local-settings.service","SETTINGS_TRANSIENT_PROPERTIES":"./src/app/core/services/local-settings.service","APP_LOCAL_SETTINGS":"./src/app/core/services/local-settings.service","APP_LOCAL_SETTINGS_OPTIONS":"./src/app/core/services/local-settings.service","AddToPageHistoryOptions":"./src/app/core/services/local-settings.service","LocalSettingsService":"./src/app/core/services/local-settings.service","AccountDetails":"./src/app/core/services/account.service","AuthData":"./src/app/core/services/account.service","RegisterData":"./src/app/core/services/account.service","IsEmailExistsVariables":"./src/app/core/services/account.service","AccountService":"./src/app/core/services/account.service","CryptoSaltParams":"./src/app/core/services/crypto.service","KeyPair":"./src/app/core/services/crypto.service","CryptoService":"./src/app/core/services/crypto.service","AuthGuardService":"./src/app/core/services/auth-guard.service","Base58":"./src/app/core/services/base58","QueryVariables":"./src/app/core/services/base-graphql-service.class","MutateQueryWithCacheUpdateOptions":"./src/app/core/services/base-graphql-service.class","MutableWatchQueryOptions":"./src/app/core/services/base-graphql-service.class","MutableWatchQueryDescription":"./src/app/core/services/base-graphql-service.class","FindMutableWatchQueriesOptions":"./src/app/core/services/base-graphql-service.class","BaseGraphqlServiceOptions":"./src/app/core/services/base-graphql-service.class","BaseGraphqlService":"./src/app/core/services/base-graphql-service.class","MutableWatchQueriesUpdatePolicy":"./src/app/core/services/base-entity-service.class","BaseEntityGraphqlQueries":"./src/app/core/services/base-entity-service.class","BaseEntityGraphqlMutations":"./src/app/core/services/base-entity-service.class","BaseEntityGraphqlSubscriptions":"./src/app/core/services/base-entity-service.class","BaseEntityServiceOptions":"./src/app/core/services/base-entity-service.class","EntitySaveOptions":"./src/app/core/services/base-entity-service.class","BaseEntityService":"./src/app/core/services/base-entity-service.class","EntitiesStorageTypePolicies":"./src/app/core/services/storage/entities-storage.service","APP_LOCAL_STORAGE_TYPE_POLICIES":"./src/app/core/services/storage/entities-storage.service","EntitiesStorage":"./src/app/core/services/storage/entities-storage.service","ENTITIES_STORAGE_KEY_PREFIX":"./src/app/core/services/storage/entity-store.class","EntityStoreTypePolicyMode":"./src/app/core/services/storage/entity-store.class","EntityStoreTypePolicy":"./src/app/core/services/storage/entity-store.class","EntityStorageLoadOptions":"./src/app/core/services/storage/entity-store.class","EntityStore":"./src/app/core/services/storage/entity-store.class","AppValidatorService":"./src/app/core/services/validator/base.validator.class","IAppEditor":"./src/app/core/form/editor.class","AppTabEditorOptions":"./src/app/core/form/editor.class","AppEditor":"./src/app/core/form/editor.class","AppTabEditor":"./src/app/core/form/editor.class","AppEditorOptions":"./src/app/core/form/entity-editor.class","AppEntityEditor":"./src/app/core/form/entity-editor.class","EntityMetadataComponent":"./src/app/core/form/entity-metadata.component","AppForm":"./src/app/core/form/form.class","IAppFormGetter":"./src/app/core/form/form.utils","OnReady":"./src/app/core/form/form.utils","IAppForm":"./src/app/core/form/form.utils","AppNullForm":"./src/app/core/form/form.utils","AppFormProvider":"./src/app/core/form/form.utils","AppFormUtils":"./src/app/core/form/form.utils","copyEntity2Form":"./src/app/core/form/form.utils","getFormValueFromEntity":"./src/app/core/form/form.utils","adaptValueToControl":"./src/app/core/form/form.utils","logFormErrors":"./src/app/core/form/form.utils","FormErrors":"./src/app/core/form/form.utils","getFormErrors":"./src/app/core/form/form.utils","getControlFromPath":"./src/app/core/form/form.utils","disableControls":"./src/app/core/form/form.utils","addValueInArray":"./src/app/core/form/form.utils","resizeArray":"./src/app/core/form/form.utils","removeValueInArray":"./src/app/core/form/form.utils","clearValueInArray":"./src/app/core/form/form.utils","markAllAsTouched":"./src/app/core/form/form.utils","markFormGroupAsTouched":"./src/app/core/form/form.utils","markControlAsTouched":"./src/app/core/form/form.utils","updateValueAndValidity":"./src/app/core/form/form.utils","markAsUntouched":"./src/app/core/form/form.utils","waitWhilePending":"./src/app/core/form/form.utils","waitIdle":"./src/app/core/form/form.utils","isControlHasInput":"./src/app/core/form/form.utils","setCalculatedValue":"./src/app/core/form/form.utils","resetCalculatedValue":"./src/app/core/form/form.utils","FormArrayHelperOptions":"./src/app/core/form/form.utils","FormArrayHelper":"./src/app/core/form/form.utils","FormButtonsBarToken":"./src/app/core/form/form-buttons-bar.component","FormButtonsBarComponent":"./src/app/core/form/form-buttons-bar.component","ItemButton":"./src/app/core/form/list.form","AppListFormOptions":"./src/app/core/form/list.form","AppListForm":"./src/app/core/form/list.form","AppPropertiesForm":"./src/app/core/form/properties.form","SETTINGS_DISPLAY_COLUMNS":"./src/app/core/table/table.class","SETTINGS_SORTED_COLUMN":"./src/app/core/table/table.class","SETTINGS_FILTER":"./src/app/core/table/table.class","SETTINGS_PAGE_SIZE":"./src/app/core/table/table.class","DEFAULT_PAGE_SIZE":"./src/app/core/table/table.class","DEFAULT_PAGE_SIZE_OPTIONS":"./src/app/core/table/table.class","RESERVED_START_COLUMNS":"./src/app/core/table/table.class","RESERVED_END_COLUMNS":"./src/app/core/table/table.class","DEFAULT_REQUIRED_COLUMNS":"./src/app/core/table/table.class","CellValueChangeListener":"./src/app/core/table/table.class","IModalDetailOptions":"./src/app/core/table/table.class","SaveActionType":"./src/app/core/table/table.class","AppTable":"./src/app/core/table/table.class","AppTableUtils":"./src/app/core/table/table.utils","AppInMemoryTable":"./src/app/core/table/memory-table.class","AppTableDataServiceOptions":"./src/app/core/table/entities-table-datasource.class","AppTableDataSourceOptions":"./src/app/core/table/entities-table-datasource.class","EntitiesTableDataSource":"./src/app/core/table/entities-table-datasource.class","ColumnItem":"./src/app/core/table/table-select-columns.component","TableSelectColumnsComponent":"./src/app/core/table/table-select-columns.component","ActionsColumnComponent":"./src/app/core/table/actions-column.component","getRandomImage":"./src/app/core/home/home","APP_HOME_BUTTONS":"./src/app/core/home/home","HomePage":"./src/app/core/home/home","SettingsPage":"./src/app/core/settings/settings.page","AccountPage":"./src/app/core/account/account","AuthForm":"./src/app/core/auth/form/form-auth","AuthModal":"./src/app/core/auth/modal/modal-auth","RegisterConfirmPage":"./src/app/core/register/confirm/confirm","APP_ABOUT_DEVELOPERS":"./src/app/core/about/modal-about","APP_ABOUT_PARTNERS":"./src/app/core/about/modal-about","AboutModal":"./src/app/core/about/modal-about","SelectPeerModal":"./src/app/core/peer/select-peer.modal","InstallAppLink":"./src/app/core/install/install-upgrade-card.component","AppInstallUpgradeCard":"./src/app/core/install/install-upgrade-card.component","APP_MENU_ITEMS":"./src/app/core/menu/menu.component","MenuComponent":"./src/app/core/menu/menu.component","MenuItem":"./src/app/core/menu/menu.model","MenuItems":"./src/app/core/menu/menu.model","AppMenuModule":"./src/app/core/menu/menu.module","MenuService":"./src/app/core/menu/menu.service","EntityClass":"./src/app/core/services/model/entity.decorators","EntityClasses":"./src/app/core/services/model/entity.decorators","SocialModule":"./src/app/social/social.module","UserEventTypes":"./src/app/social/services/model/user-event.model","UserEvent":"./src/app/social/services/model/user-event.model","UserEventAction":"./src/app/social/services/model/user-event.model","UserEventFilter":"./src/app/social/services/user-event.service","UserEventWatchOptions":"./src/app/social/services/user-event.service","UserEventActionDefinition":"./src/app/social/services/user-event.service","UserEventService":"./src/app/social/services/user-event.service","UserEventDetail":"./src/app/social/list/user-events.table","UserEventIcon":"./src/app/social/list/user-events.table","UserEventsTable":"./src/app/social/list/user-events.table","AdminModule":"./src/app/admin/admin.module","AdminRoutingModule":"./src/app/admin/admin-routing.module","PersonFilter":"./src/app/admin/services/filter/person.filter","PersonValidatorService":"./src/app/admin/services/validator/person.validator","ErrorCodes":"./src/app/admin/services/errors","PersonFragments":"./src/app/admin/services/person.service","PersonService":"./src/app/admin/services/person.service","UsersPage":"./src/app/admin/users/list/users","ɵb":"./src/app/shared/material/numpad/numpad.dom-service","ɵc":"./src/app/shared/material/badge/badge-icon.module","ɵd":"./src/app/shared/material/badge/badge-icon.directive","ɵe":"./src/app/shared/focusable","ɵf":"./src/app/shared/material/badge/badge-icon.test","ɵg":"./src/app/core/register/form/form-register","ɵh":"./src/app/core/services/validator/account.validator","ɵi":"./src/app/core/register/modal/modal-register","ɵj":"./src/app/core/services/validator/user-settings.validator","ɵk":"./src/app/core/services/validator/local-settings.validator","ɵl":"./src/app/core/icon/icon.component"},"importAs":"@sumaris-net/ngx-components"}