@sumaris-net/ngx-components 1.9.0 → 1.9.3

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.
@@ -3,12 +3,8 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Injector
3
3
  import { UserEventFilter, UserEventService } from '../services/user-event.service';
4
4
  import { AccountService } from '../../core/services/account.service';
5
5
  import { UserEvent, UserEventTypes } from '../services/model/user-event.model';
6
- import { LocalSettingsService } from '../../core/services/local-settings.service';
7
6
  import { toBoolean } from '../../shared/functions';
8
7
  import { AppTable, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS } from '../../core/table/table.class';
9
- import { ActivatedRoute, Router } from '@angular/router';
10
- import { ModalController, Platform } from '@ionic/angular';
11
- import { Location } from '@angular/common';
12
8
  import { EntitiesTableDataSource } from '../../core/table/entities-table-datasource.class';
13
9
  import { EntitiesStorage } from '../../core/services/storage/entities-storage.service';
14
10
  import { ENVIRONMENT } from '../../../environments/environment.class';
@@ -41,7 +37,7 @@ const ICONS_MAP = {
41
37
  }*/
42
38
  export class UserEventsTable extends AppTable {
43
39
  constructor(injector, accountService, service, entities, cd, environment) {
44
- super(injector.get(ActivatedRoute), injector.get(Router), injector.get(Platform), injector.get(Location), injector.get(ModalController), injector.get(LocalSettingsService),
40
+ super(injector,
45
41
  // columns
46
42
  RESERVED_START_COLUMNS
47
43
  .concat([
@@ -50,8 +46,7 @@ export class UserEventsTable extends AppTable {
50
46
  'eventType',
51
47
  'message'
52
48
  ])
53
- .concat(RESERVED_END_COLUMNS), null, null, injector);
54
- this.injector = injector;
49
+ .concat(RESERVED_END_COLUMNS), null, null);
55
50
  this.accountService = accountService;
56
51
  this.service = service;
57
52
  this.entities = entities;
@@ -156,4 +151,4 @@ UserEventsTable.propDecorators = {
156
151
  defaultSortBy: [{ type: Input }],
157
152
  defaultSortDirection: [{ type: Input }]
158
153
  };
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudHMudGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9saXN0L3VzZXItZXZlbnRzLnRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBbUIsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUd2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUErQnRFLE1BQU0sU0FBUyxHQUFvQztJQUNqRCxVQUFVLEVBQUUsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFD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QU0sU0FBQyxXQUFXOzs7d0JBWnBCLEtBQUs7MEJBRUwsS0FBSzs0QkFDTCxLQUFLO21DQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVFbGVtZW50IH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7IFVzZXJFdmVudEZpbHRlciwgVXNlckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJFdmVudCwgVXNlckV2ZW50QWN0aW9uLCBVc2VyRXZlbnRUeXBlcyB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgTG9jYWxTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQXBwVGFibGUsIFJFU0VSVkVEX0VORF9DT0xVTU5TLCBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TIH0gZnJvbSAnLi4vLi4vY29yZS90YWJsZS90YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NvcmUvdGFibGUvZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcyc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBFbnRpdGllc1N0b3JhZ2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3N0b3JhZ2UvZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWRlZmluZWRDb2xvcnMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckV2ZW50RGV0YWlsPFQgZXh0ZW5kcyBJRW50aXR5PFQ+PiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuXG4gIGFjdGlvbj86IHN0cmluZyB8IGFueTtcbiAgYWN0aW9uVGl0bGU/OiBzdHJpbmc7XG4gIGFjdGlvbkNvbG9yPzogUHJlZGVmaW5lZENvbG9ycztcblxuICBpY29uPzogc3RyaW5nO1xuICBtYXRJY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIHRpbWU/OiBNb21lbnQ7XG5cbiAgLy8gQSBjb25maWcgcHJvcGVydHksIHRvIG92ZXJyaWRlIHRoZSB0aXRsZVxuICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nO1xuICB0aXRsZUFyZ3M/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuICAvLyBjb252ZXJzaW9uXG4gIGZyb21PYmplY3Q/OiAoc291cmNlOiBhbnkpID0+IFQ7XG4gIGNoaWxkcmVuRmllbGRzPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudEljb257XG4gIGljb24/OiBzdHJpbmc7XG4gIG1hdEljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogUHJlZGVmaW5lZENvbG9ycztcbn1cbmNvbnN0IElDT05TX01BUDoge1trZXk6IHN0cmluZ106IFVzZXJFdmVudEljb24gfSA9IHtcbiAgREVCVUdfREFUQToge21hdEljb246ICdidWdfcmVwb3J0J30sXG4gIElOQk9YX01FU1NBR0U6IHttYXRJY29uOiAnbWFpbCd9LFxufTtcblxuLy8gVE9ETzogcmVmYWN0b3Igd2l0aCBhIHJlZ2lzdHJhdGlvbiBkb25lIGJ5IGRhdGEgc2VydmljZTpcbi8vIC0gdXNlckV2ZW50U2VydmljZS5yZWdpc3RlckV2ZW50QWN0aW9uKHtfX3R5cGVuYW1lOiAnVHJpcFZPJywgLi4ufSlcbi8vIC0gdXNlckV2ZW50U2VydmljZS5nZXRBY3Rpb25zRm9yKF9fdHlwZW5hbWUpOiBVc2VyRXZlbnREZXRhaWxBY3Rpb25cbi8qY29uc3QgREVUQUlMU19NQVA6IHtba2V5OiBzdHJpbmddOiBVc2VyRXZlbnRBY3Rpb248Um9vdERhdGFFbnRpdHk8YW55Pj59ID0ge1xuICBcIlRyaXBWT1wiOiB7XG4gICAgaWNvbjogbnVsbCxcbiAgICBtYXRJY29uOiBcImNvbnRlbnRfY29weVwiLFxuICAgIGFjdGlvbjogJ2NvcHlUb0xvY2FsJyxcbiAgICBhY3Rpb25UaXRsZTogJ1NPQ0lBTC5VU0VSX0VWRU5ULkJUTl9DT1BZX1RPX0xPQ0FMJyxcbiAgICBhY3Rpb25Db2xvcjogJ3ByaW1hcnknLFxuICAgIGZyb21PYmplY3Q6IFRyaXAuZnJvbU9iamVjdCxcbiAgICBjaGlsZHJlbkZpZWxkczogWydvcGVyYXRpb24nLCAnbGFuZGluZyddXG4gIH0sXG4gIFwiT2JzZXJ2ZWRMb2NhdGlvblZPXCI6IHtcbiAgICBpY29uOiBudWxsLFxuICAgIG1hdEljb246IFwiY29udGVudF9jb3B5XCIsXG4gICAgYWN0aW9uOiAnY29weVRvTG9jYWwnLFxuICAgIGFjdGlvblRpdGxlOiAnU09DSUFMLlVTRVJfRVZFTlQuQlROX0NPUFlfVE9fTE9DQUwnLFxuICAgIGFjdGlvbkNvbG9yOiAncHJpbWFyeScsXG4gICAgZnJvbU9iamVjdDogT2JzZXJ2ZWRMb2NhdGlvbi5mcm9tT2JqZWN0LFxuICAgIGNoaWxkcmVuRmllbGRzOiBbJ2xhbmRpbmdzJ11cbiAgfVxufSovXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItZXZlbnRzLXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJ3VzZXItZXZlbnRzLnRhYmxlLnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZXZlbnRzLnRhYmxlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxuICB9KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudHNUYWJsZSBleHRlbmRzIEFwcFRhYmxlPFVzZXJFdmVudCwgVXNlckV2ZW50RmlsdGVyPlxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGF0ZVRpbWVQYXR0ZXJuOiBzdHJpbmc7XG4gIGNhbkVkaXQ6IGJvb2xlYW47XG4gIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgaXNBZG1pbjogYm9vbGVhbjtcblxuICBASW5wdXQoKSByZWNpcGllbnQ6IHN0cmluZztcblxuICBASW5wdXQoKSB3aXRoQ29udGVudDogYm9vbGVhbjtcbiAgQElucHV0KCkgZGVmYXVsdFNvcnRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0U29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNlcnZpY2U6IFVzZXJFdmVudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVudGl0aWVzOiBFbnRpdGllc1N0b3JhZ2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKSxcbiAgICAgIGluamVjdG9yLmdldChSb3V0ZXIpLFxuICAgICAgaW5qZWN0b3IuZ2V0KFBsYXRmb3JtKSxcbiAgICAgIGluamVjdG9yLmdldChMb2NhdGlvbiksXG4gICAgICBpbmplY3Rvci5nZXQoTW9kYWxDb250cm9sbGVyKSxcbiAgICAgIGluamVjdG9yLmdldChMb2NhbFNldHRpbmdzU2VydmljZSksXG4gICAgICAvLyBjb2x1bW5zXG4gICAgICBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TXG4gICAgICAgIC5jb25jYXQoW1xuICAgICAgICAgICdjcmVhdGlvbkRhdGUnLFxuICAgICAgICAgICdpY29uJyxcbiAgICAgICAgICAnZXZlbnRUeXBlJyxcbiAgICAgICAgICAnbWVzc2FnZSdcbiAgICAgICAgXSlcbiAgICAgICAgLmNvbmNhdChSRVNFUlZFRF9FTkRfQ09MVU1OUyksXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIGluamVjdG9yKTtcblxuICAgIHRoaXMuaTE4bkNvbHVtblByZWZpeCA9ICdTT0NJQUwuVVNFUl9FVkVOVC4nO1xuICAgIHRoaXMuYXV0b0xvYWQgPSBmYWxzZTsgLy8gdGhpcy5zdGFydCgpXG4gICAgdGhpcy5pbmxpbmVFZGl0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gJ2NyZWF0aW9uRGF0ZSc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9ICdkZXNjJztcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIExvYWQgZGF0ZS90aW1lIHBhdHRlcm5cbiAgICB0aGlzLmRhdGVUaW1lUGF0dGVybiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0NPTU1PTi5EQVRFX1RJTUVfUEFUVEVSTicpO1xuICAgIHRoaXMud2l0aENvbnRlbnQgPSB0b0Jvb2xlYW4odGhpcy53aXRoQ29udGVudCwgZmFsc2UpO1xuXG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudDtcbiAgICBjb25zdCBwdWJrZXkgPSBhY2NvdW50ICYmIGFjY291bnQucHVia2V5O1xuICAgIHRoaXMuaXNBZG1pbiA9IHRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpO1xuICAgIHRoaXMuY2FuRWRpdCA9IHRoaXMuaXNBZG1pbiB8fCBwdWJrZXkgPT09IHRoaXMucmVjaXBpZW50O1xuICAgIHRoaXMuY2FuRGVsZXRlID0gdGhpcy5jYW5FZGl0O1xuXG4gICAgdGhpcy5zZXREYXRhc291cmNlKG5ldyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZShVc2VyRXZlbnQsXG4gICAgICB0aGlzLnNlcnZpY2UsXG4gICAgICBudWxsLFxuICAgICAge1xuICAgICAgICBwcmVwZW5kTmV3RWxlbWVudHM6IGZhbHNlLFxuICAgICAgICBzdXBwcmVzc0Vycm9yczogdHJ1ZSxcbiAgICAgICAgZGF0YVNlcnZpY2VPcHRpb25zOiB7XG4gICAgICAgICAgd2l0aENvbnRlbnQ6IHRoaXMud2l0aENvbnRlbnRcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5maWx0ZXIgfHwgbmV3IFVzZXJFdmVudEZpbHRlcigpO1xuICAgIGZpbHRlci5yZWNpcGllbnQgPSB0aGlzLnJlY2lwaWVudDtcbiAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHtlbWl0RXZlbnQ6IHRydWV9KTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1t1c2VyLWV2ZW50XSBTdGFydGluZy4uLicpO1xuXG4gICAgLy8gV2FpdGluZyBhY2NvdW50IHRvIGJlIHJlYWR5XG4gICAgYXdhaXQgdGhpcy5hY2NvdW50U2VydmljZS5yZWFkeSgpO1xuXG4gICAgLy8gTG9hZCBkYXRhXG4gICAgdGhpcy5vblJlZnJlc2guZW1pdCgpO1xuICB9XG5cbiAgZ2V0SWNvbihzb3VyY2U6IFVzZXJFdmVudCk6IFVzZXJFdmVudEljb24ge1xuICAgIHJldHVybiBJQ09OU19NQVBbc291cmNlLmV2ZW50VHlwZV07XG4gIH1cblxuICBnZXREZXRhaWwoc291cmNlOiBVc2VyRXZlbnQpOiBQYXJ0aWFsPFVzZXJFdmVudERldGFpbDxJRW50aXR5PGFueT4+ICYge2FjdGlvbnM6IFVzZXJFdmVudEFjdGlvbjxhbnk+W119PiB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoc291cmNlLmNvbnRlbnQgJiYgc291cmNlLmV2ZW50VHlwZSA9PT0gVXNlckV2ZW50VHlwZXMuREVCVUdfREFUQSkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHNvdXJjZS5jb250ZW50LmNvbnRleHQ7XG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9fdHlwZW5hbWUpIHtcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuc2VydmljZS5nZXRBY3Rpb25zQnlUeXBlbmFtZShjb250ZXh0Ll9fdHlwZW5hbWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdGlvbnMsXG4gICAgICAgICAgdGl0bGU6IHNvdXJjZS5jb250ZW50LmVycm9yICYmIHNvdXJjZS5jb250ZW50LmVycm9yLm1lc3NhZ2UgfHwgc291cmNlLmNvbnRlbnQubWVzc2FnZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc291cmNlLmNvbnRlbnQuZXJyb3IgJiYgc291cmNlLmNvbnRlbnQuZXJyb3IuZGV0YWlscyB8fCB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmRlYnVnKCdUT0RPOiBpbXBsZW1lbnQgZ2V0RGV0YWlsKCkgZm9yIGV2ZW50OiAnLCBzb3VyY2UpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG5cbiAgYXN5bmMgZG9BY3Rpb24oYWN0aW9uOiBVc2VyRXZlbnRBY3Rpb248YW55Piwgcm93OiBUYWJsZUVsZW1lbnQ8VXNlckV2ZW50Pikge1xuXG4gICAgY29uc3QgZXZlbnQgPSByb3cuY3VycmVudERhdGE7XG4gICAgY29uc3QgY29udGV4dCA9IGV2ZW50LmNvbnRlbnQgJiYgZXZlbnQuY29udGVudC5jb250ZXh0O1xuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBpZiAoYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24uZXhlY3V0ZUFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHJlcyA9IGFjdGlvbi5leGVjdXRlQWN0aW9uKGV2ZW50LCBjb250ZXh0KTtcbiAgICAgICAgcmVzID0gKHJlcyBpbnN0YW5jZW9mIFByb21pc2UpID8gYXdhaXQgcmVzIDogcmVzO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFt1c2VyLWV2ZW50XSBGYWlsZWQgdG8gZXhlY3V0ZSBhY3Rpb24gJHthY3Rpb24ubmFtZX06ICR7ZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycn1gLCBlcnIpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7XG4gICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudHMudGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9saXN0L3VzZXItZXZlbnRzLnRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBbUIsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUl0RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFHdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBK0J0RSxNQUFNLFNBQVMsR0FBb0M7SUFDakQsVUFBVSxFQUFFLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBQztJQUNuQyxhQUFhLEVBQUUsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFDO0NBQ2pDLENBQUM7QUFFRiwyREFBMkQ7QUFDM0Qsc0VBQXNFO0FBQ3RFLHNFQUFzRTtBQUN0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFFBQW9DO0lBY3ZFLFlBQ0UsUUFBa0IsRUFDUixjQUE4QixFQUM5QixPQUF5QixF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QUFHLENBQUM7aUJBQ2xEO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLE1BQU0sQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzFHO3dCQUNPO29CQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDckI7YUFDRjtRQUNILENBQUM7S0FBQTs7O1lBbklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUVqQywyMUxBQXVDO2dCQUN2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDOUM7OztZQW5GcUUsUUFBUTtZQUd2RSxjQUFjO1lBREcsZ0JBQWdCO1lBWWpDLGVBQWU7WUFkVSxpQkFBaUI7NENBd0c5QyxNQUFNLFNBQUMsV0FBVzs7O3dCQVpwQixLQUFLOzBCQUVMLEtBQUs7NEJBQ0wsS0FBSzttQ0FDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlRWxlbWVudCB9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZSc7XG5pbXBvcnQgeyBVc2VyRXZlbnRGaWx0ZXIsIFVzZXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyRXZlbnQsIFVzZXJFdmVudEFjdGlvbiwgVXNlckV2ZW50VHlwZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IHRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEFwcFRhYmxlLCBSRVNFUlZFRF9FTkRfQ09MVU1OUywgUkVTRVJWRURfU1RBUlRfQ09MVU1OUyB9IGZyb20gJy4uLy4uL2NvcmUvdGFibGUvdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRW50aXRpZXNUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RhYmxlL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgRW50aXRpZXNTdG9yYWdlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9zdG9yYWdlL2VudGl0aWVzLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVkZWZpbmVkQ29sb3JzIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudERldGFpbDxUIGV4dGVuZHMgSUVudGl0eTxUPj4ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcblxuICBhY3Rpb24/OiBzdHJpbmcgfCBhbnk7XG4gIGFjdGlvblRpdGxlPzogc3RyaW5nO1xuICBhY3Rpb25Db2xvcj86IFByZWRlZmluZWRDb2xvcnM7XG5cbiAgaWNvbj86IHN0cmluZztcbiAgbWF0SWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICB0aW1lPzogTW9tZW50O1xuXG4gIC8vIEEgY29uZmlnIHByb3BlcnR5LCB0byBvdmVycmlkZSB0aGUgdGl0bGVcbiAgdGl0bGVQcm9wZXJ0eT86IHN0cmluZztcbiAgdGl0bGVBcmdzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cbiAgLy8gY29udmVyc2lvblxuICBmcm9tT2JqZWN0PzogKHNvdXJjZTogYW55KSA9PiBUO1xuICBjaGlsZHJlbkZpZWxkcz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyRXZlbnRJY29ue1xuICBpY29uPzogc3RyaW5nO1xuICBtYXRJY29uPzogc3RyaW5nO1xuICBjb2xvcj86IFByZWRlZmluZWRDb2xvcnM7XG59XG5jb25zdCBJQ09OU19NQVA6IHtba2V5OiBzdHJpbmddOiBVc2VyRXZlbnRJY29uIH0gPSB7XG4gIERFQlVHX0RBVEE6IHttYXRJY29uOiAnYnVnX3JlcG9ydCd9LFxuICBJTkJPWF9NRVNTQUdFOiB7bWF0SWNvbjogJ21haWwnfSxcbn07XG5cbi8vIFRPRE86IHJlZmFjdG9yIHdpdGggYSByZWdpc3RyYXRpb24gZG9uZSBieSBkYXRhIHNlcnZpY2U6XG4vLyAtIHVzZXJFdmVudFNlcnZpY2UucmVnaXN0ZXJFdmVudEFjdGlvbih7X190eXBlbmFtZTogJ1RyaXBWTycsIC4uLn0pXG4vLyAtIHVzZXJFdmVudFNlcnZpY2UuZ2V0QWN0aW9uc0ZvcihfX3R5cGVuYW1lKTogVXNlckV2ZW50RGV0YWlsQWN0aW9uXG4vKmNvbnN0IERFVEFJTFNfTUFQOiB7W2tleTogc3RyaW5nXTogVXNlckV2ZW50QWN0aW9uPFJvb3REYXRhRW50aXR5PGFueT4+fSA9IHtcbiAgXCJUcmlwVk9cIjoge1xuICAgIGljb246IG51bGwsXG4gICAgbWF0SWNvbjogXCJjb250ZW50X2NvcHlcIixcbiAgICBhY3Rpb246ICdjb3B5VG9Mb2NhbCcsXG4gICAgYWN0aW9uVGl0bGU6ICdTT0NJQUwuVVNFUl9FVkVOVC5CVE5fQ09QWV9UT19MT0NBTCcsXG4gICAgYWN0aW9uQ29sb3I6ICdwcmltYXJ5JyxcbiAgICBmcm9tT2JqZWN0OiBUcmlwLmZyb21PYmplY3QsXG4gICAgY2hpbGRyZW5GaWVsZHM6IFsnb3BlcmF0aW9uJywgJ2xhbmRpbmcnXVxuICB9LFxuICBcIk9ic2VydmVkTG9jYXRpb25WT1wiOiB7XG4gICAgaWNvbjogbnVsbCxcbiAgICBtYXRJY29uOiBcImNvbnRlbnRfY29weVwiLFxuICAgIGFjdGlvbjogJ2NvcHlUb0xvY2FsJyxcbiAgICBhY3Rpb25UaXRsZTogJ1NPQ0lBTC5VU0VSX0VWRU5ULkJUTl9DT1BZX1RPX0xPQ0FMJyxcbiAgICBhY3Rpb25Db2xvcjogJ3ByaW1hcnknLFxuICAgIGZyb21PYmplY3Q6IE9ic2VydmVkTG9jYXRpb24uZnJvbU9iamVjdCxcbiAgICBjaGlsZHJlbkZpZWxkczogWydsYW5kaW5ncyddXG4gIH1cbn0qL1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC11c2VyLWV2ZW50cy10YWJsZScsXG4gIHN0eWxlVXJsczogWyd1c2VyLWV2ZW50cy50YWJsZS5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWV2ZW50cy50YWJsZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgfSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRzVGFibGUgZXh0ZW5kcyBBcHBUYWJsZTxVc2VyRXZlbnQsIFVzZXJFdmVudEZpbHRlcj5cbiAgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGRhdGVUaW1lUGF0dGVybjogc3RyaW5nO1xuICBjYW5FZGl0OiBib29sZWFuO1xuICBjYW5EZWxldGU6IGJvb2xlYW47XG4gIGlzQWRtaW46IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcmVjaXBpZW50OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgd2l0aENvbnRlbnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlZmF1bHRTb3J0Qnk6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNlcnZpY2U6IFVzZXJFdmVudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVudGl0aWVzOiBFbnRpdGllc1N0b3JhZ2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsXG4gICAgICAvLyBjb2x1bW5zXG4gICAgICBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TXG4gICAgICAgIC5jb25jYXQoW1xuICAgICAgICAgICdjcmVhdGlvbkRhdGUnLFxuICAgICAgICAgICdpY29uJyxcbiAgICAgICAgICAnZXZlbnRUeXBlJyxcbiAgICAgICAgICAnbWVzc2FnZSdcbiAgICAgICAgXSlcbiAgICAgICAgLmNvbmNhdChSRVNFUlZFRF9FTkRfQ09MVU1OUyksXG4gICAgICBudWxsLFxuICAgICAgbnVsbCk7XG5cbiAgICB0aGlzLmkxOG5Db2x1bW5QcmVmaXggPSAnU09DSUFMLlVTRVJfRVZFTlQuJztcbiAgICB0aGlzLmF1dG9Mb2FkID0gZmFsc2U7IC8vIHRoaXMuc3RhcnQoKVxuICAgIHRoaXMuaW5saW5lRWRpdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuZGVmYXVsdFNvcnRCeSA9ICdjcmVhdGlvbkRhdGUnO1xuICAgIHRoaXMuZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBMb2FkIGRhdGUvdGltZSBwYXR0ZXJuXG4gICAgdGhpcy5kYXRlVGltZVBhdHRlcm4gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFURV9USU1FX1BBVFRFUk4nKTtcbiAgICB0aGlzLndpdGhDb250ZW50ID0gdG9Cb29sZWFuKHRoaXMud2l0aENvbnRlbnQsIGZhbHNlKTtcblxuICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQ7XG4gICAgY29uc3QgcHVia2V5ID0gYWNjb3VudCAmJiBhY2NvdW50LnB1YmtleTtcbiAgICB0aGlzLmlzQWRtaW4gPSB0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKTtcbiAgICB0aGlzLmNhbkVkaXQgPSB0aGlzLmlzQWRtaW4gfHwgcHVia2V5ID09PSB0aGlzLnJlY2lwaWVudDtcbiAgICB0aGlzLmNhbkRlbGV0ZSA9IHRoaXMuY2FuRWRpdDtcblxuICAgIHRoaXMuc2V0RGF0YXNvdXJjZShuZXcgRW50aXRpZXNUYWJsZURhdGFTb3VyY2UoVXNlckV2ZW50LFxuICAgICAgdGhpcy5zZXJ2aWNlLFxuICAgICAgbnVsbCxcbiAgICAgIHtcbiAgICAgICAgcHJlcGVuZE5ld0VsZW1lbnRzOiBmYWxzZSxcbiAgICAgICAgc3VwcHJlc3NFcnJvcnM6IHRydWUsXG4gICAgICAgIGRhdGFTZXJ2aWNlT3B0aW9uczoge1xuICAgICAgICAgIHdpdGhDb250ZW50OiB0aGlzLndpdGhDb250ZW50XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVyIHx8IG5ldyBVc2VyRXZlbnRGaWx0ZXIoKTtcbiAgICBmaWx0ZXIucmVjaXBpZW50ID0gdGhpcy5yZWNpcGllbnQ7XG4gICAgdGhpcy5zZXRGaWx0ZXIoZmlsdGVyLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbdXNlci1ldmVudF0gU3RhcnRpbmcuLi4nKTtcblxuICAgIC8vIFdhaXRpbmcgYWNjb3VudCB0byBiZSByZWFkeVxuICAgIGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2UucmVhZHkoKTtcblxuICAgIC8vIExvYWQgZGF0YVxuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoKTtcbiAgfVxuXG4gIGdldEljb24oc291cmNlOiBVc2VyRXZlbnQpOiBVc2VyRXZlbnRJY29uIHtcbiAgICByZXR1cm4gSUNPTlNfTUFQW3NvdXJjZS5ldmVudFR5cGVdO1xuICB9XG5cbiAgZ2V0RGV0YWlsKHNvdXJjZTogVXNlckV2ZW50KTogUGFydGlhbDxVc2VyRXZlbnREZXRhaWw8SUVudGl0eTxhbnk+PiAmIHthY3Rpb25zOiBVc2VyRXZlbnRBY3Rpb248YW55PltdfT4ge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgaWYgKHNvdXJjZS5jb250ZW50ICYmIHNvdXJjZS5ldmVudFR5cGUgPT09IFVzZXJFdmVudFR5cGVzLkRFQlVHX0RBVEEpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzb3VyY2UuY29udGVudC5jb250ZXh0O1xuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fX3R5cGVuYW1lKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLnNlcnZpY2UuZ2V0QWN0aW9uc0J5VHlwZW5hbWUoY29udGV4dC5fX3R5cGVuYW1lKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhY3Rpb25zLFxuICAgICAgICAgIHRpdGxlOiBzb3VyY2UuY29udGVudC5lcnJvciAmJiBzb3VyY2UuY29udGVudC5lcnJvci5tZXNzYWdlIHx8IHNvdXJjZS5jb250ZW50Lm1lc3NhZ2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHNvdXJjZS5jb250ZW50LmVycm9yICYmIHNvdXJjZS5jb250ZW50LmVycm9yLmRldGFpbHMgfHwgdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnVE9ETzogaW1wbGVtZW50IGdldERldGFpbCgpIGZvciBldmVudDogJywgc291cmNlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuXG4gIGFzeW5jIGRvQWN0aW9uKGFjdGlvbjogVXNlckV2ZW50QWN0aW9uPGFueT4sIHJvdzogVGFibGVFbGVtZW50PFVzZXJFdmVudD4pIHtcblxuICAgIGNvbnN0IGV2ZW50ID0gcm93LmN1cnJlbnREYXRhO1xuICAgIGNvbnN0IGNvbnRleHQgPSBldmVudC5jb250ZW50ICYmIGV2ZW50LmNvbnRlbnQuY29udGV4dDtcblxuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgaWYgKGFjdGlvbiAmJiB0eXBlb2YgYWN0aW9uLmV4ZWN1dGVBY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCByZXMgPSBhY3Rpb24uZXhlY3V0ZUFjdGlvbihldmVudCwgY29udGV4dCk7XG4gICAgICAgIHJlcyA9IChyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSA/IGF3YWl0IHJlcyA6IHJlcztcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLnNldEVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbdXNlci1ldmVudF0gRmFpbGVkIHRvIGV4ZWN1dGUgYWN0aW9uICR7YWN0aW9uLm5hbWV9OiAke2VyciAmJiBlcnIubWVzc2FnZSB8fCBlcnJ9YCwgZXJyKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkge1xuICAgICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -18139,7 +18139,7 @@ HomePage.decorators = [
18139
18139
  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\" [innerHTML]=\"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",
18140
18140
  changeDetection: ChangeDetectionStrategy.OnPush,
18141
18141
  animations: [fadeInAnimation, slideUpDownAnimation],
18142
- 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)}}"]
18142
+ 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 ion-card-content ion-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)}}"]
18143
18143
  },] }
