@seniorsistemas/angular-components 19.9.2 → 19.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,25 +1,111 @@
1
- # AngularComponents
1
+ # @seniorsistemas/angular-components
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.
3
+ Biblioteca de componentes Angular reutilizáveis da Senior Sistemas, construída com Angular 18 e Tailwind CSS.
4
4
 
5
- ## Code scaffolding
5
+ Inclui mais de 70 componentes, diretivas e pipes para construção de interfaces — desde inputs e formulários dinâmicos até tabelas, kanban, chat e muito mais.
6
6
 
7
- Run `ng generate component component-name --project angular-components` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project angular-components`.
7
+ ## Documentação
8
8
 
9
- > Note: Don't forget to add `--project angular-components` or else it will be added to the default project in your `angular.json` file.
9
+ A documentação oficial é feita via **Storybook**. Cada componente tem stories com exemplos interativos, descrição de inputs/outputs e variantes visuais.
10
10
 
11
- ## Build
11
+ ### Rodar o Storybook localmente
12
12
 
13
- Run `ng build angular-components` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+ ```bash
14
+ npm run storybook
15
+ ```
14
16
 
15
- ## Publishing
17
+ Acesse em `http://localhost:6006`.
16
18
 
17
- After building your library with `ng build angular-components`, go to the dist folder `cd dist/angular-components` and run `npm publish`.
19
+ ### Build do Storybook
18
20
 
19
- ## Running unit tests
21
+ ```bash
22
+ npm run build-storybook
23
+ ```
20
24
 
