@sapphire-ion/framework 1.2.38 → 1.2.41

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.
Files changed (90) hide show
  1. package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +3 -3
  2. package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +3 -3
  3. package/esm2022/lib/components/carousel/carousel.component.mjs +3 -3
  4. package/esm2022/lib/components/carousel/carousel.module.mjs +4 -4
  5. package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +3 -3
  6. package/esm2022/lib/components/content-block/content-block.component.mjs +3 -3
  7. package/esm2022/lib/components/default/default-list/abstract-list.mjs +3 -3
  8. package/esm2022/lib/components/default/default-list/default-list.component.mjs +3 -3
  9. package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +3 -3
  10. package/esm2022/lib/components/default/default-list/list.mjs +3 -3
  11. package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +3 -3
  12. package/esm2022/lib/components/default/default-table/default-table.component.mjs +3 -3
  13. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +27 -11
  14. package/esm2022/lib/components/default/default-view/abstract-view.mjs +3 -3
  15. package/esm2022/lib/components/default/default-view/default-view.component.mjs +3 -3
  16. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +3 -3
  17. package/esm2022/lib/components/default/default-view/view.mjs +3 -3
  18. package/esm2022/lib/components/default/default.module.mjs +4 -4
  19. package/esm2022/lib/components/default-page/default.page.mjs +3 -3
  20. package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +3 -3
  21. package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +4 -4
  22. package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +3 -3
  23. package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +3 -3
  24. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +3 -3
  25. package/esm2022/lib/components/drawer/drawer.component.mjs +3 -3
  26. package/esm2022/lib/components/filter/filter.component.mjs +26 -10
  27. package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +3 -3
  28. package/esm2022/lib/components/image/image.component.mjs +3 -3
  29. package/esm2022/lib/components/info-popover/info-popover.component.mjs +3 -3
  30. package/esm2022/lib/components/inputs/custom-input.mjs +3 -3
  31. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +3 -3
  32. package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +7 -5
  33. package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +4 -0
  34. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +3 -3
  35. package/esm2022/lib/components/inputs/input-configuration.mjs +1 -1
  36. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +3 -3
  37. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +3 -3
  38. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +3 -3
  39. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +3 -3
  40. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +3 -3
  41. package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +3 -3
  42. package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +3 -3
  43. package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +3 -3
  44. package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +3 -3
  45. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +3 -3
  46. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +3 -3
  47. package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +3 -3
  48. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +3 -3
  49. package/esm2022/lib/components/inputs/inputs.module.mjs +4 -4
  50. package/esm2022/lib/components/loading/loading.component.mjs +3 -3
  51. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +3 -3
  52. package/esm2022/lib/components/login/login.component.mjs +3 -3
  53. package/esm2022/lib/components/main-content/main-content.component.mjs +3 -3
  54. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +3 -3
  55. package/esm2022/lib/components/popover/sion-popover.module.mjs +4 -4
  56. package/esm2022/lib/components/sion-card/sion-card.component.mjs +3 -3
  57. package/esm2022/lib/components/stepper/step/step.component.mjs +3 -3
  58. package/esm2022/lib/components/stepper/stepper.component.mjs +3 -3
  59. package/esm2022/lib/components/stepper/stepper.module.mjs +4 -4
  60. package/esm2022/lib/components/tabs/tab/tab.component.mjs +3 -3
  61. package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +3 -3
  62. package/esm2022/lib/components/tabs/tabs.module.mjs +4 -4
  63. package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +3 -3
  64. package/esm2022/lib/components/tooltip/tooltip.component.mjs +3 -3
  65. package/esm2022/lib/core.module.mjs +4 -4
  66. package/esm2022/lib/directives/ng-var.directive.mjs +3 -3
  67. package/esm2022/lib/guards/auth.guard.mjs +3 -3
  68. package/esm2022/lib/guards/error.interceptor.mjs +3 -3
  69. package/esm2022/lib/guards/token.interceptor.mjs +3 -3
  70. package/esm2022/lib/index.mjs +2 -1
  71. package/esm2022/lib/pipes/secure.pipe.mjs +3 -3
  72. package/esm2022/lib/services/auth.service.mjs +3 -3
  73. package/esm2022/lib/services/environment.service.mjs +3 -3
  74. package/esm2022/lib/services/generic.service.mjs +3 -3
  75. package/esm2022/lib/services/modal-focus-trap.service.mjs +3 -3
  76. package/esm2022/lib/services/popover-focus-trap.service.mjs +3 -3
  77. package/esm2022/lib/services/route/route.provider.service.mjs +3 -3
  78. package/esm2022/lib/services/usuario.service.mjs +3 -3
  79. package/esm2022/lib/services/utils.service.mjs +3 -3
  80. package/esm2022/lib/services/web/api-url-provider.service.mjs +3 -3
  81. package/esm2022/lib/services/web/http.ativo.service.mjs +3 -3
  82. package/esm2022/lib/services/web/http.service.mjs +3 -3
  83. package/esm2022/lib/services/web/storage.service.mjs +3 -3
  84. package/fesm2022/sapphire-ion-framework.mjs +281 -252
  85. package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
  86. package/lib/components/inputs/input-cep/input-cep.component.d.ts +4 -2
  87. package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +3 -0
  88. package/lib/components/inputs/input-configuration.d.ts +2 -1
  89. package/lib/index.d.ts +1 -0
  90. package/package.json +1 -1
@@ -14,13 +14,17 @@ import { StringProperty } from '../../../../classes/comparison/properties/string
14
14
  import { BoolProperty } from '../../../../classes/comparison/properties/bool-property';
15
15
  import { DateProperty } from '../../../../classes/comparison/properties/date-property';
16
16
  import { InputDateComponent } from '../../../inputs/input-date/input-date.component';
17
+ import { InputCpfCnpjConfiguration } from '../../../inputs/input-cpf-cnpj/input-cpf-cnpj.configuration';
18
+ import { InputCepConfiguration } from '../../../inputs/input-cep/input-cep.configuration';
17
19
  import * as i0 from "@angular/core";
18
20
  import * as i1 from "@ionic/angular";