18144
18144
  ];
18145
18145
  HomePage.ctorParameters = () => [
@@ -18226,7 +18226,7 @@ RegisterConfirmPage.decorators = [
18226
18226
  { type: Component, args: [{
18227
18227
  selector: 'page-register-confirm',
18228
18228
  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",
18229
- 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}}"]
18229
+ 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 ion-footer ion-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}}"]
18230
18230
  },] }
18231
18231
  ];
18232
18232
  RegisterConfirmPage.ctorParameters = () => [
@@ -21339,13 +21339,7 @@ class CellValueChangeListener {
21339
21339
  // @dynamic
21340
21340
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
21341
21341
  class AppTable {
21342
- constructor(route, router, platform, location, modalCtrl, settings, columns, _dataSource, _filter, injector) {
21343
- this.route = route;
21344
- this.router = router;
21345
- this.platform = platform;
21346
- this.location = location;
21347
- this.modalCtrl = modalCtrl;
21348
- this.settings = settings;
21342
+ constructor(injector, columns, _dataSource, _filter) {
21349
21343
  this.columns = columns;
21350
21344
  this._dataSource = _dataSource;
21351
21345
  this._filter = _filter;
@@ -21388,13 +21382,19 @@ class AppTable {
21388
21382
  this.onDirty = new EventEmitter();
21389
21383
  this.onError = new EventEmitter();
21390
21384
  this._paginator = null;
21391
- this.mobile = this.platform.is('mobile');
21392
- this.translate = injector === null || injector === void 0 ? void 0 : injector.get(TranslateService);
21393
- this.formErrorAdapter = injector === null || injector === void 0 ? void 0 : injector.get(FormErrorTranslator);
21394
- this.alertCtrl = injector === null || injector === void 0 ? void 0 : injector.get(AlertController);
21395
- this.toastController = injector === null || injector === void 0 ? void 0 : injector.get(ToastController);
21385
+ this.route = injector.get(ActivatedRoute);
21386
+ this.router = injector.get(Router);
21387
+ this.location = injector.get(Location);
21388
+ this.settings = injector.get(LocalSettingsService);
21389
+ this.translate = injector.get(TranslateService);
21390
+ this.modalCtrl = injector.get(ModalController);
21391
+ this.alertCtrl = injector.get(AlertController);
21392
+ this.toastController = injector.get(ToastController);
21393
+ this.formErrorAdapter = injector.get(FormErrorTranslator);
21394
+ this.mobile = this.settings.mobile;
21395
+ // Autocomplete fields
21396
21396
  this._autocompleteConfigHolder = new MatAutocompleteConfigHolder({
21397
- getUserAttributes: (a, b) => settings.getFieldDisplayAttributes(a, b)
21397
+ getUserAttributes: (a, b) => this.settings.getFieldDisplayAttributes(a, b)
21398
21398
  });
21399
21399
  this.autocompleteFields = this._autocompleteConfigHolder.fields;
21400
21400
  }
@@ -21935,7 +21935,7 @@ class AppTable {
21935
21935
  return true;
21936
21936
  }
21937
21937
  save(opts) {
21938
- var _a, _b;
21938
+ var _a, _b, _c, _d;
21939
21939
  return __awaiter(this, void 0, void 0, function* () {
21940
21940
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
21941
21941
  if (this.readOnly) {
@@ -21943,8 +21943,8 @@ class AppTable {
21943
21943
  }
21944
21944
  this.resetError();
21945
21945
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
21946
- this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
21947
- const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
21946
+ this.previouslyEditedRowId = opts.keepEditing && ((((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined) || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.id));
21947
+ const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && ((_c = this.editedRow) === null || _c === void 0 ? void 0 : _c.currentData) || ((_d = this.singleSelectedRow) === null || _d === void 0 ? void 0 : _d.currentData);
21948
21948
  if (!this.confirmEditCreate()) {
21949
21949
  throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21950
21950
  }
@@ -22556,9 +22556,12 @@ class AppTable {
22556
22556
  return (this.i18nColumnPrefix || '') + changeCaseToUnderscore(columnName).toUpperCase();
22557
22557
  }
22558
22558
  generateTableId() {
22559
- return this.location.path(true).replace(/[?].*$/g, '').replace(/\/[\d]+/g, '_id') + '_' + this.constructor.name;
22559
+ const id = this.location.path(true)
22560
+ .replace(/[?].*$/g, '')
22561
+ .replace(/\/[\d]+/g, '_id')
22562
+ + '_' + this.constructor.name;
22560
22563
  //if (this.debug) console.debug("[table] id = " + id);
22561
- //return id;
22564
+ return id;
22562
22565
  }
22563
22566
  addRowToTable(insertAt) {
22564
22567
  return __awaiter(this, void 0, void 0, function* () {
@@ -22825,16 +22828,10 @@ AppTable.decorators = [
22825
22828
  { type: Directive }
22826
22829
  ];
22827
22830
  AppTable.ctorParameters = () => [
22828
- { type: ActivatedRoute },
22829
- { type: Router },
22830
- { type: undefined },
22831
- { type: Location },
22832
- { type: ModalController },
22833
- { type: LocalSettingsService },
22831
+ { type: Injector },
22834
22832
  { type: Array },
22835
22833
  { type: EntitiesTableDataSource },
22836
- { type: undefined },
22837
- { type: Injector }
22834
+ { type: undefined }
22838
22835
  ];
22839
22836
  AppTable.propDecorators = {
22840
22837
  settingsId: [{ type: Input }],
@@ -23450,7 +23447,6 @@ class AppEntityEditor extends AppTabEditor {
23450
23447
  this.dataType = dataType;
23451
23448
  this.dataService = dataService;
23452
23449
  this.saving = false;
23453
- this.hasRemoteListener = false;
23454
23450
  this.$title = new Subject();
23455
23451
  this.onUpdateView = new EventEmitter();
23456
23452
  options = Object.assign({
@@ -23529,6 +23525,7 @@ class AppEntityEditor extends AppTabEditor {
23529
23525
  }
23530
23526
  ngOnDestroy() {
23531
23527
  super.ngOnDestroy();
23528
+ this.listenRemoteSubscription = null; // already unsubscribe in the super function
23532
23529
  this.$title.complete();
23533
23530
  this.$title.unsubscribe();
23534
23531
  this.onUpdateView.complete();
@@ -23607,11 +23604,10 @@ class AppEntityEditor extends AppTabEditor {
23607
23604
  }
23608
23605
  startListenRemoteChanges() {
23609
23606
  // Skip if disable, or already listening
23610
- if (this.hasRemoteListener || !this._enableListenChanges || this.isNewData)
23607
+ if (this.listenRemoteSubscription || !this._enableListenChanges || this.isNewData)
23611
23608
  return;
23612
23609
  // Listen for changes on server
23613
- this.hasRemoteListener = true;
23614
- this.registerSubscription(this.dataService.listenChanges(this.data.id)
23610
+ this.listenRemoteSubscription = this.dataService.listenChanges(this.data.id)
23615
23611
  .pipe(filter(isNotNil))
23616
23612
  .subscribe((data) => {
23617
23613
  if (data.updateDate && data.updateDate.isAfter(this.data.updateDate)) {
@@ -23625,8 +23621,16 @@ class AppEntityEditor extends AppTabEditor {
23625
23621
  console.debug(`[data-editor] Changes detected on server, at {${data.updateDate}}, but page is dirty: skip reloading.`);
23626
23622
  }
23627
23623
  }
23628
- })
23629
- .add(() => this.hasRemoteListener = false));
23624
+ });
23625
+ this.listenRemoteSubscription.add(() => this.listenRemoteSubscription = null);
23626
+ this.registerSubscription(this.listenRemoteSubscription);
23627
+ }
23628
+ stopListenRemoteChanges() {
23629
+ if (this.listenRemoteSubscription) {
23630
+ this.unregisterSubscription(this.listenRemoteSubscription);
23631
+ this.listenRemoteSubscription.unsubscribe();
23632
+ this.listenRemoteSubscription = null;
23633
+ }
23630
23634
  }
23631
23635
  updateView(data, opts) {
23632
23636
  return __awaiter(this, void 0, void 0, function* () {
@@ -23770,7 +23774,7 @@ class AppEntityEditor extends AppTabEditor {
23770
23774
  // Update the view (e.g metadata)
23771
23775
  yield this.updateView(updatedData, opts);
23772
23776
  // Subscribe to remote changes
23773
- if (!this.hasRemoteListener)
23777
+ if (!this.listenRemoteSubscription)
23774
23778
  this.startListenRemoteChanges();
23775
23779
  this.submitted = false;
23776
23780
  return true;
@@ -23925,6 +23929,7 @@ class AppEntityEditor extends AppTabEditor {
23925
23929
  }
23926
23930
  unload() {
23927
23931
  return __awaiter(this, void 0, void 0, function* () {
23932
+ this.stopListenRemoteChanges();
23928
23933
  this.form.reset();
23929
23934
  this.registerForms();
23930
23935
  this._dirty = false;
@@ -24067,8 +24072,7 @@ AppEntityEditor.ctorParameters = () => [
24067
24072
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
24068
24073
  class AppInMemoryTable extends AppTable {
24069
24074
  constructor(injector, columns, dataType, memoryDataService, validatorService, options, filter) {
24070
- super(injector.get(ActivatedRoute), injector.get(Router), injector.get(Platform), injector.get(Location), injector.get(ModalController), injector.get(LocalSettingsService), columns, new EntitiesTableDataSource(dataType, memoryDataService, validatorService, options), filter, injector);
24071
- this.injector = injector;
24075
+ super(injector, columns, new EntitiesTableDataSource(dataType, memoryDataService, validatorService, options), filter);
24072
24076
  this.columns = columns;
24073
24077
  this.dataType = dataType;
24074
24078
  this.memoryDataService = memoryDataService;
@@ -24558,7 +24562,7 @@ const ICONS_MAP = {
24558
24562
  }*/
24559
24563
  class UserEventsTable extends AppTable {
24560
24564
  constructor(injector, accountService, service, entities, cd, environment) {
24561
- super(injector.get(ActivatedRoute), injector.get(Router), injector.get(Platform), injector.get(Location), injector.get(ModalController), injector.get(LocalSettingsService),
24565
+ super(injector,
24562
24566
  // columns
24563
24567
  RESERVED_START_COLUMNS
24564
24568
  .concat([
@@ -24567,8 +24571,7 @@ class UserEventsTable extends AppTable {
24567
24571
  'eventType',
24568
24572
  'message'
24569
24573
  ])
24570
- .concat(RESERVED_END_COLUMNS), null, null, injector);
24571
- this.injector = injector;
24574
+ .concat(RESERVED_END_COLUMNS), null, null);
24572
24575
  this.accountService = accountService;
24573
24576
  this.service = service;
24574
24577
  this.entities = entities;
@@ -24942,8 +24945,8 @@ PersonValidatorService.ctorParameters = () => [
24942
24945
  ];
24943
24946
 
24944
24947
  class UsersPage extends AppTable {
24945
- constructor(route, router, platform, location, modalCtrl, accountService, settings, validatorService, configService, dataService, cd, formBuilder, injector, environment) {
24946
- super(route, router, platform, location, modalCtrl, settings, RESERVED_START_COLUMNS
24948
+ constructor(injector, accountService, validatorService, configService, dataService, cd, formBuilder, environment) {
24949
+ super(injector, RESERVED_START_COLUMNS
24947
24950
  .concat([
24948
24951
  'avatar',
24949
24952
  'lastName',
@@ -24962,14 +24965,8 @@ class UsersPage extends AppTable {
24962
24965
  dataServiceOptions: {
24963
24966
  saveOnlyDirtyRows: true
24964
24967
  }
24965
- }), null, injector);
24966
- this.route = route;
24967
- this.router = router;
24968
- this.platform = platform;
24969
- this.location = location;
24970
- this.modalCtrl = modalCtrl;
24968
+ }), null);
24971
24969
  this.accountService = accountService;
24972
- this.settings = settings;
24973
24970
  this.validatorService = validatorService;
24974
24971
  this.configService = configService;
24975
24972
  this.dataService = dataService;
@@ -25093,19 +25090,13 @@ UsersPage.decorators = [
25093
25090
  },] }
25094
25091
  ];
25095
25092
  UsersPage.ctorParameters = () => [
25096
- { type: ActivatedRoute },
25097
- { type: Router },
25098
- { type: PlatformService },
25099
- { type: Location },
25100
- { type: ModalController },
25093
+ { type: Injector },
25101
25094
  { type: AccountService },
25102
- { type: LocalSettingsService },
25103
25095
  { type: ValidatorService },
25104
25096
  { type: ConfigService },
25105
25097
  { type: PersonService },
25106
25098
  { type: ChangeDetectorRef },
25107
25099
  { type: FormBuilder },
25108
- { type: Injector },
25109
25100
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
25110
25101
  ];
25111
25102
  UsersPage.propDecorators = {