21
- Run `ng test angular-components` to execute the unit tests via [Karma](https://karma-runner.github.io).
25
+ O output é gerado em `storybook-static/`.
22
26
 
23
- ## Further help
27
+ ## Showcase
28
+
29
+ Além do Storybook, há um projeto de showcase com exemplos reais de uso:
30
+
31
+ ```bash
32
+ npm run start
33
+ ```
34
+
35
+ Acesse em `http://localhost:4200`.
36
+
37
+ ## Estrutura do monorepo
38
+
39
+ ```
40
+ projects/
41
+ angular-components/ # Biblioteca de componentes
42
+ <nome-componente>/ # Cada componente é um sub-pacote independente
43
+ src/lib/
44
+ ng-package.json
45
+ showcase/ # Aplicação de demonstração
46
+ ```
47
+
48
+ ## Instalação
49
+
50
+ ```bash
51
+ npm install @seniorsistemas/angular-components
52
+ ```
53
+
54
+ Cada componente é importado individualmente pelo seu sub-pacote:
55
+
56
+ ```typescript
57
+ import { ButtonModule } from '@seniorsistemas/angular-components/button';
58
+ import { DynamicFormModule } from '@seniorsistemas/angular-components/dynamic-form';
59
+ ```
60
+
61
+ ## Schematics de migração
62
+
63
+ A biblioteca oferece schematics de migração via `ng update`, então é boa prática sempre atualizar a versão instalada com esse comando em vez de só trocar o número no `package.json` — além de atualizar a dependência, ele aplica automaticamente as migrations necessárias no seu projeto e mostra o que há de novo relevante para o seu código:
64
+
65
+ ```bash
66
+ ng update @seniorsistemas/angular-components
67
+ ```
68
+
69
+ Migrations disponíveis (por versão em que passam a ser aplicadas):
70
+
71
+ | Versão | Migration | O que faz |
72
+ | -------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
73
+ | `19.0.0` | `migration-v19-0-0-dynamic-form` | Migra o `DynamicForm` de v18 para v19: construtores → plain objects, enums → string literals, `[fields]` → `[configs]`, `Editor` → `provideEditorField()`, estilos → `angular.json` |
74
+ | `19.0.0` | `migration-v19-0-0-steps-to-stepper` | Migra `Steps` para `Stepper`: `<s-steps>` → `<s-stepper>`, import de `.../steps` → `.../stepper`, `StepsComponent` → `StepperComponent`, e remove o `StepsModule` (componente agora standalone) substituindo por `StepperComponent` |
75
+ | `19.6.0` | `migration-v19-6-0-p-datepicker` | Migra `p-datepicker` (PrimeNG) para `s-datepicker` (`@seniorsistemas/angular-components`) |
76
+ | `19.6.0` | `migration-v19-6-0-p-editor` | Migra `p-editor` (PrimeNG/Quill) para `s-editor`: renomeia tag e eventos, remove atributos sem equivalente, limpa configs legadas do `DynamicForm` e atualiza dependências do `package.json` |
77
+ | `19.6.2` | `migration-v19-6-2-s-chips-outputs` | Renomeia outputs legados do `s-chips`: `onAdd`→`added`, `onRemove`→`removed`, `onChipClick`→`chipClicked`, `onFocus`→`focused`, `onBlur`→`focusLost` |
78
+ | `19.9.3` | `migration-v19-9-3-fieldset-body-template` | Envolve o conteúdo projetado do `s-fieldset` em `<ng-template sTemplate="body">`, mantendo templates de slot como `sTemplate="header"` fora do body, e garante o `TemplateDirective` no escopo do componente (standalone ou via `NgModule`) |
79
+
80
+ A lista completa, com a `version` que dispara cada migration e a `factory` correspondente, fica em [`projects/angular-components/schematics/migrations.json`](projects/angular-components/schematics/migrations.json).
81
+
82
+ ### Executando uma migration individualmente
83
+
84
+ Se você já está na versão instalada (não chegou até ela via `ng update`) e só precisa aplicar uma migration específica no seu projeto, sem atualizar nada, há duas formas:
85
+
86
+ **Via `ng generate`** (mais simples) — cada migration também está disponível com um nome curto, sem o prefixo de versão (`migrate-<nome>` em vez de `migration-v<versão>-<nome>`):
87
+
88
+ ```bash
89
+ ng generate @seniorsistemas/angular-components:migrate-fieldset-body-template
90
+ ```
91
+
92
+ **Via `ng update --name`** (mais completo) — usa o nome versionado, o mesmo que aparece na tabela acima:
93
+
94
+ ```bash
95
+ ng update @seniorsistemas/angular-components --name migration-v19-9-3-fieldset-body-template
96
+ ```
97
+
98
+ Os dois rodam exatamente a mesma migration e nenhum dos dois altera a versão instalada ou reinstala dependências.
99
+
100
+ ## Build da biblioteca
101
+
102
+ ```bash
103
+ npm run build
104
+ ```
105
+
106
+ ## Testes
107
+
108
+ ```bash
109
+ npm run test
110
+ ```
24
111
 
25
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -1,6 +1,7 @@
1
1
  import { Component, input } from '@angular/core';
2
2
  import { DynamicFormDirective } from '../../../dynamic-form.directive';
3
3
  import { FieldsetModule } from '@seniorsistemas/angular-components/fieldset';
4
+ import { TemplateDirective } from '@seniorsistemas/angular-components/template';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@seniorsistemas/angular-components/fieldset";
6
7
  export class FieldsetComponent {
@@ -9,10 +10,10 @@ export class FieldsetComponent {
9
10
  group = input.required();
10
11
  errorMessages = input();
11
12
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (onBeforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (onAfterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n</s-fieldset>\n\n", dependencies: [{ kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i1.FieldsetComponent, selector: "s-fieldset", inputs: ["legend", "toggleable", "icon", "destroyOnHide"], outputs: ["beforeToggle", "afterToggle"] }] });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n", dependencies: [{ kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i1.FieldsetComponent, selector: "s-fieldset", inputs: ["legend", "toggleable", "icon", "destroyOnHide", "active"], outputs: ["beforeToggle", "afterToggle", "activeChange"] }, { kind: "directive", type: TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }] });
13
14
  }
14
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, decorators: [{
15
16
  type: Component,
16
- args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (onBeforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (onAfterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n</s-fieldset>\n\n" }]
17
+ args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule, TemplateDirective], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n" }]
17
18
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL3N0cnVjdHVyZS9maWVsZHNldC9maWVsZHNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvc3RydWN0dXJlL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBTTdFLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsRUFBRSxHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ3JCLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO0lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFhLENBQUM7SUFDcEMsYUFBYSxHQUFHLEtBQUssRUFBTyxDQUFDO3dHQUpwQixpQkFBaUI7NEZBQWpCLGlCQUFpQixva0JDWjlCLHVoQkFjQSw0Q0RMYyxvQkFBb0Isb0ZBQUUsY0FBYzs7NEZBR3JDLGlCQUFpQjtrQkFMN0IsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEZpZWxkc2V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL2ZpZWxkc2V0JztcbmltcG9ydCB7IEJhc2VTdHJ1Y3R1cmVDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi9iYXNlLXN0cnVjdHVyZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9keW5hbWljLWZvcm0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9maWVsZHNldCc7XG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEeW5hbWljRm9ybURpcmVjdGl2ZSwgRmllbGRzZXRNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWVsZHNldC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkc2V0Q29tcG9uZW50IGltcGxlbWVudHMgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB7XG4gICAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8RmllbGRzZXRDb25maWc+KCk7XG4gICAgZ3JvdXAgPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA+KCk7XG4gICAgZXJyb3JNZXNzYWdlcyA9IGlucHV0PGFueT4oKTtcbn1cblxuIiwiQGxldCBfY29uZmlnID0gY29uZmlnKCk7XG48cy1maWVsZHNldFxuICAgIFt0b2dnbGVhYmxlXT1cInRydWVcIlxuICAgIChvbkJlZm9yZVRvZ2dsZSk9XCJfY29uZmlnLmJlZm9yZVRvZ2dsZSA/IF9jb25maWcuYmVmb3JlVG9nZ2xlKCRldmVudCkgOiBudWxsXCJcbiAgICAob25BZnRlclRvZ2dsZSk9XCJfY29uZmlnLmFmdGVyVG9nZ2xlID8gX2NvbmZpZy5hZnRlclRvZ2dsZSgkZXZlbnQpIDogbnVsbFwiXG4gICAgW2xlZ2VuZF09XCJfY29uZmlnLmhlYWRlciA/IF9jb25maWcuaGVhZGVyIDogJydcIlxuPlxuICAgIEBmb3IgKGNvbmYgb2YgX2NvbmZpZy5jb25maWdzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqc0R5bmFtaWNGb3JtPVwieyBpZDogaWQoKSwgY29uZmlnOiBjb25mLCBncm91cDogZ3JvdXAoKSwgZXJyb3JNZXNzYWdlczogZXJyb3JNZXNzYWdlcygpIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuPC9zLWZpZWxkc2V0PlxuXG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL3N0cnVjdHVyZS9maWVsZHNldC9maWVsZHNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvc3RydWN0dXJlL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBTWhGLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsRUFBRSxHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ3JCLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO0lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFhLENBQUM7SUFDcEMsYUFBYSxHQUFHLEtBQUssRUFBTyxDQUFDO3dHQUpwQixpQkFBaUI7NEZBQWpCLGlCQUFpQixva0JDYjlCLGltQkFnQkEsNENETmMsb0JBQW9CLG9GQUFFLGNBQWMseU9BQUUsaUJBQWlCOzs0RkFHeEQsaUJBQWlCO2tCQUw3QixTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRzZXRDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvZmllbGRzZXQnO1xuaW1wb3J0IHsgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uL2Jhc2Utc3RydWN0dXJlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2R5bmFtaWMtZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGRzZXRNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0JztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90ZW1wbGF0ZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEeW5hbWljRm9ybURpcmVjdGl2ZSwgRmllbGRzZXRNb2R1bGUsIFRlbXBsYXRlRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzZXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZHNldENvbXBvbmVudCBpbXBsZW1lbnRzIEJhc2VTdHJ1Y3R1cmVDb21wb25lbnRDb25maWcge1xuICAgIGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEZpZWxkc2V0Q29uZmlnPigpO1xuICAgIGdyb3VwID0gaW5wdXQucmVxdWlyZWQ8Rm9ybUdyb3VwPigpO1xuICAgIGVycm9yTWVzc2FnZXMgPSBpbnB1dDxhbnk+KCk7XG59XG5cbiIsIkBsZXQgX2NvbmZpZyA9IGNvbmZpZygpO1xuPHMtZmllbGRzZXRcbiAgICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcbiAgICAoYmVmb3JlVG9nZ2xlKT1cIl9jb25maWcuYmVmb3JlVG9nZ2xlID8gX2NvbmZpZy5iZWZvcmVUb2dnbGUoJGV2ZW50KSA6IG51bGxcIlxuICAgIChhZnRlclRvZ2dsZSk9XCJfY29uZmlnLmFmdGVyVG9nZ2xlID8gX2NvbmZpZy5hZnRlclRvZ2dsZSgkZXZlbnQpIDogbnVsbFwiXG4gICAgW2xlZ2VuZF09XCJfY29uZmlnLmhlYWRlciA/IF9jb25maWcuaGVhZGVyIDogJydcIlxuPlxuICAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJib2R5XCI+XG4gICAgICAgIEBmb3IgKGNvbmYgb2YgX2NvbmZpZy5jb25maWdzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpzRHluYW1pY0Zvcm09XCJ7IGlkOiBpZCgpLCBjb25maWc6IGNvbmYsIGdyb3VwOiBncm91cCgpLCBlcnJvck1lc3NhZ2VzOiBlcnJvck1lc3NhZ2VzKCkgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9zLWZpZWxkc2V0PlxuXG4iXX0=
@@ -1,18 +1,27 @@
1
1
  import { animate, state, style, transition, trigger } from '@angular/animations';
2
- import { Component, ContentChildren, EventEmitter, Input, Output, } from '@angular/core';
3
- import { TemplateDirective } from '@seniorsistemas/angular-components/template';
4
- import { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';
2
+ import { Component, computed, contentChildren, EventEmitter, input, model, Output, signal, } from '@angular/core';
5
3
  import { NgTemplateOutlet } from '@angular/common';
4
+ import { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';
5
+ import { TemplateDirective } from '@seniorsistemas/angular-components/template';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
8
  * @description Componente de fieldset com legenda, ícone configurável e suporte a
9
- * toggle (recolher/expandir) com animação. Suporta template personalizado para o
10
- * cabeçalho via diretiva `TemplateDirective` com tipo `'header'`.
9
+ * toggle (recolher/expandir) com animação. Suporta templates personalizados via
10
+ * diretiva `TemplateDirective`, com os tipos `'header'` (substitui a legenda) e
11
+ * `'body'` (conteúdo do fieldset).
12
+ *
13
+ * Prefira declarar o conteúdo em `sTemplate="body"` em vez de projetá-lo direto:
14
+ * o `ng-content` é instanciado pelo componente pai mesmo com o fieldset recolhido,
15
+ * disparando o `ngOnInit` dos filhos prematuramente. O template de corpo só é
16
+ * instanciado quando o fieldset está de fato ativo, e é obrigatório para que
17
+ * `destroyOnHide` funcione.
11
18
  *
12
19
  * @example
13
20
  * ```html
14
21
  * <s-fieldset legend="Dados pessoais" [toggleable]="true">
15
- * <p>Conteúdo do fieldset</p>
22
+ * <ng-template sTemplate="body">
23
+ * <p>Conteúdo do fieldset</p>
24
+ * </ng-template>
16
25
  * </s-fieldset>
17
26
  * ```
18
27
  *
@@ -20,33 +29,46 @@ import * as i0 from "@angular/core";
20
29
  */
21
30
  export class FieldsetComponent {
22
31
  /** @description Texto exibido como título do fieldset. @default '' */
23
- legend = '';
32
+ legend = input('');
24
33
  /** @description Habilita o botão de toggle que permite recolher e expandir o conteúdo. @default false */
25
- toggleable = false;
34
+ toggleable = input(false);
26
35
  /** @description Classe de ícone exibida ao lado da legenda (ex.: `'fas fa-cog'`). @default '' */
27
- icon = '';
28
- /** @description Quando `true`, remove o conteúdo do DOM ao recolher o fieldset. @default true */
29
- destroyOnHide = true;
30
- templateDirectives;
31
- headerTemplate;
36
+ icon = input('');
37
+ /** @description Quando `true`, remove o conteúdo do DOM ao recolher o fieldset. @default false */
38
+ destroyOnHide = input(false);
39
+ templateDirectives = contentChildren(TemplateDirective);
40
+ headerTemplate = computed(() => {
41
+ return this.templateDirectives()?.find((template) => template.type === 'header')?.template;
42
+ });
43
+ bodyTemplate = computed(() => {
44
+ return this.templateDirectives()?.find((template) => template.type === 'body')?.template;
45
+ });
32
46
  /** @description Emitido imediatamente antes da animação de toggle iniciar, com o estado atual. */
33
47
  beforeToggle = new EventEmitter();
34
48
  /** @description Emitido após a animação de toggle concluir, com o novo estado. */
35
49
  afterToggle = new EventEmitter();
36
- active = true;
50
+ active = model(true);
51
+ /** @description `true` quando a animação de fechamento já terminou, aplicando `overflow-hidden` ao conteúdo. */
52
+ collapsed = signal(false);
37
53
  ngAfterViewInit() {
38
- this.headerTemplate = this.templateDirectives?.find((template) => template.type === 'header')?.template;
54
+ const hasBodyTemplate = this.bodyTemplate();
55
+ if (!hasBodyTemplate && this.destroyOnHide()) {
56
+ console.warn('FieldsetComponent: O uso de destroyOnHide=true requer um template de corpo definido com sTemplate="body".');
57
+ }
39
58
  }
40
59
  toggleActive(originalEvent) {
41
- if (!this.toggleable) {
60
+ if (!this.toggleable()) {
42
61
  return;
43
62
  }
44
- this.beforeToggle.next({ collapsed: this.active, originalEvent });
45
- this.active = !this.active;
46
- this.afterToggle.next({ collapsed: this.active, originalEvent });
63
+ this.beforeToggle.next({ collapsed: this.active(), originalEvent });
64
+ this.active.set(!this.active());
65
+ this.afterToggle.next({ collapsed: this.active(), originalEvent });
66
+ }
67
+ onToggleAnimationDone(event) {
68
+ this.collapsed.set(event.toState === 'closed');
47
69
  }
48
70
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "s-fieldset", inputs: { legend: "legend", toggleable: "toggleable", icon: "icon", destroyOnHide: "destroyOnHide" }, outputs: { beforeToggle: "beforeToggle", afterToggle: "afterToggle" }, queries: [{ propertyName: "templateDirectives", predicate: TemplateDirective }], ngImport: i0, template: "<fieldset\r\n class=\"bg-grayscale-0 border border-grayscale-20 rounded-xbig mb-[10px] min-h-[4.5em] px-2 py-1.5 w-full min-w-0\"\r\n>\r\n <legend\r\n class=\"flex items-center text-grayscale-90 font-open-sans text-sm font-bold px-1 gap-1 ml-4 select-none\"\r\n [class.cursor-pointer]=\"toggleable\"\r\n (sInteractiveContent)=\"toggleActive($event)\"\r\n >\r\n @if (toggleable) {\r\n @if (active) {\r\n <i class=\"fas fa-plus\"></i>\r\n } @else {\r\n <i class=\"fas fa-minus\"></i>\r\n }\r\n }\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n } @else {\r\n @if (icon) {\r\n <i [class]=\"icon\"></i>\r\n }\r\n {{ legend }}\r\n }\r\n </legend>\r\n @if (destroyOnHide ? (toggleable ? active : true) : true) {\r\n <div [@toggleAnimation]=\"destroyOnHide ? null : active ? 'open' : 'closed'\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</fieldset>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "s-fieldset", inputs: { legend: { classPropertyName: "legend", publicName: "legend", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, destroyOnHide: { classPropertyName: "destroyOnHide", publicName: "destroyOnHide", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { beforeToggle: "beforeToggle", afterToggle: "afterToggle", active: "activeChange" }, queries: [{ propertyName: "templateDirectives", predicate: TemplateDirective, isSignal: true }], ngImport: i0, template: "<fieldset\r\n class=\"mb-[10px] min-h-[4.5em] w-full min-w-0 rounded-xbig border border-grayscale-20 bg-grayscale-0 px-2 py-1.5\"\r\n>\r\n <legend\r\n class=\"ml-4 flex select-none items-center gap-1 px-1 font-open-sans text-sm font-bold text-grayscale-90\"\r\n [class.cursor-pointer]=\"toggleable()\"\r\n (sInteractiveContent)=\"toggleActive($event)\"\r\n >\r\n @if (toggleable()) {\r\n @if (active()) {\r\n <i class=\"fas fa-minus\"></i>\r\n } @else {\r\n <i class=\"fas fa-plus\"></i>\r\n }\r\n }\r\n @let _headerTemplate = headerTemplate();\r\n @if (_headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_headerTemplate\"></ng-container>\r\n } @else {\r\n @if (icon()) {\r\n <i [class]=\"icon()\"></i>\r\n }\r\n {{ legend() }}\r\n }\r\n </legend>\r\n @if (destroyOnHide() ? (toggleable() ? active() : true) : true) {\r\n <div\r\n [@toggleAnimation]=\"destroyOnHide() ? null : active() ? 'open' : 'closed'\"\r\n (@toggleAnimation.done)=\"onToggleAnimationDone($event)\"\r\n [class.overflow-hidden]=\"collapsed()\"\r\n >\r\n @let _bodyTemplate = bodyTemplate();\r\n @if (_bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n }\r\n</fieldset>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
50
72
  trigger('toggleAnimation', [
51
73
  transition(':enter', [
52
74
  style({ opacity: 0, height: 0 }),
@@ -78,21 +100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
78
100
  state('closed', style({ opacity: 0, height: 0 })),
79
101
  transition('open <=> closed', animate('300ms ease')),
80
102
  ]),
81
- ], standalone: true, imports: [InteractiveContentDirective, NgTemplateOutlet], template: "<fieldset\r\n class=\"bg-grayscale-0 border border-grayscale-20 rounded-xbig mb-[10px] min-h-[4.5em] px-2 py-1.5 w-full min-w-0\"\r\n>\r\n <legend\r\n class=\"flex items-center text-grayscale-90 font-open-sans text-sm font-bold px-1 gap-1 ml-4 select-none\"\r\n [class.cursor-pointer]=\"toggleable\"\r\n (sInteractiveContent)=\"toggleActive($event)\"\r\n >\r\n @if (toggleable) {\r\n @if (active) {\r\n <i class=\"fas fa-plus\"></i>\r\n } @else {\r\n <i class=\"fas fa-minus\"></i>\r\n }\r\n }\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n } @else {\r\n @if (icon) {\r\n <i [class]=\"icon\"></i>\r\n }\r\n {{ legend }}\r\n }\r\n </legend>\r\n @if (destroyOnHide ? (toggleable ? active : true) : true) {\r\n <div [@toggleAnimation]=\"destroyOnHide ? null : active ? 'open' : 'closed'\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</fieldset>\r\n", styles: [":host{display:block}\n"] }]
82
- }], propDecorators: { legend: [{
83
- type: Input
84
- }], toggleable: [{
85
- type: Input
86
- }], icon: [{
87
- type: Input
88
- }], destroyOnHide: [{
89
- type: Input
90
- }], templateDirectives: [{
91
- type: ContentChildren,
92
- args: [TemplateDirective]
93
- }], beforeToggle: [{
103
+ ], standalone: true, imports: [InteractiveContentDirective, NgTemplateOutlet], template: "<fieldset\r\n class=\"mb-[10px] min-h-[4.5em] w-full min-w-0 rounded-xbig border border-grayscale-20 bg-grayscale-0 px-2 py-1.5\"\r\n>\r\n <legend\r\n class=\"ml-4 flex select-none items-center gap-1 px-1 font-open-sans text-sm font-bold text-grayscale-90\"\r\n [class.cursor-pointer]=\"toggleable()\"\r\n (sInteractiveContent)=\"toggleActive($event)\"\r\n >\r\n @if (toggleable()) {\r\n @if (active()) {\r\n <i class=\"fas fa-minus\"></i>\r\n } @else {\r\n <i class=\"fas fa-plus\"></i>\r\n }\r\n }\r\n @let _headerTemplate = headerTemplate();\r\n @if (_headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_headerTemplate\"></ng-container>\r\n } @else {\r\n @if (icon()) {\r\n <i [class]=\"icon()\"></i>\r\n }\r\n {{ legend() }}\r\n }\r\n </legend>\r\n @if (destroyOnHide() ? (toggleable() ? active() : true) : true) {\r\n <div\r\n [@toggleAnimation]=\"destroyOnHide() ? null : active() ? 'open' : 'closed'\"\r\n (@toggleAnimation.done)=\"onToggleAnimationDone($event)\"\r\n [class.overflow-hidden]=\"collapsed()\"\r\n >\r\n @let _bodyTemplate = bodyTemplate();\r\n @if (_bodyTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_bodyTemplate\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n }\r\n</fieldset>\r\n", styles: [":host{display:block}\n"] }]
104
+ }], propDecorators: { beforeToggle: [{
94
105
  type: Output
95
106
  }], afterToggle: [{
96
107
  type: Output
97
108
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVoRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQXVCSCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLHNFQUFzRTtJQUM3RCxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLHlHQUF5RztJQUNoRyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLGlHQUFpRztJQUN4RixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25CLGlHQUFpRztJQUN4RixhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ2Usa0JBQWtCLENBQTJDO0lBQzFHLGNBQWMsQ0FBK0I7SUFDN0Msa0dBQWtHO0lBQ3hGLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUM1RCxrRkFBa0Y7SUFDeEUsV0FBVyxHQUFHLElB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TyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDakQsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNqRCxVQUFVLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUN2RCxDQUFDO3FCQUNMLGNBQ1csSUFBSSxXQUNQLENBQUMsMkJBQTJCLEVBQUUsZ0JBQWdCLENBQUM7OEJBSS9DLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUN1QyxrQkFBa0I7c0JBQTlELGVBQWU7dUJBQUMsaUJBQWlCO2dCQUd4QixZQUFZO3NCQUFyQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgRmllbGRTZXRUb2dnbGUgfSBmcm9tICcuL2ZpZWxkc2V0Lm1vZGVscyc7XHJcbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29udGVudCc7XHJcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIGZpZWxkc2V0IGNvbSBsZWdlbmRhLCDDrWNvbmUgY29uZmlndXLDoXZlbCBlIHN1cG9ydGUgYVxyXG4gKiB0b2dnbGUgKHJlY29saGVyL2V4cGFuZGlyKSBjb20gYW5pbWHDp8Ojby4gU3Vwb3J0YSB0ZW1wbGF0ZSBwZXJzb25hbGl6YWRvIHBhcmEgb1xyXG4gKiBjYWJlw6dhbGhvIHZpYSBkaXJldGl2YSBgVGVtcGxhdGVEaXJlY3RpdmVgIGNvbSB0aXBvIGAnaGVhZGVyJ2AuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtZmllbGRzZXQgbGVnZW5kPVwiRGFkb3MgcGVzc29haXNcIiBbdG9nZ2xlYWJsZV09XCJ0cnVlXCI+XHJcbiAqICAgPHA+Q29udGXDumRvIGRvIGZpZWxkc2V0PC9wPlxyXG4gKiA8L3MtZmllbGRzZXQ+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1maWVsZHNldCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcclxuICAgIGFuaW1hdGlvbnM6IFtcclxuICAgICAgICB0cmlnZ2VyKCd0b2dnbGVBbmltYXRpb24nLCBbXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJyonIH0pKSxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnKicgfSksXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpLFxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJyonIH0pKSxcclxuICAgICAgICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA8PT4gY2xvc2VkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZScpKSxcclxuICAgICAgICBdKSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0ludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSwgTmdUZW1wbGF0ZU91dGxldF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZHNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIGNvbW8gdMOtdHVsbyBkbyBmaWVsZHNldC4gQGRlZmF1bHQgJycgKi9cclxuICAgIEBJbnB1dCgpIGxlZ2VuZCA9ICcnO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBvIGJvdMOjbyBkZSB0b2dnbGUgcXVlIHBlcm1pdGUgcmVjb2xoZXIgZSBleHBhbmRpciBvIGNvbnRlw7pkby4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpIHRvZ2dsZWFibGUgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRlIMOtY29uZSBleGliaWRhIGFvIGxhZG8gZGEgbGVnZW5kYSAoZXguOiBgJ2ZhcyBmYS1jb2cnYCkuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKSBpY29uID0gJyc7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIHJlbW92ZSBvIGNvbnRlw7pkbyBkbyBET00gYW8gcmVjb2xoZXIgbyBmaWVsZHNldC4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gICAgQElucHV0KCkgZGVzdHJveU9uSGlkZSA9IHRydWU7XHJcbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSByZWFkb25seSB0ZW1wbGF0ZURpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XHJcbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBpbWVkaWF0YW1lbnRlIGFudGVzIGRhIGFuaW1hw6fDo28gZGUgdG9nZ2xlIGluaWNpYXIsIGNvbSBvIGVzdGFkbyBhdHVhbC4gKi9cclxuICAgIEBPdXRwdXQoKSBiZWZvcmVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkU2V0VG9nZ2xlPigpO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGFww7NzIGEgYW5pbWHDp8OjbyBkZSB0b2dnbGUgY29uY2x1aXIsIGNvbSBvIG5vdm8gZXN0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpIGFmdGVyVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWVsZFNldFRvZ2dsZT4oKTtcclxuICAgIGFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlRGlyZWN0aXZlcz8uZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLnR5cGUgPT09ICdoZWFkZXInKT8udGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQWN0aXZlKG9yaWdpbmFsRXZlbnQ6IFBvaW50ZXJFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlYWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmVmb3JlVG9nZ2xlLm5leHQoeyBjb2xsYXBzZWQ6IHRoaXMuYWN0aXZlLCBvcmlnaW5hbEV2ZW50IH0pO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJUb2dnbGUubmV4dCh7IGNvbGxhcHNlZDogdGhpcy5hY3RpdmUsIG9yaWdpbmFsRXZlbnQgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZpZWxkc2V0XHJcbiAgICBjbGFzcz1cImJnLWdyYXlzY2FsZS0wIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTIwIHJvdW5kZWQteGJpZyBtYi1bMTBweF0gbWluLWgtWzQuNWVtXSBweC0yIHB5LTEuNSB3LWZ1bGwgbWluLXctMFwiXHJcbj5cclxuICAgIDxsZWdlbmRcclxuICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtZ3JheXNjYWxlLTkwIGZvbnQtb3Blbi1zYW5zIHRleHQtc20gZm9udC1ib2xkIHB4LTEgZ2FwLTEgbWwtNCBzZWxlY3Qtbm9uZVwiXHJcbiAgICAgICAgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cInRvZ2dsZWFibGVcIlxyXG4gICAgICAgIChzSW50ZXJhY3RpdmVDb250ZW50KT1cInRvZ2dsZUFjdGl2ZSgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgICBAaWYgKHRvZ2dsZWFibGUpIHtcclxuICAgICAgICAgICAgQGlmIChhY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChoZWFkZXJUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgQGlmIChpY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB7eyBsZWdlbmQgfX1cclxuICAgICAgICB9XHJcbiAgICA8L2xlZ2VuZD5cclxuICAgIEBpZiAoZGVzdHJveU9uSGlkZSA/ICh0b2dnbGVhYmxlID8gYWN0aXZlIDogdHJ1ZSkgOiB0cnVlKSB7XHJcbiAgICAgICAgPGRpdiBbQHRvZ2dsZUFuaW1hdGlvbl09XCJkZXN0cm95T25IaWRlID8gbnVsbCA6IGFjdGl2ZSA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9maWVsZHNldD5cclxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2ZpZWxkc2V0L3NyYy9saWIvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUVILFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBR2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBdUJILE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsc0VBQXNFO0lBQ3RFLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIseUdBQXlHO0lBQ3pHLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsaUdBQWlHO0lBQ2pHLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsa0dBQWtHO0lBQ2xHLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0Isa0JBQWtCLEdB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QztxQkFDTCxjQUNXLElBQUksV0FDUCxDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDOzhCQXFCOUMsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIGNvbXB1dGVkLFxyXG4gICAgY29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgaW5wdXQsXHJcbiAgICBtb2RlbCxcclxuICAgIE91dHB1dCxcclxuICAgIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ludGVyYWN0aXZlLWNvbnRlbnQnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xyXG5pbXBvcnQgeyBGaWVsZFNldFRvZ2dsZSB9IGZyb20gJy4vZmllbGRzZXQubW9kZWxzJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBmaWVsZHNldCBjb20gbGVnZW5kYSwgw61jb25lIGNvbmZpZ3Vyw6F2ZWwgZSBzdXBvcnRlIGFcclxuICogdG9nZ2xlIChyZWNvbGhlci9leHBhbmRpcikgY29tIGFuaW1hw6fDo28uIFN1cG9ydGEgdGVtcGxhdGVzIHBlcnNvbmFsaXphZG9zIHZpYVxyXG4gKiBkaXJldGl2YSBgVGVtcGxhdGVEaXJlY3RpdmVgLCBjb20gb3MgdGlwb3MgYCdoZWFkZXInYCAoc3Vic3RpdHVpIGEgbGVnZW5kYSkgZVxyXG4gKiBgJ2JvZHknYCAoY29udGXDumRvIGRvIGZpZWxkc2V0KS5cclxuICpcclxuICogUHJlZmlyYSBkZWNsYXJhciBvIGNvbnRlw7pkbyBlbSBgc1RlbXBsYXRlPVwiYm9keVwiYCBlbSB2ZXogZGUgcHJvamV0w6EtbG8gZGlyZXRvOlxyXG4gKiBvIGBuZy1jb250ZW50YCDDqSBpbnN0YW5jaWFkbyBwZWxvIGNvbXBvbmVudGUgcGFpIG1lc21vIGNvbSBvIGZpZWxkc2V0IHJlY29saGlkbyxcclxuICogZGlzcGFyYW5kbyBvIGBuZ09uSW5pdGAgZG9zIGZpbGhvcyBwcmVtYXR1cmFtZW50ZS4gTyB0ZW1wbGF0ZSBkZSBjb3JwbyBzw7Mgw6lcclxuICogaW5zdGFuY2lhZG8gcXVhbmRvIG8gZmllbGRzZXQgZXN0w6EgZGUgZmF0byBhdGl2bywgZSDDqSBvYnJpZ2F0w7NyaW8gcGFyYSBxdWVcclxuICogYGRlc3Ryb3lPbkhpZGVgIGZ1bmNpb25lLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLWZpZWxkc2V0IGxlZ2VuZD1cIkRhZG9zIHBlc3NvYWlzXCIgW3RvZ2dsZWFibGVdPVwidHJ1ZVwiPlxyXG4gKiAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAqICAgICA8cD5Db250ZcO6ZG8gZG8gZmllbGRzZXQ8L3A+XHJcbiAqICAgPC9uZy10ZW1wbGF0ZT5cclxuICogPC9zLWZpZWxkc2V0PlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtZmllbGRzZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkc2V0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcigndG9nZ2xlQW5pbWF0aW9uJywgW1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJyonIH0pLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKSxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgICAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPD0+IGNsb3NlZCcsIGFuaW1hdGUoJzMwMG1zIGVhc2UnKSksXHJcbiAgICAgICAgXSksXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmllbGRzZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gVGV4dG8gZXhpYmlkbyBjb21vIHTDrXR1bG8gZG8gZmllbGRzZXQuIEBkZWZhdWx0ICcnICovXHJcbiAgICBsZWdlbmQgPSBpbnB1dCgnJyk7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIG8gYm90w6NvIGRlIHRvZ2dsZSBxdWUgcGVybWl0ZSByZWNvbGhlciBlIGV4cGFuZGlyIG8gY29udGXDumRvLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgdG9nZ2xlYWJsZSA9IGlucHV0KGZhbHNlKTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRlIMOtY29uZSBleGliaWRhIGFvIGxhZG8gZGEgbGVnZW5kYSAoZXguOiBgJ2ZhcyBmYS1jb2cnYCkuIEBkZWZhdWx0ICcnICovXHJcbiAgICBpY29uID0gaW5wdXQoJycpO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCByZW1vdmUgbyBjb250ZcO6ZG8gZG8gRE9NIGFvIHJlY29saGVyIG8gZmllbGRzZXQuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBkZXN0cm95T25IaWRlID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIHRlbXBsYXRlRGlyZWN0aXZlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgICBoZWFkZXJUZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZURpcmVjdGl2ZXMoKT8uZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLnR5cGUgPT09ICdoZWFkZXInKT8udGVtcGxhdGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBib2R5VGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVEaXJlY3RpdmVzKCk/LmZpbmQoKHRlbXBsYXRlKSA9PiB0ZW1wbGF0ZS50eXBlID09PSAnYm9keScpPy50ZW1wbGF0ZTtcclxuICAgIH0pO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGltZWRpYXRhbWVudGUgYW50ZXMgZGEgYW5pbWHDp8OjbyBkZSB0b2dnbGUgaW5pY2lhciwgY29tIG8gZXN0YWRvIGF0dWFsLiAqL1xyXG4gICAgQE91dHB1dCgpIGJlZm9yZVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmllbGRTZXRUb2dnbGU+KCk7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gYXDDs3MgYSBhbmltYcOnw6NvIGRlIHRvZ2dsZSBjb25jbHVpciwgY29tIG8gbm92byBlc3RhZG8uICovXHJcbiAgICBAT3V0cHV0KCkgYWZ0ZXJUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkU2V0VG9nZ2xlPigpO1xyXG5cclxuICAgIGFjdGl2ZSA9IG1vZGVsKHRydWUpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gYHRydWVgIHF1YW5kbyBhIGFuaW1hw6fDo28gZGUgZmVjaGFtZW50byBqw6EgdGVybWlub3UsIGFwbGljYW5kbyBgb3ZlcmZsb3ctaGlkZGVuYCBhbyBjb250ZcO6ZG8uICovXHJcbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VkID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgY29uc3QgaGFzQm9keVRlbXBsYXRlID0gdGhpcy5ib2R5VGVtcGxhdGUoKTtcclxuICAgICAgICBpZiAoIWhhc0JvZHlUZW1wbGF0ZSAmJiB0aGlzLmRlc3Ryb3lPbkhpZGUoKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgICAgICAnRmllbGRzZXRDb21wb25lbnQ6IE8gdXNvIGRlIGRlc3Ryb3lPbkhpZGU9dHJ1ZSByZXF1ZXIgdW0gdGVtcGxhdGUgZGUgY29ycG8gZGVmaW5pZG8gY29tIHNUZW1wbGF0ZT1cImJvZHlcIi4nLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9nZ2xlQWN0aXZlKG9yaWdpbmFsRXZlbnQ6IFBvaW50ZXJFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlYWJsZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5iZWZvcmVUb2dnbGUubmV4dCh7IGNvbGxhcHNlZDogdGhpcy5hY3RpdmUoKSwgb3JpZ2luYWxFdmVudCB9KTtcclxuICAgICAgICB0aGlzLmFjdGl2ZS5zZXQoIXRoaXMuYWN0aXZlKCkpO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJUb2dnbGUubmV4dCh7IGNvbGxhcHNlZDogdGhpcy5hY3RpdmUoKSwgb3JpZ2luYWxFdmVudCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVBbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkLnNldChldmVudC50b1N0YXRlID09PSAnY2xvc2VkJyk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZpZWxkc2V0XHJcbiAgICBjbGFzcz1cIm1iLVsxMHB4XSBtaW4taC1bNC41ZW1dIHctZnVsbCBtaW4tdy0wIHJvdW5kZWQteGJpZyBib3JkZXIgYm9yZGVyLWdyYXlzY2FsZS0yMCBiZy1ncmF5c2NhbGUtMCBweC0yIHB5LTEuNVwiXHJcbj5cclxuICAgIDxsZWdlbmRcclxuICAgICAgICBjbGFzcz1cIm1sLTQgZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgZ2FwLTEgcHgtMSBmb250LW9wZW4tc2FucyB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LWdyYXlzY2FsZS05MFwiXHJcbiAgICAgICAgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cInRvZ2dsZWFibGUoKVwiXHJcbiAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwidG9nZ2xlQWN0aXZlKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICAgIEBpZiAodG9nZ2xlYWJsZSgpKSB7XHJcbiAgICAgICAgICAgIEBpZiAoYWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXNcIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGxldCBfaGVhZGVyVGVtcGxhdGUgPSBoZWFkZXJUZW1wbGF0ZSgpO1xyXG4gICAgICAgIEBpZiAoX2hlYWRlclRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgQGlmIChpY29uKCkpIHtcclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpY29uKClcIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAge3sgbGVnZW5kKCkgfX1cclxuICAgICAgICB9XHJcbiAgICA8L2xlZ2VuZD5cclxuICAgIEBpZiAoZGVzdHJveU9uSGlkZSgpID8gKHRvZ2dsZWFibGUoKSA/IGFjdGl2ZSgpIDogdHJ1ZSkgOiB0cnVlKSB7XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbQHRvZ2dsZUFuaW1hdGlvbl09XCJkZXN0cm95T25IaWRlKCkgPyBudWxsIDogYWN0aXZlKCkgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgICAgICAgICAgIChAdG9nZ2xlQW5pbWF0aW9uLmRvbmUpPVwib25Ub2dnbGVBbmltYXRpb25Eb25lKCRldmVudClcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3ZlcmZsb3ctaGlkZGVuXT1cImNvbGxhcHNlZCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEBsZXQgX2JvZHlUZW1wbGF0ZSA9IGJvZHlUZW1wbGF0ZSgpO1xyXG4gICAgICAgICAgICBAaWYgKF9ib2R5VGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfYm9keVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvZmllbGRzZXQ+XHJcbiJdfQ==
@@ -11,6 +11,8 @@ import { SpotlightTourService } from '@seniorsistemas/angular-components/spotlig
11
11
  import { takeUntil, Subject, delay } from 'rxjs';
12
12
  import * as i1$2 from '@seniorsistemas/angular-components/fieldset';
13
13
  import { FieldsetModule } from '@seniorsistemas/angular-components/fieldset';
14
+ import * as i12 from '@seniorsistemas/angular-components/template';
15
+ import { TemplateDirective, TemplateModule } from '@seniorsistemas/angular-components/template';
14
16
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
15
17
  import * as i3$1 from '@seniorsistemas/angular-components/tooltip';
16
18
  import { TooltipDirective, TooltipModule } from '@seniorsistemas/angular-components/tooltip';
@@ -33,8 +35,6 @@ import { MaskFormatterModule } from '@seniorsistemas/angular-components/mask';
33
35
  import { CheckDisabled } from '@seniorsistemas/angular-components/shared';
34
36
  import * as i11 from '@seniorsistemas/angular-components/table-header';
35
37
  import { TableHeaderCheckboxModule } from '@seniorsistemas/angular-components/table-header';
36
- import * as i12 from '@seniorsistemas/angular-components/template';
37
- import { TemplateModule } from '@seniorsistemas/angular-components/template';
38
38
  import { HotkeysService, Hotkey } from 'angular2-hotkeys';
39
39
  import BigNumber from 'bignumber.js';
40
40
  import * as i1$3 from 'primeng/autocomplete';
@@ -376,11 +376,11 @@ class FieldsetComponent {
376
376
  group = input.required();
377
377
  errorMessages = input();
378
378
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
379
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (onBeforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (onAfterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n</s-fieldset>\n\n", dependencies: [{ kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i1$2.FieldsetComponent, selector: "s-fieldset", inputs: ["legend", "toggleable", "icon", "destroyOnHide"], outputs: ["beforeToggle", "afterToggle"] }] });
379
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldsetComponent, isStandalone: true, selector: "ng-component", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n", dependencies: [{ kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i1$2.FieldsetComponent, selector: "s-fieldset", inputs: ["legend", "toggleable", "icon", "destroyOnHide", "active"], outputs: ["beforeToggle", "afterToggle", "activeChange"] }, { kind: "directive", type: TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }] });
380
380
  }
381
381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, decorators: [{
382
382
  type: Component,
383
- args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (onBeforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (onAfterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n</s-fieldset>\n\n" }]
383
+ args: [{ standalone: true, imports: [DynamicFormDirective, FieldsetModule, TemplateDirective], template: "@let _config = config();\n<s-fieldset\n [toggleable]=\"true\"\n (beforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n (afterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n [legend]=\"_config.header ? _config.header : ''\"\n>\n <ng-template sTemplate=\"body\">\n @for (conf of _config.configs; let i = $index; track i) {\n <ng-container\n *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n ></ng-container>\n }\n </ng-template>\n</s-fieldset>\n\n" }]
384
384
  }] });
385
385
 
386
386
  class SectionComponent {