19
- import * as i2 from "../../../inputs/input-date/input-date.component";
20
- import * as i3 from "../../../inputs/input-decimal/input-decimal.component";
21
- import * as i4 from "../../../inputs/input-select/input-select.component";
22
- import * as i5 from "../../../inputs/input-string/input-string.component";
23
- import * as i6 from "@angular/forms";
21
+ import * as i2 from "../../../inputs/input-cep/input-cep.component";
22
+ import * as i3 from "../../../inputs/input-cpf-cnpj/input-cpf-cnpj.component";
23
+ import * as i4 from "../../../inputs/input-date/input-date.component";
24
+ import * as i5 from "../../../inputs/input-decimal/input-decimal.component";
25
+ import * as i6 from "../../../inputs/input-select/input-select.component";
26
+ import * as i7 from "../../../inputs/input-string/input-string.component";
27
+ import * as i8 from "@angular/forms";
24
28
  export class ThFilterComponent {
25
29
  constructor() {
26
30
  this.guid = Utils.GenerateGUID();
@@ -60,6 +64,18 @@ export class ThFilterComponent {
60
64
  else if (this.field.type == InputType.Bool) {
61
65
  this.configuration = new InputBoolConfiguration();
62
66
  }
67
+ else if (this.field.type == InputType.Cpf) {
68
+ this.configuration = new InputCpfCnpjConfiguration("CPF");
69
+ }
70
+ else if (this.field.type == InputType.Cnpj) {
71
+ this.configuration = new InputCpfCnpjConfiguration("CNPJ");
72
+ }
73
+ else if (this.field.type == InputType.CpfCnpj) {
74
+ this.configuration = new InputCpfCnpjConfiguration("CPFCNPJ");
75
+ }
76
+ else if (this.field.type == InputType.Cep) {
77
+ this.configuration = new InputCepConfiguration();
78
+ }
63
79
  }
64
80
  if (this.configuration instanceof InputSelectConfiguration) {
65
81
  this.configuration = new InputSelectConfiguration(this.configuration.bindValue, this.configuration.bindLabel, true, true, this.configuration.loadFrom, true);
@@ -112,7 +128,7 @@ export class ThFilterComponent {
112
128
  this.changeEmitter.emit();
113
129
  return;
114
130
  }
115
- else if ([InputType.String, InputType.TextArea].includes(this.field.type)) {
131
+ else if ([InputType.String, InputType.TextArea, InputType.Cep, InputType.Cpf, InputType.Cnpj, InputType.CpfCnpj].includes(this.field.type)) {
116
132
  this.field.filter = [new StringProperty(this.field.index).IsContainedIn(this.model)];
117
133
  this.isFilterActive = true;
118
134
  this.changeEmitter.emit();
@@ -172,12 +188,12 @@ export class ThFilterComponent {
172
188
  console.log(this.lstInputDate.toArray());
173
189
  this.lstInputDate.forEach(i => i.Dismiss());
174
190
  }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
176
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, viewQueries: [{ propertyName: "lstInputDate", predicate: InputDateComponent, descendants: true }], ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover class=\"th-filter\" fill=\"solid\" #popover triggerAction=\"click\" (onWillDismiss)=\"WillDismiss()\">\r\n <ng-template>\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n</ion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonPopover, selector: "ion-popover" }, { kind: "component", type: i2.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i3.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i5.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
192
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, viewQueries: [{ propertyName: "lstInputDate", predicate: InputDateComponent, descendants: true }], ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover class=\"th-filter\" fill=\"solid\" #popover triggerAction=\"click\" (onWillDismiss)=\"WillDismiss()\">\r\n <ng-template>\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea', 'Cpf', 'Cnpj', 'CpfCnpj', 'Cep'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n @case(\"Cep\") {\r\n <input-cep (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cep>\r\n }\r\n @case ('Cpf') {\r\n <input-cpf (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf>\r\n }\r\n @case ('Cnpj') {\r\n <input-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cnpj>\r\n }\r\n @case ('CpfCnpj') {\r\n <input-cpf-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf-cnpj>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n</ion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonPopover, selector: "ion-popover" }, { kind: "component", type: i2.InputCepComponent, selector: "input-cep", inputs: ["configuration"] }, { kind: "component", type: i3.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i5.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i6.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i7.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
177
193
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThFilterComponent, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThFilterComponent, decorators: [{
179
195
  type: Component,
180
- args: [{ selector: 'th-filter', template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover class=\"th-filter\" fill=\"solid\" #popover triggerAction=\"click\" (onWillDismiss)=\"WillDismiss()\">\r\n <ng-template>\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n</ion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"] }]
196
+ args: [{ selector: 'th-filter', template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover class=\"th-filter\" fill=\"solid\" #popover triggerAction=\"click\" (onWillDismiss)=\"WillDismiss()\">\r\n <ng-template>\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea', 'Cpf', 'Cnpj', 'CpfCnpj', 'Cep'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n @case(\"Cep\") {\r\n <input-cep (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cep>\r\n }\r\n @case ('Cpf') {\r\n <input-cpf (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf>\r\n }\r\n @case ('Cnpj') {\r\n <input-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cnpj>\r\n }\r\n @case ('CpfCnpj') {\r\n <input-cpf-cnpj (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-cpf-cnpj>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n</ion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"] }]
181
197
  }], ctorParameters: () => [], propDecorators: { field: [{
182
198
  type: Input
183
199
  }], changeEmitter: [{
@@ -187,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
187
203
  type: ViewChildren,
188
204
  args: [InputDateComponent]
189
205
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdGFibGUvdGgtZmlsdGVyL3RoLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL3RoLWZpbHRlci90aC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM1SixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0Ys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WSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQXZKVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixvSkFtSmQsa0JBQWtCLGdEQy9LbEMsZ3RIQXlEQTs7NEZEN0JhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxXQUFXO3dEQU1aLEtBQUs7c0JBQWIsS0FBSztnQkFnRVksYUFBYTtzQkFBOUIsTUFBTTt1QkFBQyxRQUFRO2dCQWlGa0IsWUFBWTtzQkFBN0MsWUFBWTt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgdmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9pbnB1dHMvdGFibGUtZmllbGQnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uLCBJbnB1dEN1cnJlbmN5Q29uZmlndXJhdGlvbiwgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LXN0cmluZy9pbnB1dC1zdHJpbmcuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1zZWxlY3QvaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dERhdGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0Qm9vbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtYm9vbC9pbnB1dC1ib29sLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtY29uZmlndXJhdGlvbic7XHJcblxyXG5pbXBvcnQgeyBJbXBsaWNpdFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvaW1wbGljaXQtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBEZWNpbWFsUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9kZWNpbWFsLXByb3BlcnR5JztcclxuaW1wb3J0IHsgU3RyaW5nUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9zdHJpbmctcHJvcGVydHknO1xyXG5pbXBvcnQgeyBCb29sUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9ib29sLXByb3BlcnR5JztcclxuaW1wb3J0IHsgRGF0ZVByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvZGF0ZS1wcm9wZXJ0eSc7XHJcblxyXG5pbXBvcnQgeyBDb21wYXJpc29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL2NvbXBhcmlzb24nO1xyXG5pbXBvcnQgeyBJbnB1dERhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RoLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RoLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGgtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkIDogVGFibGVGaWVsZCBcclxuXHJcbiAgZ3VpZDogc3RyaW5nID0gVXRpbHMuR2VuZXJhdGVHVUlEKCk7XHJcbiAgY29uZmlndXJhdGlvbjogSW5wdXRDb25maWd1cmF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZmllbGQuY29uZmlndXJhdGlvbjtcclxuICAgIFxyXG4gICAgaWYoIXRoaXMuY29uZmlndXJhdGlvbil7XHJcbiAgICAgIGlmKFtJbnB1dFR5cGUuRGF0ZSwgSW5wdXRUeXBlLkRhdGVUaW1lLCBJbnB1dFR5cGUuVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKCkgfSBlbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuRmlsZSAgICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRGaWxlQ29uZmlndXJhdGlvbigpICAgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLk51bWJlciAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5EZWNpbWFsICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKCkgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQ3VycmVuY3kpeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKSB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLlN0cmluZyAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3QgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oKSAgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuVGV4dEFyZWEpeyBcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uKCk7IFxyXG4gICAgICB9ZWxzZSBcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5Cb29sICAgICl7IFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEJvb2xDb25maWd1cmF0aW9uKCk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uIGluc3RhbmNlb2YgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbihcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmluZFZhbHVlLFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iaW5kTGFiZWwsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICApO1xyXG4gICAgICAodGhpcy5jb25maWd1cmF0aW9uIGFzIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbikucG9wb3ZlckNvbmZpZ3VyYXRpb24uZmxpcCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbiBpbnN0YW5jZW9mIElucHV0RGF0ZUNvbmZpZ3VyYXRpb24pe1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREYXRlQ29uZmlndXJhdGlvbih0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkJvb2wpe1xyXG4gICAgICBpZih0aGlzLmZpZWxkLmluZGV4ID09IFwiYXRpdm9cIil7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigndmFsdWUnLCAnbGFiZWwnLCB0cnVlLCB0cnVlLCBbXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU29tZW50ZSBBdGl2b3MnICAgICwgdmFsdWU6IHRydWUgIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU29tZW50ZSBOw6NvIEF0aXZvcycsIHZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigndmFsdWUnLCAnbGFiZWwnLCB0cnVlLCBmYWxzZSwgW1xyXG4gICAgICAgICAgeyBsYWJlbDogJ1NpbScsIHZhbHVlOiB0cnVlICB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ07Do28nLCB2YWx1ZTogZmFsc2UgfSxcclxuICAgICAgICBdKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBtb2RlbDogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgbW9kZWxNaW5pbXVtOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBtb2RlbE1heGltdW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoJ2NoYW5nZScpIGNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQ2hhbmdlKCk6IHZvaWR7XHJcbiAgICBpZigoKHR5cGVvZih0aGlzLm1vZGVsKSA9PSAnc3RyaW5nJyAmJiAhdGhpcy5tb2RlbCkgfHwgXHJcbiAgICAgICAgIHRoaXMubW9kZWwgPT0gbnVsbCB8fCBcclxuICAgICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgdGhpcy5tb2RlbC5sZW5ndGggPT0gMCkpICYmIFxyXG4gICAgICAhdGhpcy5tb2RlbE1pbmltdW0gJiYgIXRoaXMubW9kZWxNYXhpbXVtKVxyXG4gICAge1xyXG4gICAgICB0aGlzLlNldEluYWN0aXZlKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZihbSW5wdXRUeXBlLkN1cnJlbmN5LCBJbnB1dFR5cGUuRGVjaW1hbCwgSW5wdXRUeXBlLk51bWJlcl0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIHZhciBDb21wYXJpc29uOiBDb21wYXJpc29uW10gPSBbXTtcclxuICAgICAgaWYodGhpcy5tb2RlbE1pbmltdW0pe1xyXG4gICAgICAgIHZhciBCaWdnZXIgID0gbmV3IERlY2ltYWxQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyXTtcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLm1vZGVsTWF4aW11bSl7XHJcbiAgICAgICAgdmFyIFNtYWxsZXIgPSBuZXcgRGVjaW1hbFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLkxlc3NUaGFuT3JFcXVhbCh0aGlzLm1vZGVsTWF4aW11bSk7XHJcbiAgICAgICAgaWYoQ29tcGFyaXNvbi5sZW5ndGgpeyBDb21wYXJpc29uLnB1c2goU21hbGxlcik7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJdOyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyID0gQ29tcGFyaXNvbjtcclxuICAgICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLlN0cmluZywgSW5wdXRUeXBlLlRleHRBcmVhXS5pbmNsdWRlcyh0aGlzLmZpZWxkLnR5cGUpKXtcclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgICA9IFtuZXcgU3RyaW5nUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuSXNDb250YWluZWRJbih0aGlzLm1vZGVsKV07XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3Qpe1xyXG4gICAgICB0aGlzLmZpZWxkLmZpbHRlciAgID0gW25ldyBJbXBsaWNpdFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLklzQ29udGFpbmVkSW4odGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyICAgPSBbbmV3IEJvb2xQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5FcXVhbHModGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLkRhdGUsIElucHV0VHlwZS5EYXRlVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNaW5pbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWluaW11bSA9IHRoaXMubW9kZWxNaW5pbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNYXhpbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWF4aW11bSA9IHRoaXMubW9kZWxNYXhpbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgdmFyIENvbXBhcmlzb246IENvbXBhcmlzb25bXSA9IFtdO1xyXG4gICAgICBpZih0aGlzLm1vZGVsTWluaW11bSl7XHJcbiAgICAgICAgdmFyIEJpZ2dlckRhdGUgID0gbmV3IERhdGVQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyRGF0ZV07XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb2RlbE1heGltdW0pe1xyXG4gICAgICAgIHZhciBTbWFsbGVyRGF0ZSA9IG5ldyBEYXRlUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuTGVzc1RoYW5PckVxdWFsKHRoaXMubW9kZWxNYXhpbXVtKTtcclxuICAgICAgICBpZihDb21wYXJpc29uLmxlbmd0aCl7IENvbXBhcmlzb24ucHVzaChTbWFsbGVyRGF0ZSk7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJEYXRlXSAgOyB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgPSBDb21wYXJpc29uO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBTZXRJbmFjdGl2ZSgpOiB2b2lke1xyXG4gICAgdGhpcy5maWVsZC5maWx0ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oSW5wdXREYXRlQ29tcG9uZW50KSBsc3RJbnB1dERhdGU6IFF1ZXJ5TGlzdDxJbnB1dERhdGVDb21wb25lbnQ+O1xyXG4gIFdpbGxEaXNtaXNzKCk6IHZvaWR7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmxzdElucHV0RGF0ZS50b0FycmF5KCkpO1xyXG4gICAgdGhpcy5sc3RJbnB1dERhdGUuZm9yRWFjaChpID0+IGkuRGlzbWlzcygpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjYW5jaG9yIGNsYXNzPVwiaC01IGFzcGVjdC1zcXVhcmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICA8aW9uLWljb24gbmFtZT1cImZpbHRlci1jaXJjbGVcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudClcIiBjbGFzcz1cInRleHQteGwgYWxpZ24tc3ViIHNpemUtZnVsbFwiIFtjb2xvcl09XCJpc0ZpbHRlckFjdGl2ZSA/ICdzZWNvbmRhcnknIDogJ21lZGl1bScgXCI+PC9pb24taWNvbj5cclxuPC9kaXY+XHJcblxyXG48aW9uLXBvcG92ZXIgY2xhc3M9XCJ0aC1maWx0ZXJcIiBmaWxsPVwic29saWRcIiAjcG9wb3ZlciB0cmlnZ2VyQWN0aW9uPVwiY2xpY2tcIiAob25XaWxsRGlzbWlzcyk9XCJXaWxsRGlzbWlzcygpXCI+XHJcbiAgPG5nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInctNzIgZmxleCBmbGV4LWNvbCBnYXAtMiBwLTJcIiA+XHJcbiAgICAgIEBpZighWydTZWxlY3QnLCAnQm9vbCcsICdTdHJpbmcnLCAnVGV4dEFyZWEnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSl7XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPiAgRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fSA8L2lvbi1sYWJlbD5cclxuICAgICAgfVxyXG4gICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgICAgQGNhc2UgKCdTdHJpbmcnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtc3RyaW5nIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIChibHVyKT1cIkNoYW5nZSgpXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnTnVtYmVyJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LW51bWJlciAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIlZhbG9yIE3DrW5pbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1udW1iZXIgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdEZWNpbWFsJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kZWNpbWFsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnQ3VycmVuY3knKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtY3VycmVuY3kgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3VycmVuY3k+XHJcbiAgICAgICAgICAgIDxpbnB1dC1jdXJyZW5jeSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnU2VsZWN0Jykge1xyXG4gICAgICAgICAgPGlucHV0LXNlbGVjdCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ1RleHRBcmVhJykge1xyXG4gICAgICAgICAgPGlucHV0LXN0cmluZyAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnQm9vbCcpIHtcclxuICAgICAgICAgIDxpbnB1dC1zZWxlY3QgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIHBsYWNlaG9sZGVyPVwiXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RhdGUnKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJEYXRhIE3DrW5pbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGF0ZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIkRhdGEgTWF4aW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RhdGVUaW1lJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIkRhdGEgTcOtbmltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIkRhdGEgTWF4aW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZS10aW1lPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2lvbi1wb3BvdmVyPlxyXG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdGFibGUvdGgtZmlsdGVyL3RoLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL3RoLWZpbHRlci90aC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM1SixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0Ys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TDdCLFNBQVM7K0JBQ0UsV0FBVzt3REFNWixLQUFLO3NCQUFiLEtBQUs7Z0JBZ0VZLGFBQWE7c0JBQTlCLE1BQU07dUJBQUMsUUFBUTtnQkFpRmtCLFlBQVk7c0JBQTdDLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4sIHZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVGFibGVGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LXR5cGUnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiwgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24sIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1kZWNpbWFsL2lucHV0LWRlY2ltYWwuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1zdHJpbmcvaW5wdXQtc3RyaW5nLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtc2VsZWN0L2lucHV0LnNlbGVjdC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXREYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1kYXRlL2lucHV0LWRhdGUuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0RmlsZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dEJvb2xDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWJvb2wvaW5wdXQtYm9vbC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWNvbmZpZ3VyYXRpb24nO1xyXG5cclxuaW1wb3J0IHsgSW1wbGljaXRQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2ltcGxpY2l0LXByb3BlcnR5JztcclxuaW1wb3J0IHsgRGVjaW1hbFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvZGVjaW1hbC1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFN0cmluZ1Byb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvc3RyaW5nLXByb3BlcnR5JztcclxuaW1wb3J0IHsgQm9vbFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvYm9vbC1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IERhdGVQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2RhdGUtcHJvcGVydHknO1xyXG5cclxuaW1wb3J0IHsgQ29tcGFyaXNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9jb21wYXJpc29uJztcclxuaW1wb3J0IHsgSW5wdXREYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dENwZkNucGpDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWNwZi1jbnBqL2lucHV0LWNwZi1jbnBqLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dENlcENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtY2VwL2lucHV0LWNlcC5jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGgtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGgtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRoRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZmllbGQgOiBUYWJsZUZpZWxkIFxyXG5cclxuICBndWlkOiBzdHJpbmcgPSBVdGlscy5HZW5lcmF0ZUdVSUQoKTtcclxuICBjb25maWd1cmF0aW9uOiBJbnB1dENvbmZpZ3VyYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5maWVsZC5jb25maWd1cmF0aW9uO1xyXG4gICAgXHJcbiAgICBpZighdGhpcy5jb25maWd1cmF0aW9uKXtcclxuICAgICAgaWYoW0lucHV0VHlwZS5EYXRlLCBJbnB1dFR5cGUuRGF0ZVRpbWUsIElucHV0VHlwZS5UaW1lXS5pbmNsdWRlcyh0aGlzLmZpZWxkLnR5cGUpKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24oKSB9IGVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5GaWxlICAgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEZpbGVDb25maWd1cmF0aW9uKCkgICAgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuTnVtYmVyICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uKCkgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRlY2ltYWwgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24oKSAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5DdXJyZW5jeSl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEN1cnJlbmN5Q29uZmlndXJhdGlvbigpIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuU3RyaW5nICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uKCkgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLlNlbGVjdCAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5UZXh0QXJlYSl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24oKTsgIH1lbHNlIFxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkJvb2wgICAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Qm9vbENvbmZpZ3VyYXRpb24oKTsgICAgfSBlbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQ3BmICAgICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbihcIkNQRlwiKTsgfSAgZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkNucGogICAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24oXCJDTlBKXCIpOyB9ICBlbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQ3BmQ25waiApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDcGZDbnBqQ29uZmlndXJhdGlvbihcIkNQRkNOUEpcIik7IH0gZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkNlcCAgICAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Q2VwQ29uZmlndXJhdGlvbigpOyAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbiBpbnN0YW5jZW9mIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbil7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmJpbmRWYWx1ZSxcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmluZExhYmVsLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb20sXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgKTtcclxuICAgICAgKHRoaXMuY29uZmlndXJhdGlvbiBhcyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pLnBvcG92ZXJDb25maWd1cmF0aW9uLmZsaXAgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24gaW5zdGFuY2VvZiBJbnB1dERhdGVDb25maWd1cmF0aW9uKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24odHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5Cb29sKXtcclxuICAgICAgaWYodGhpcy5maWVsZC5pbmRleCA9PSBcImF0aXZvXCIpe1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oJ3ZhbHVlJywgJ2xhYmVsJywgdHJ1ZSwgdHJ1ZSwgW1xyXG4gICAgICAgICAgeyBsYWJlbDogJ1NvbWVudGUgQXRpdm9zJyAgICAsIHZhbHVlOiB0cnVlICB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ1NvbWVudGUgTsOjbyBBdGl2b3MnLCB2YWx1ZTogZmFsc2UgfSxcclxuICAgICAgICBdKTtcclxuICAgICAgICB0aGlzLm1vZGVsID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oJ3ZhbHVlJywgJ2xhYmVsJywgdHJ1ZSwgZmFsc2UsIFtcclxuICAgICAgICAgIHsgbGFiZWw6ICdTaW0nLCB2YWx1ZTogdHJ1ZSAgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdOw6NvJywgdmFsdWU6IGZhbHNlIH0sXHJcbiAgICAgICAgXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbW9kZWw6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIG1vZGVsTWluaW11bTogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgbW9kZWxNYXhpbXVtOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIENoYW5nZSgpOiB2b2lke1xyXG4gICAgaWYoKCh0eXBlb2YodGhpcy5tb2RlbCkgPT0gJ3N0cmluZycgJiYgIXRoaXMubW9kZWwpIHx8IFxyXG4gICAgICAgICB0aGlzLm1vZGVsID09IG51bGwgfHwgXHJcbiAgICAgICAgIChBcnJheS5pc0FycmF5KHRoaXMubW9kZWwpICYmIHRoaXMubW9kZWwubGVuZ3RoID09IDApKSAmJiBcclxuICAgICAgIXRoaXMubW9kZWxNaW5pbXVtICYmICF0aGlzLm1vZGVsTWF4aW11bSlcclxuICAgIHtcclxuICAgICAgdGhpcy5TZXRJbmFjdGl2ZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYoW0lucHV0VHlwZS5DdXJyZW5jeSwgSW5wdXRUeXBlLkRlY2ltYWwsIElucHV0VHlwZS5OdW1iZXJdLmluY2x1ZGVzKHRoaXMuZmllbGQudHlwZSkpe1xyXG4gICAgICB2YXIgQ29tcGFyaXNvbjogQ29tcGFyaXNvbltdID0gW107XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNaW5pbXVtKXtcclxuICAgICAgICB2YXIgQmlnZ2VyICA9IG5ldyBEZWNpbWFsUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuR3JlYXRlclRoYW5PckVxdWFsKHRoaXMubW9kZWxNaW5pbXVtKTtcclxuICAgICAgICBDb21wYXJpc29uID0gW0JpZ2dlcl07XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb2RlbE1heGltdW0pe1xyXG4gICAgICAgIHZhciBTbWFsbGVyID0gbmV3IERlY2ltYWxQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5MZXNzVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1heGltdW0pO1xyXG4gICAgICAgIGlmKENvbXBhcmlzb24ubGVuZ3RoKXsgQ29tcGFyaXNvbi5wdXNoKFNtYWxsZXIpOyB9IFxyXG4gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgIHsgQ29tcGFyaXNvbiA9IFtTbWFsbGVyXTsgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZpZWxkLmZpbHRlciA9IENvbXBhcmlzb247XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYoW0lucHV0VHlwZS5TdHJpbmcsIElucHV0VHlwZS5UZXh0QXJlYSwgSW5wdXRUeXBlLkNlcCwgSW5wdXRUeXBlLkNwZiwgSW5wdXRUeXBlLkNucGosIElucHV0VHlwZS5DcGZDbnBqXS5pbmNsdWRlcyh0aGlzLmZpZWxkLnR5cGUpKXtcclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgICA9IFtuZXcgU3RyaW5nUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuSXNDb250YWluZWRJbih0aGlzLm1vZGVsKV07XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3Qpe1xyXG4gICAgICB0aGlzLmZpZWxkLmZpbHRlciAgID0gW25ldyBJbXBsaWNpdFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLklzQ29udGFpbmVkSW4odGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyICAgPSBbbmV3IEJvb2xQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5FcXVhbHModGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLkRhdGUsIElucHV0VHlwZS5EYXRlVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNaW5pbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWluaW11bSA9IHRoaXMubW9kZWxNaW5pbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNYXhpbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWF4aW11bSA9IHRoaXMubW9kZWxNYXhpbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgdmFyIENvbXBhcmlzb246IENvbXBhcmlzb25bXSA9IFtdO1xyXG4gICAgICBpZih0aGlzLm1vZGVsTWluaW11bSl7XHJcbiAgICAgICAgdmFyIEJpZ2dlckRhdGUgID0gbmV3IERhdGVQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyRGF0ZV07XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb2RlbE1heGltdW0pe1xyXG4gICAgICAgIHZhciBTbWFsbGVyRGF0ZSA9IG5ldyBEYXRlUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuTGVzc1RoYW5PckVxdWFsKHRoaXMubW9kZWxNYXhpbXVtKTtcclxuICAgICAgICBpZihDb21wYXJpc29uLmxlbmd0aCl7IENvbXBhcmlzb24ucHVzaChTbWFsbGVyRGF0ZSk7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJEYXRlXSAgOyB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgPSBDb21wYXJpc29uO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBTZXRJbmFjdGl2ZSgpOiB2b2lke1xyXG4gICAgdGhpcy5maWVsZC5maWx0ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oSW5wdXREYXRlQ29tcG9uZW50KSBsc3RJbnB1dERhdGU6IFF1ZXJ5TGlzdDxJbnB1dERhdGVDb21wb25lbnQ+O1xyXG4gIFdpbGxEaXNtaXNzKCk6IHZvaWR7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmxzdElucHV0RGF0ZS50b0FycmF5KCkpO1xyXG4gICAgdGhpcy5sc3RJbnB1dERhdGUuZm9yRWFjaChpID0+IGkuRGlzbWlzcygpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjYW5jaG9yIGNsYXNzPVwiaC01IGFzcGVjdC1zcXVhcmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICA8aW9uLWljb24gbmFtZT1cImZpbHRlci1jaXJjbGVcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudClcIiBjbGFzcz1cInRleHQteGwgYWxpZ24tc3ViIHNpemUtZnVsbFwiIFtjb2xvcl09XCJpc0ZpbHRlckFjdGl2ZSA/ICdzZWNvbmRhcnknIDogJ21lZGl1bScgXCI+PC9pb24taWNvbj5cclxuPC9kaXY+XHJcblxyXG48aW9uLXBvcG92ZXIgY2xhc3M9XCJ0aC1maWx0ZXJcIiBmaWxsPVwic29saWRcIiAjcG9wb3ZlciB0cmlnZ2VyQWN0aW9uPVwiY2xpY2tcIiAob25XaWxsRGlzbWlzcyk9XCJXaWxsRGlzbWlzcygpXCI+XHJcbiAgPG5nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInctNzIgZmxleCBmbGV4LWNvbCBnYXAtMiBwLTJcIiA+XHJcbiAgICAgIEBpZighWydTZWxlY3QnLCAnQm9vbCcsICdTdHJpbmcnLCAnVGV4dEFyZWEnLCAnQ3BmJywgJ0NucGonLCAnQ3BmQ25waicsICdDZXAnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSl7XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPiAgRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fSA8L2lvbi1sYWJlbD5cclxuICAgICAgfVxyXG4gICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgICAgQGNhc2UgKCdTdHJpbmcnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtc3RyaW5nIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIChibHVyKT1cIkNoYW5nZSgpXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnTnVtYmVyJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LW51bWJlciAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIlZhbG9yIE3DrW5pbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1udW1iZXIgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdEZWNpbWFsJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kZWNpbWFsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnQ3VycmVuY3knKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtY3VycmVuY3kgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3VycmVuY3k+XHJcbiAgICAgICAgICAgIDxpbnB1dC1jdXJyZW5jeSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnU2VsZWN0Jykge1xyXG4gICAgICAgICAgPGlucHV0LXNlbGVjdCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ1RleHRBcmVhJykge1xyXG4gICAgICAgICAgPGlucHV0LXN0cmluZyAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnQm9vbCcpIHtcclxuICAgICAgICAgIDxpbnB1dC1zZWxlY3QgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIHBsYWNlaG9sZGVyPVwiXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RhdGUnKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJEYXRhIE3DrW5pbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGF0ZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIkRhdGEgTWF4aW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RhdGVUaW1lJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIkRhdGEgTcOtbmltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIkRhdGEgTWF4aW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZS10aW1lPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlKFwiQ2VwXCIpIHtcclxuICAgICAgICAgIDxpbnB1dC1jZXAgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiPjwvaW5wdXQtY2VwPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0NwZicpIHtcclxuICAgICAgICAgIDxpbnB1dC1jcGYgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiPjwvaW5wdXQtY3BmPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0NucGonKSB7XHJcbiAgICAgICAgICA8aW5wdXQtY25waiAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCI+PC9pbnB1dC1jbnBqPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0NwZkNucGonKSB7XHJcbiAgICAgICAgICA8aW5wdXQtY3BmLWNucGogKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiPjwvaW5wdXQtY3BmLWNucGo+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2lvbi1wb3BvdmVyPlxyXG4iXX0=
@@ -9,10 +9,10 @@ export class AbstractView {
9
9
  static GetProvider(component) {
10
10
  return [{ provide: AbstractView, useExisting: component }];
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractView, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AbstractView, selector: "ng-component", viewQueries: [{ propertyName: "DefaultView", first: true, predicate: (DefaultViewComponent), descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AbstractView, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AbstractView, selector: "ng-component", viewQueries: [{ propertyName: "DefaultView", first: true, predicate: (DefaultViewComponent), descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractView, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AbstractView, decorators: [{
16
16
  type: Component,
17
17
  args: [{ template: '' }]
18
18
  }], propDecorators: { DefaultView: [{
@@ -45,10 +45,10 @@ export class DefaultViewComponent extends View {
45
45
  */
46
46
  this.backRouterLink = undefined;
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultViewComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }, { token: i2.ActivatedRoute }, { token: i3.GenericService }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultViewComponent, selector: "default-view", inputs: { noBack: "noBack", noNew: "noNew", noBreadcrumbs: "noBreadcrumbs", backRouterLink: "backRouterLink" }, usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-telefone-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone-celular>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"], dependencies: [{ kind: "component", type: i4.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i4.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.InputBoolComponent, selector: "input-bool", inputs: ["configuration"] }, { kind: "component", type: i7.InputCepComponent, selector: "input-cep" }, { kind: "component", type: i8.InputColorComponent, selector: "input-color" }, { kind: "component", type: i9.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i10.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i11.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i12.InputFileComponent, selector: "input-file", inputs: ["configuration"] }, { kind: "component", type: i13.InputIconComponent, selector: "input-icon" }, { kind: "component", type: i14.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i15.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "component", type: i16.InputTelefoneComponent, selector: "input-telefone, input-celular, input-telefone-celular", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i17.InputTextareaComponent, selector: "input-textarea", inputs: ["configuration"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i18.HeaderViewComponent, selector: "header-view", inputs: ["novo", "loading", "progress", "noBack", "noNew", "useDefaultRouting", "backRouterLink"], outputs: ["save"] }] }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultViewComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }, { token: i2.ActivatedRoute }, { token: i3.GenericService }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DefaultViewComponent, selector: "default-view", inputs: { noBack: "noBack", noNew: "noNew", noBreadcrumbs: "noBreadcrumbs", backRouterLink: "backRouterLink" }, usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-telefone-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone-celular>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"], dependencies: [{ kind: "component", type: i4.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i4.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.InputBoolComponent, selector: "input-bool", inputs: ["configuration"] }, { kind: "component", type: i7.InputCepComponent, selector: "input-cep", inputs: ["configuration"] }, { kind: "component", type: i8.InputColorComponent, selector: "input-color" }, { kind: "component", type: i9.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i10.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i11.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i12.InputFileComponent, selector: "input-file", inputs: ["configuration"] }, { kind: "component", type: i13.InputIconComponent, selector: "input-icon" }, { kind: "component", type: i14.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i15.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "component", type: i16.InputTelefoneComponent, selector: "input-telefone, input-celular, input-telefone-celular", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i17.InputTextareaComponent, selector: "input-textarea", inputs: ["configuration"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i18.HeaderViewComponent, selector: "header-view", inputs: ["novo", "loading", "progress", "noBack", "noNew", "useDefaultRouting", "backRouterLink"], outputs: ["save"] }] }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultViewComponent, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultViewComponent, decorators: [{
52
52
  type: Component,
53
53
  args: [{ selector: 'default-view', template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-telefone-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone-celular>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"] }]
54
54
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ElementRef }, { type: i2.ActivatedRoute }, { type: i3.GenericService }, { type: i4.NavController }], propDecorators: { noBack: [{
@@ -45,10 +45,10 @@ export class HeaderViewComponent {
45
45
  Save() {
46
46
  this.saveEmitter.emit();
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderViewComponent, deps: [{ token: i1.NavController }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: HeaderViewComponent, selector: "header-view", inputs: { novo: "novo", loading: "loading", progress: "progress", noBack: "noBack", noNew: "noNew", useDefaultRouting: "useDefaultRouting", backRouterLink: "backRouterLink" }, outputs: { saveEmitter: "save" }, viewQueries: [{ propertyName: "IonBackButtonElement", first: true, predicate: IonBackButton, descendants: true }, { propertyName: "NewIonButtonElement", first: true, predicate: ["new"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HeaderViewComponent, deps: [{ token: i1.NavController }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: HeaderViewComponent, selector: "header-view", inputs: { novo: "novo", loading: "loading", progress: "progress", noBack: "noBack", noNew: "noNew", useDefaultRouting: "useDefaultRouting", backRouterLink: "backRouterLink" }, outputs: { saveEmitter: "save" }, viewQueries: [{ propertyName: "IonBackButtonElement", first: true, predicate: IonBackButton, descendants: true }, { propertyName: "NewIonButtonElement", first: true, predicate: ["new"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderViewComponent, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HeaderViewComponent, decorators: [{
52
52
  type: Component,
53
53
  args: [{ selector: 'header-view', template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"] }]
54
54
  }], ctorParameters: () => [{ type: i1.NavController }, { type: i2.ActivatedRoute }], propDecorators: { novo: [{
@@ -140,10 +140,10 @@ export class View {
140
140
  return;
141
141
  }
142
142
  }
143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: View, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: View, selector: "ng-component", inputs: { id: "id", loading: "loading", submitted: "submitted", progress: "progress", service: "service", lstTableFields: "lstTableFields", redirectPath: "redirectPath" }, outputs: { ViewDidRefreshEmitter: "ViewDidRefresh", SaveEmitter: "Save" }, host: { listeners: { "window:keydown": "onKeyPress($event)" } }, viewQueries: [{ propertyName: "Wrapper", first: true, predicate: [".wrapper"], descendants: true }, { propertyName: "HeaderViewComponentElement", first: true, predicate: HeaderViewComponent, descendants: true }, { propertyName: "lstCustomInputs", predicate: CustomInput, descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: View, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: View, selector: "ng-component", inputs: { id: "id", loading: "loading", submitted: "submitted", progress: "progress", service: "service", lstTableFields: "lstTableFields", redirectPath: "redirectPath" }, outputs: { ViewDidRefreshEmitter: "ViewDidRefresh", SaveEmitter: "Save" }, host: { listeners: { "window:keydown": "onKeyPress($event)" } }, viewQueries: [{ propertyName: "Wrapper", first: true, predicate: [".wrapper"], descendants: true }, { propertyName: "HeaderViewComponentElement", first: true, predicate: HeaderViewComponent, descendants: true }, { propertyName: "lstCustomInputs", predicate: CustomInput, descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
145
145
  }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: View, decorators: [{
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: View, decorators: [{
147
147
  type: Component,
148
148
  args: [{ template: '' }]
149
149
  }], ctorParameters: () => [], propDecorators: { id: [{
@@ -35,8 +35,8 @@ const lstComponents = [
35
35
  - DefaultPaginationComponent,
36
36
  */
37
37
  export class DefaultModule {
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
39
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultModule, declarations: [HeaderListComponent,
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
39
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DefaultModule, declarations: [HeaderListComponent,
40
40
  DefaultListComponent,
41
41
  DefaultViewComponent,
42
42
  HeaderViewComponent,
@@ -62,7 +62,7 @@ export class DefaultModule {
62
62
  DefaultTableComponent,
63
63
  DefaultPaginationComponent,
64
64
  ThFilterComponent] }); }
65
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultModule, imports: [IonicModule,
65
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultModule, imports: [IonicModule,
66
66
  CommonModule,
67
67
  InputsModule,
68
68
  ReactiveFormsModule,
@@ -72,7 +72,7 @@ export class DefaultModule {
72
72
  SIonPopoverModule,
73
73
  ContentBlockComponent] }); }
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultModule, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultModule, decorators: [{
76
76
  type: NgModule,
77
77
  args: [{
78
78
  declarations: [...lstComponents],
@@ -45,10 +45,10 @@ export class DefaultPage {
45
45
  SetTitle(item) {
46
46
  this.genericService.SetTitle(item.title);
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPage, deps: [{ token: i1.ActivatedRoute }, { token: i2.EnvironmentService }, { token: i3.GenericService }, { token: i4.RouteProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultPage, isStandalone: true, selector: "app-default", ngImport: i0, template: "<ion-content [fullscreen]=\"true\">\r\n <div class=\"wrapper\">\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[null]\">\r\n <ion-icon slot=\"start\" name=\"home\"></ion-icon> Inicio\r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n \r\n <ion-card>\r\n <ion-card-content class=\"flex flex-col items-center justify-center !p-6\">\r\n <div class=\"w-full shrink-0 text-center\">\r\n @if(lstImage){\r\n @for (item of lstImage; track $index) {\r\n <ion-img [class]=\"item.classes\" [src]=\"item.src\" (ion-error)=\"lstImage\"></ion-img>\r\n }\r\n }\r\n @else {\r\n <ion-text class=\"text-8xl font-poppins w-full\"> {{title}} </ion-text>\r\n }\r\n </div>\r\n\r\n <div class=\"overflow-hidden p-2 w-full relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <div class=\"size-full flex flex-wrap portrait:!grid gap-2\">\r\n @for (item of lstMenu; track item; let i = $index) {\r\n @if(item.type == \"Menu\"){\r\n <ion-button fill=\"outline\" class=\"grow min-w-fit\" [routerLink]=\"[item.route]\">\r\n <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n {{useTranslation ? (TranslationModule.Permissao + item.id | translate) : item.title}}\r\n </ion-button>\r\n }\r\n @if(item.type == \"MenuGroup\"){\r\n <ion-button fill=\"outline\" class=\"grow min-w-fit\" (click)=\"popover.present($event)\">\r\n <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-button>\r\n\r\n <ion-popover #popover class=\"overflow-y-auto\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-list class=\"no-outer-border\">\r\n <ion-item class=\"bg-transparent\" (click)=\"SetTitle(menu)\" *ngFor=\"let menu of item.lstMenu\" [routerLink]=\"['./' + menu.route]\" lines=\"none\" detail=\"false\" routerLinkActive=\"selected\">\r\n <ion-icon [name]=\"menu.icon\" slot=\"start\"></ion-icon> \r\n <ion-label> \r\n {{useTranslation ? (TranslationModule.Permissao + menu.id | translate) : menu.title}} \r\n </ion-label>\r\n </ion-item>\r\n </ion-list>\r\n </ng-template>\r\n </ion-popover>\r\n }\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"!overflow-y-auto w-full portrait:grow relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <div class=\"flex flex-wrap items-start justify-start mt-4 portrait:!grid portrait:!grid-cols-1\"> \r\n </div>\r\n </div> -->\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-popover::part(content){overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i6.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i6.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i6.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i6.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i6.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i6.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i6.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i6.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i6.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i6.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i6.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i6.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i6.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i6.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: RouterLinkWithHref, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultPage, deps: [{ token: i1.ActivatedRoute }, { token: i2.EnvironmentService }, { token: i3.GenericService }, { token: i4.RouteProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DefaultPage, isStandalone: true, selector: "app-default", ngImport: i0, template: "<ion-content [fullscreen]=\"true\">\r\n <div class=\"wrapper\">\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[null]\">\r\n <ion-icon slot=\"start\" name=\"home\"></ion-icon> Inicio\r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n \r\n <ion-card>\r\n <ion-card-content class=\"flex flex-col items-center justify-center !p-6\">\r\n <div class=\"w-full shrink-0 text-center\">\r\n @if(lstImage){\r\n @for (item of lstImage; track $index) {\r\n <ion-img [class]=\"item.classes\" [src]=\"item.src\" (ion-error)=\"lstImage\"></ion-img>\r\n }\r\n }\r\n @else {\r\n <ion-text class=\"text-8xl font-poppins w-full\"> {{title}} </ion-text>\r\n }\r\n </div>\r\n\r\n <div class=\"overflow-hidden p-2 w-full relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <div class=\"size-full flex flex-wrap portrait:!grid gap-2\">\r\n @for (item of lstMenu; track item; let i = $index) {\r\n @if(item.type == \"Menu\"){\r\n <ion-button fill=\"outline\" class=\"grow min-w-fit\" [routerLink]=\"[item.route]\">\r\n <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n {{useTranslation ? (TranslationModule.Permissao + item.id | translate) : item.title}}\r\n </ion-button>\r\n }\r\n @if(item.type == \"MenuGroup\"){\r\n <ion-button fill=\"outline\" class=\"grow min-w-fit\" (click)=\"popover.present($event)\">\r\n <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-button>\r\n\r\n <ion-popover #popover class=\"overflow-y-auto\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-list class=\"no-outer-border\">\r\n <ion-item class=\"bg-transparent\" (click)=\"SetTitle(menu)\" *ngFor=\"let menu of item.lstMenu\" [routerLink]=\"['./' + menu.route]\" lines=\"none\" detail=\"false\" routerLinkActive=\"selected\">\r\n <ion-icon [name]=\"menu.icon\" slot=\"start\"></ion-icon> \r\n <ion-label> \r\n {{useTranslation ? (TranslationModule.Permissao + menu.id | translate) : menu.title}} \r\n </ion-label>\r\n </ion-item>\r\n </ion-list>\r\n </ng-template>\r\n </ion-popover>\r\n }\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"!overflow-y-auto w-full portrait:grow relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <div class=\"flex flex-wrap items-start justify-start mt-4 portrait:!grid portrait:!grid-cols-1\"> \r\n </div>\r\n </div> -->\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-popover::part(content){overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i6.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i6.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i6.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i6.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i6.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i6.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i6.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i6.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i6.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i6.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i6.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i6.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i6.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i6.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: RouterLinkWithHref, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPage, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultPage, decorators: [{
52
52
  type: Component,
53
53
  args: [{ standalone: true, selector: 'app-default', imports: [
54
54
  CommonModule,
@@ -31,10 +31,10 @@ export class DragDropFileDirective {
31
31
  this.fileDropped.emit(Array.from(files));
32
32
  }
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragDropFileDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DragDropFileDirective, selector: "[DragDropFile]", outputs: { fileDropped: "fileDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.fileOver": "this.fileOver" } }, queries: [{ propertyName: "dragDropOverlay", first: true, predicate: DragDropOverlayComponent, descendants: true }], ngImport: i0 }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DragDropFileDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DragDropFileDirective, selector: "[DragDropFile]", outputs: { fileDropped: "fileDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.fileOver": "this.fileOver" } }, queries: [{ propertyName: "dragDropOverlay", first: true, predicate: DragDropOverlayComponent, descendants: true }], ngImport: i0 }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragDropFileDirective, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DragDropFileDirective, decorators: [{
38
38
  type: Directive,
39
39
  args: [{
40
40
  selector: '[DragDropFile]'
@@ -9,15 +9,15 @@ const values = [
9
9
  DragDropOverlayComponent
10
10
  ];
11
11
  export class DragDropFileModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragDropFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DragDropFileModule, declarations: [DragDropFileDirective,
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DragDropFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DragDropFileModule, declarations: [DragDropFileDirective,
14
14
  DragDropOverlayComponent], imports: [CommonModule,
15
15
  IonicModule], exports: [DragDropFileDirective,
16
16
  DragDropOverlayComponent] }); }
17
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragDropFileModule, imports: [CommonModule,
17
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DragDropFileModule, imports: [CommonModule,
18
18
  IonicModule] }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragDropFileModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DragDropFileModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  declarations: [...values],