@seniorsistemas/angular-components 19.7.4 → 19.7.5
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/alert/lib/alert/alert.component.d.ts +8 -1
- package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +7 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +1 -1
- package/dynamic-form/public-api.d.ts +1 -1
- package/esm2022/alert/lib/alert/alert.component.mjs +12 -6
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
- package/esm2022/dynamic-form/public-api.mjs +1 -1
- package/esm2022/panel/lib/panel/panel.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +12 -6
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
- package/package.json +13 -13
- package/schematics/migrations/migrate-steps-to-stepper/index.d.ts +2 -0
- package/schematics/migrations/migrate-steps-to-stepper/index.js +104 -0
- package/schematics/migrations/migrate-steps-to-stepper/index.js.map +1 -0
- package/schematics/migrations.json +5 -0
- package/schematics/utils/ast-utils.d.ts +13 -0
- package/schematics/utils/ast-utils.js +76 -0
- package/schematics/utils/ast-utils.js.map +1 -1
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.js +0 -888
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.js.map +0 -1
- package/schematics/migrations/migrate-p-datepicker/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-p-datepicker/index.test.js +0 -392
- package/schematics/migrations/migrate-p-datepicker/index.test.js.map +0 -1
- package/schematics/migrations/migrate-p-editor/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-p-editor/index.test.js +0 -393
- package/schematics/migrations/migrate-p-editor/index.test.js.map +0 -1
- package/schematics/migrations/migrate-s-chips-outputs/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-s-chips-outputs/index.test.js +0 -125
- package/schematics/migrations/migrate-s-chips-outputs/index.test.js.map +0 -1
- package/schematics/utils/ast-utils.test.d.ts +0 -1
- package/schematics/utils/ast-utils.test.js +0 -138
- package/schematics/utils/ast-utils.test.js.map +0 -1
- package/schematics/utils/workspace-utils.test.d.ts +0 -1
- package/schematics/utils/workspace-utils.test.js +0 -152
- package/schematics/utils/workspace-utils.test.js.map +0 -1
|
@@ -73,7 +73,7 @@ class PanelComponent {
|
|
|
73
73
|
this.footerTemplate = this._getFooterTemplate();
|
|
74
74
|
}
|
|
75
75
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "s-panel", inputs: { ariaHeaderLevel: "ariaHeaderLevel", header: "header", description: "description", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", class: "class" }, outputs: { collapsedChange: "collapsedChange" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div\n class=\"relative border border-[#dedce5] bg-grayscale-0 p-5 transition-colors duration-500 ease-in-out\"\n [class]=\"class\"\n [ngClass]=\"{\n 'border-criticality-green': severity === EnumSeverity.Success,\n 'border-criticality-blue': severity === EnumSeverity.Info,\n 'border-criticality-orange': severity === EnumSeverity.Warn,\n 'border-criticality-red': severity === EnumSeverity.Error,\n }\"\n>\n @if (borderButtonOptions && borderButtonOptions.visible?.(severity)) {\n <s-border-button\n [severity]=\"severity\"\n [options]=\"borderButtonOptions\"\n class=\"absolute -top-3 right-[15px] z-10\"\n [@BorderButtonAnimation]\n >\n </s-border-button>\n }\n\n @if (header || headerTemplate) {\n <div\n class=\"flex justify-between\"\n [ngClass]=\"{ 'mb-3 border-b border-b-[#dedce5] pb-3': !collapsed }\"\n >\n <div class=\"grow\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <div class=\"flex flex-col gap-3\">\n <span\n class=\"uppercase\"\n role=\"heading\"\n [attr.aria-level]=\"ariaHeaderLevel\"\n >{{ header }}</span\n >\n @if (description) {\n <span class=\"text-sm text-grayscale-60\">{{ description }}</span>\n }\n </div>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"fas h-6 w-6 cursor-pointer border-none bg-transparent text-[#212533]\"\n [ngClass]=\"{\n 'fa-plus': collapsed,\n 'fa-minus': !collapsed,\n }\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"collapsed ? null : panelBodyId\"\n [attr.aria-label]=\"'platform.angular_components.panel_toggle' | translate: { header: header || '' }\"\n (click)=\"toggleCollapsed()\"\n ></button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div [id]=\"panelBodyId\">\n <div>\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </div>\n\n @if (footerTemplate) {\n <div class=\"border-t border-t-[#dedce5] pt-3\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BorderButtonComponent, selector: "s-border-button", inputs: ["severity", "options"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], animations: [
|
|
76
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PanelComponent, isStandalone: true, selector: "s-panel", inputs: { ariaHeaderLevel: "ariaHeaderLevel", header: "header", description: "description", toggleable: "toggleable", collapsed: "collapsed", severity: "severity", borderButtonOptions: "borderButtonOptions", class: "class" }, outputs: { collapsedChange: "collapsedChange" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div\n class=\"relative border border-[#dedce5] bg-grayscale-0 p-5 transition-colors duration-500 ease-in-out\"\n [class]=\"class\"\n [ngClass]=\"{\n 'border-criticality-green': severity === EnumSeverity.Success,\n 'border-criticality-blue': severity === EnumSeverity.Info,\n 'border-criticality-orange': severity === EnumSeverity.Warn,\n 'border-criticality-red': severity === EnumSeverity.Error,\n }\"\n>\n @if (borderButtonOptions && borderButtonOptions.visible?.(severity)) {\n <s-border-button\n [severity]=\"severity\"\n [options]=\"borderButtonOptions\"\n class=\"absolute -top-3 right-[15px] z-10\"\n [@BorderButtonAnimation]\n >\n </s-border-button>\n }\n\n @if (header || headerTemplate) {\n <div\n class=\"flex justify-between\"\n [ngClass]=\"{ 'mb-3 border-b border-b-[#dedce5] pb-3': !collapsed }\"\n >\n <div class=\"grow\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <div class=\"flex flex-col gap-3\">\n <span\n class=\"uppercase\"\n role=\"heading\"\n [attr.aria-level]=\"ariaHeaderLevel\"\n >{{ header }}</span\n >\n @if (description) {\n <span class=\"text-sm text-grayscale-60\">{{ description }}</span>\n }\n </div>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"fas h-6 w-6 cursor-pointer border-none bg-transparent text-[#212533]\"\n [ngClass]=\"{\n 'fa-plus': collapsed,\n 'fa-minus': !collapsed,\n }\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"collapsed ? null : panelBodyId\"\n [attr.aria-label]=\"'platform.angular_components.panel_toggle' | translate: { header: header || '' }\"\n (click)=\"toggleCollapsed()\"\n ></button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div [id]=\"panelBodyId\">\n <div [class.pb-3]=\"footerTemplate\">\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </div>\n\n @if (footerTemplate) {\n <div class=\"border-t border-t-[#dedce5] pt-3\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BorderButtonComponent, selector: "s-border-button", inputs: ["severity", "options"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], animations: [
|
|
77
77
|
trigger('BorderButtonAnimation', [
|
|
78
78
|
transition(':enter', [
|
|
79
79
|
style({ transform: 'scaleY(0)', opacity: 0 }),
|
|
@@ -99,7 +99,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
99
99
|
animate('300ms ease', style({ transform: 'scaleY(0)', opacity: 0 })),
|
|
100
100
|
]),
|
|
101
101
|
]),
|
|
102
|
-
], standalone: true, imports: [NgClass, BorderButtonComponent, NgTemplateOutlet, TranslateModule], template: "<div\n class=\"relative border border-[#dedce5] bg-grayscale-0 p-5 transition-colors duration-500 ease-in-out\"\n [class]=\"class\"\n [ngClass]=\"{\n 'border-criticality-green': severity === EnumSeverity.Success,\n 'border-criticality-blue': severity === EnumSeverity.Info,\n 'border-criticality-orange': severity === EnumSeverity.Warn,\n 'border-criticality-red': severity === EnumSeverity.Error,\n }\"\n>\n @if (borderButtonOptions && borderButtonOptions.visible?.(severity)) {\n <s-border-button\n [severity]=\"severity\"\n [options]=\"borderButtonOptions\"\n class=\"absolute -top-3 right-[15px] z-10\"\n [@BorderButtonAnimation]\n >\n </s-border-button>\n }\n\n @if (header || headerTemplate) {\n <div\n class=\"flex justify-between\"\n [ngClass]=\"{ 'mb-3 border-b border-b-[#dedce5] pb-3': !collapsed }\"\n >\n <div class=\"grow\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <div class=\"flex flex-col gap-3\">\n <span\n class=\"uppercase\"\n role=\"heading\"\n [attr.aria-level]=\"ariaHeaderLevel\"\n >{{ header }}</span\n >\n @if (description) {\n <span class=\"text-sm text-grayscale-60\">{{ description }}</span>\n }\n </div>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"fas h-6 w-6 cursor-pointer border-none bg-transparent text-[#212533]\"\n [ngClass]=\"{\n 'fa-plus': collapsed,\n 'fa-minus': !collapsed,\n }\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"collapsed ? null : panelBodyId\"\n [attr.aria-label]=\"'platform.angular_components.panel_toggle' | translate: { header: header || '' }\"\n (click)=\"toggleCollapsed()\"\n ></button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div [id]=\"panelBodyId\">\n <div>\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </div>\n\n @if (footerTemplate) {\n <div class=\"border-t border-t-[#dedce5] pt-3\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n </div>\n }\n</div>\n\n" }]
|
|
102
|
+
], standalone: true, imports: [NgClass, BorderButtonComponent, NgTemplateOutlet, TranslateModule], template: "<div\n class=\"relative border border-[#dedce5] bg-grayscale-0 p-5 transition-colors duration-500 ease-in-out\"\n [class]=\"class\"\n [ngClass]=\"{\n 'border-criticality-green': severity === EnumSeverity.Success,\n 'border-criticality-blue': severity === EnumSeverity.Info,\n 'border-criticality-orange': severity === EnumSeverity.Warn,\n 'border-criticality-red': severity === EnumSeverity.Error,\n }\"\n>\n @if (borderButtonOptions && borderButtonOptions.visible?.(severity)) {\n <s-border-button\n [severity]=\"severity\"\n [options]=\"borderButtonOptions\"\n class=\"absolute -top-3 right-[15px] z-10\"\n [@BorderButtonAnimation]\n >\n </s-border-button>\n }\n\n @if (header || headerTemplate) {\n <div\n class=\"flex justify-between\"\n [ngClass]=\"{ 'mb-3 border-b border-b-[#dedce5] pb-3': !collapsed }\"\n >\n <div class=\"grow\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <div class=\"flex flex-col gap-3\">\n <span\n class=\"uppercase\"\n role=\"heading\"\n [attr.aria-level]=\"ariaHeaderLevel\"\n >{{ header }}</span\n >\n @if (description) {\n <span class=\"text-sm text-grayscale-60\">{{ description }}</span>\n }\n </div>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"fas h-6 w-6 cursor-pointer border-none bg-transparent text-[#212533]\"\n [ngClass]=\"{\n 'fa-plus': collapsed,\n 'fa-minus': !collapsed,\n }\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"collapsed ? null : panelBodyId\"\n [attr.aria-label]=\"'platform.angular_components.panel_toggle' | translate: { header: header || '' }\"\n (click)=\"toggleCollapsed()\"\n ></button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div [id]=\"panelBodyId\">\n <div [class.pb-3]=\"footerTemplate\">\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </div>\n\n @if (footerTemplate) {\n <div class=\"border-t border-t-[#dedce5] pt-3\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n </div>\n }\n</div>\n\n" }]
|
|
103
103
|
}], propDecorators: { ariaHeaderLevel: [{
|
|
104
104
|
type: Input
|
|
105
105
|
}], header: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-panel.mjs","sources":["../../projects/angular-components/panel/src/lib/panel/panel.component.ts","../../projects/angular-components/panel/src/lib/panel/panel.component.html","../../projects/angular-components/panel/src/lib/panel/panel.module.ts","../../projects/angular-components/panel/src/seniorsistemas-angular-components-panel.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n BorderButtonOptions,\r\n EnumSeverity,\r\n Severities,\r\n BorderButtonComponent,\r\n} from '@seniorsistemas/angular-components/shared';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * @description Componente de painel com cabeçalho, corpo e rodapé customizáveis\r\n * via `TemplateDirective`. Suporta colapsar/expandir com animação, nível de\r\n * severidade para estilo visual e botão de borda configurável.\r\n *\r\n * @example\r\n * ```html\r\n * <s-panel header=\"Título\" [toggleable]=\"true\" severity=\"info\">\r\n * <p>Conteúdo</p>\r\n * </s-panel>\r\n * ```\r\n *\r\n * @category Data\r\n */\r\n@Component({\r\n selector: 's-panel',\r\n templateUrl: './panel.component.html',\r\n animations: [\r\n trigger('BorderButtonAnimation', [\r\n transition(':enter', [\r\n style({ transform: 'scaleY(0)', opacity: 0 }),\r\n animate('300ms ease', style({ transform: 'scaleY(1)', opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('300ms ease', style({ transform: 'scaleY(0)', opacity: 0 })),\r\n ]),\r\n ]),\r\n ],\r\n standalone: true,\r\n imports: [NgClass, BorderButtonComponent, NgTemplateOutlet, TranslateModule],\r\n})\r\nexport class PanelComponent implements AfterContentInit {\r\n private static _idCounter = 0;\r\n\r\n /** @description ID único gerado automaticamente para associar o botão toggle ao corpo do painel via aria-controls. */\r\n public readonly panelBodyId = `panel-body-${++PanelComponent._idCounter}`;\r\n\r\n /** @description Nível do heading do cabeçalho para acessibilidade (aria-level). @default 3 */\r\n @Input()\r\n public ariaHeaderLevel: number = 3;\r\n\r\n /** @description Título exibido no cabeçalho do painel. */\r\n @Input()\r\n public header?: string;\r\n\r\n /** @description Descrição exibida no cabeçalho do painel. */\r\n @Input()\r\n public description?: string;\r\n\r\n /** @description Habilita o botão de toggle para colapsar/expandir o painel. @default false */\r\n @Input()\r\n public toggleable = false;\r\n\r\n /** @description Define o estado inicial do painel como colapsado. @default false */\r\n @Input()\r\n public collapsed = false;\r\n\r\n /** @description Nível de severidade que altera o estilo visual do painel. @default 'default' */\r\n @Input()\r\n public severity: Severities = 'default';\r\n\r\n /** @description Opções de configuração do botão de borda lateral do painel. */\r\n @Input()\r\n public borderButtonOptions?: BorderButtonOptions;\r\n\r\n /** @description Classes CSS adicionais aplicadas ao elemento raíz do painel. @default '' */\r\n @Input()\r\n public class: string = '';\r\n\r\n /** @description Emitido quando o estado de colapso muda, com o novo valor booleano. */\r\n @Output()\r\n public collapsedChange = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(TemplateDirective)\r\n public templates: QueryList<TemplateDirective> | null = null;\r\n\r\n public headerTemplate: TemplateRef<unknown> | null = null;\r\n\r\n public bodyTemplate: TemplateRef<unknown> | null = null;\r\n\r\n public footerTemplate: TemplateRef<unknown> | null = null;\r\n\r\n readonly EnumSeverity = EnumSeverity;\r\n\r\n public ngAfterContentInit(): void {\r\n this._getTemplates();\r\n }\r\n\r\n public toggleCollapsed(): void {\r\n this.collapsed = !this.collapsed;\r\n this.collapsedChange.emit(this.collapsed);\r\n }\r\n\r\n private _getCustomTemplate(type: string) {\r\n return this.templates?.find((template: TemplateDirective) => template.type === type)?.template;\r\n }\r\n\r\n private _getHeaderTemplate(): TemplateRef<unknown> | null {\r\n return this._getCustomTemplate('header') ?? null;\r\n }\r\n\r\n private _getBodyTemplate(): TemplateRef<unknown> | null {\r\n return this._getCustomTemplate('body') ?? null;\r\n }\r\n\r\n private _getFooterTemplate(): TemplateRef<unknown> | null {\r\n return this._getCustomTemplate('footer') ?? null;\r\n }\r\n\r\n private _getTemplates(): void {\r\n this.headerTemplate = this._getHeaderTemplate();\r\n this.bodyTemplate = this._getBodyTemplate();\r\n this.footerTemplate = this._getFooterTemplate();\r\n }\r\n}\r\n","<div\n class=\"relative border border-[#dedce5] bg-grayscale-0 p-5 transition-colors duration-500 ease-in-out\"\n [class]=\"class\"\n [ngClass]=\"{\n 'border-criticality-green': severity === EnumSeverity.Success,\n 'border-criticality-blue': severity === EnumSeverity.Info,\n 'border-criticality-orange': severity === EnumSeverity.Warn,\n 'border-criticality-red': severity === EnumSeverity.Error,\n }\"\n>\n @if (borderButtonOptions && borderButtonOptions.visible?.(severity)) {\n <s-border-button\n [severity]=\"severity\"\n [options]=\"borderButtonOptions\"\n class=\"absolute -top-3 right-[15px] z-10\"\n [@BorderButtonAnimation]\n >\n </s-border-button>\n }\n\n @if (header || headerTemplate) {\n <div\n class=\"flex justify-between\"\n [ngClass]=\"{ 'mb-3 border-b border-b-[#dedce5] pb-3': !collapsed }\"\n >\n <div class=\"grow\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <div class=\"flex flex-col gap-3\">\n <span\n class=\"uppercase\"\n role=\"heading\"\n [attr.aria-level]=\"ariaHeaderLevel\"\n >{{ header }}</span\n >\n @if (description) {\n <span class=\"text-sm text-grayscale-60\">{{ description }}</span>\n }\n </div>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"fas h-6 w-6 cursor-pointer border-none bg-transparent text-[#212533]\"\n [ngClass]=\"{\n 'fa-plus': collapsed,\n 'fa-minus': !collapsed,\n }\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"collapsed ? null : panelBodyId\"\n [attr.aria-label]=\"'platform.angular_components.panel_toggle' | translate: { header: header || '' }\"\n (click)=\"toggleCollapsed()\"\n ></button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div [id]=\"panelBodyId\">\n <div>\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </div>\n\n @if (footerTemplate) {\n <div class=\"border-t border-t-[#dedce5] pt-3\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n </div>\n }\n</div>\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { PanelComponent } from './panel.component';\r\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\r\n\r\n@NgModule({\r\n imports: [PanelComponent],\r\n exports: [PanelComponent, TemplateModule],\r\n})\r\nexport class PanelModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-panel.mjs","sources":["../../projects/angular-components/panel/src/lib/panel/panel.component.ts","../../projects/angular-components/panel/src/lib/panel/panel.component.html","../../projects/angular-components/panel/src/lib/panel/panel.module.ts","../../projects/angular-components/panel/src/seniorsistemas-angular-components-panel.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n BorderButtonOptions,\r\n EnumSeverity,\r\n Severities,\r\n BorderButtonComponent,\r\n} from '@seniorsistemas/angular-components/shared';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * @description Componente de painel com cabeçalho, corpo e rodapé customizáveis\r\n * via `TemplateDirective`. Suporta colapsar/expandir com animação, nível de\r\n * severidade para estilo visual e botão de borda configurável.\r\n *\r\n * @example\r\n * ```html\r\n * <s-panel header=\"Título\" [toggleable]=\"true\" severity=\"info\">\r\n * <p>Conteúdo</p>\r\n * </s-panel>\r\n * ```\r\n *\r\n * @category Data\r\n */\r\n@Component({\r\n selector: 's-panel',\r\n templateUrl: './panel.component.html',\r\n animations: [\r\n trigger('BorderButtonAnimation', [\r\n transition(':enter', [\r\n style({ transform: 'scaleY(0)', opacity: 0 }),\r\n animate('300ms ease', style({ transform: 'scaleY(1)', opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'scaleY(1)', opacity: 1 }),\r\n animate('300ms ease', style({ transform: 'scaleY(0)', opacity: 0 })),\r\n ]),\r\n ]),\r\n ],\r\n standalone: true,\r\n imports: [NgClass, BorderButtonComponent, NgTemplateOutlet, TranslateModule],\r\n})\r\nexport class PanelComponent implements AfterContentInit {\r\n private static _idCounter = 0;\r\n\r\n /** @description ID único gerado automaticamente para associar o botão toggle ao corpo do painel via aria-controls. */\r\n public readonly panelBodyId = `panel-body-${++PanelComponent._idCounter}`;\r\n\r\n /** @description Nível do heading do cabeçalho para acessibilidade (aria-level). @default 3 */\r\n @Input()\r\n public ariaHeaderLevel: number = 3;\r\n\r\n /** @description Título exibido no cabeçalho do painel. */\r\n @Input()\r\n public header?: string;\r\n\r\n /** @description Descrição exibida no cabeçalho do painel. */\r\n @Input()\r\n public description?: string;\r\n\r\n /** @description Habilita o botão de toggle para colapsar/expandir o painel. @default false */\r\n @Input()\r\n public toggleable = false;\r\n\r\n /** @description Define o estado inicial do painel como colapsado. @default false */\r\n @Input()\r\n public collapsed = false;\r\n\r\n /** @description Nível de severidade que altera o estilo visual do painel. @default 'default' */\r\n @Input()\r\n public severity: Severities = 'default';\r\n\r\n /** @description Opções de configuração do botão de borda lateral do painel. */\r\n @Input()\r\n public borderButtonOptions?: BorderButtonOptions;\r\n\r\n /** @description Classes CSS adicionais aplicadas ao elemento raíz do painel. @default '' */\r\n @Input()\r\n public class: string = '';\r\n\r\n /** @description Emitido quando o estado de colapso muda, com o novo valor booleano. */\r\n @Output()\r\n public collapsedChange = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(TemplateDirective)\r\n public templates: QueryList<TemplateDirective> | null = null;\r\n\r\n public headerTemplate: TemplateRef<unknown> | null = null;\r\n\r\n public bodyTemplate: TemplateRef<unknown> | null = null;\r\n\r\n public footerTemplate: TemplateRef<unknown> | null = null;\r\n\r\n readonly EnumSeverity = EnumSeverity;\r\n\r\n public ngAfterContentInit(): void {\r\n this._getTemplates();\r\n }\r\n\r\n public toggleCollapsed(): void {\r\n this.collapsed = !this.collapsed;\r\n this.collapsedChange.emit(this.collapsed);\r\n }\r\n\r\n private _getCustomTemplate(type: string) {\r\n return this.templates?.find((template: TemplateDirective) => template.type === type)?.template;\r\n }\r\n\r\n private _getHeaderTemplate(): TemplateRef<unknown> | null {\r\n return this._getCustomTemplate('header') ?? null;\r\n }\r\n\r\n private _getBodyTemplate(): TemplateRef<unknown> | null {\r\n return this._getCustomTemplate('body') ?? null;\r\n }\r\n\r\n private _getFooterTemplate(): TemplateRef<unknown> | null {\r\n return this._getCustomTemplate('footer') ?? null;\r\n }\r\n\r\n private _getTemplates(): void {\r\n this.headerTemplate = this._getHeaderTemplate();\r\n this.bodyTemplate = this._getBodyTemplate();\r\n this.footerTemplate = this._getFooterTemplate();\r\n }\r\n}\r\n","<div\n class=\"relative border border-[#dedce5] bg-grayscale-0 p-5 transition-colors duration-500 ease-in-out\"\n [class]=\"class\"\n [ngClass]=\"{\n 'border-criticality-green': severity === EnumSeverity.Success,\n 'border-criticality-blue': severity === EnumSeverity.Info,\n 'border-criticality-orange': severity === EnumSeverity.Warn,\n 'border-criticality-red': severity === EnumSeverity.Error,\n }\"\n>\n @if (borderButtonOptions && borderButtonOptions.visible?.(severity)) {\n <s-border-button\n [severity]=\"severity\"\n [options]=\"borderButtonOptions\"\n class=\"absolute -top-3 right-[15px] z-10\"\n [@BorderButtonAnimation]\n >\n </s-border-button>\n }\n\n @if (header || headerTemplate) {\n <div\n class=\"flex justify-between\"\n [ngClass]=\"{ 'mb-3 border-b border-b-[#dedce5] pb-3': !collapsed }\"\n >\n <div class=\"grow\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <div class=\"flex flex-col gap-3\">\n <span\n class=\"uppercase\"\n role=\"heading\"\n [attr.aria-level]=\"ariaHeaderLevel\"\n >{{ header }}</span\n >\n @if (description) {\n <span class=\"text-sm text-grayscale-60\">{{ description }}</span>\n }\n </div>\n }\n </div>\n\n @if (toggleable) {\n <button\n type=\"button\"\n class=\"fas h-6 w-6 cursor-pointer border-none bg-transparent text-[#212533]\"\n [ngClass]=\"{\n 'fa-plus': collapsed,\n 'fa-minus': !collapsed,\n }\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"collapsed ? null : panelBodyId\"\n [attr.aria-label]=\"'platform.angular_components.panel_toggle' | translate: { header: header || '' }\"\n (click)=\"toggleCollapsed()\"\n ></button>\n }\n </div>\n }\n\n @if (!toggleable || !collapsed) {\n <div [id]=\"panelBodyId\">\n <div [class.pb-3]=\"footerTemplate\">\n <ng-content></ng-content>\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </div>\n\n @if (footerTemplate) {\n <div class=\"border-t border-t-[#dedce5] pt-3\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n </div>\n }\n</div>\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { PanelComponent } from './panel.component';\r\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\r\n\r\n@NgModule({\r\n imports: [PanelComponent],\r\n exports: [PanelComponent, TemplateModule],\r\n})\r\nexport class PanelModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seniorsistemas/angular-components",
|
|
3
|
-
"version": "19.7.
|
|
3
|
+
"version": "19.7.5",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "^18.2.14",
|
|
6
6
|
"@angular/common": "^18.2.0",
|
|
@@ -115,18 +115,18 @@
|
|
|
115
115
|
"esm": "./esm2022/badge/seniorsistemas-angular-components-badge.mjs",
|
|
116
116
|
"default": "./fesm2022/seniorsistemas-angular-components-badge.mjs"
|
|
117
117
|
},
|
|
118
|
-
"./breadcrumb": {
|
|
119
|
-
"types": "./breadcrumb/index.d.ts",
|
|
120
|
-
"esm2022": "./esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs",
|
|
121
|
-
"esm": "./esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs",
|
|
122
|
-
"default": "./fesm2022/seniorsistemas-angular-components-breadcrumb.mjs"
|
|
123
|
-
},
|
|
124
118
|
"./bignumber-input": {
|
|
125
119
|
"types": "./bignumber-input/index.d.ts",
|
|
126
120
|
"esm2022": "./esm2022/bignumber-input/seniorsistemas-angular-components-bignumber-input.mjs",
|
|
127
121
|
"esm": "./esm2022/bignumber-input/seniorsistemas-angular-components-bignumber-input.mjs",
|
|
128
122
|
"default": "./fesm2022/seniorsistemas-angular-components-bignumber-input.mjs"
|
|
129
123
|
},
|
|
124
|
+
"./breadcrumb": {
|
|
125
|
+
"types": "./breadcrumb/index.d.ts",
|
|
126
|
+
"esm2022": "./esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs",
|
|
127
|
+
"esm": "./esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs",
|
|
128
|
+
"default": "./fesm2022/seniorsistemas-angular-components-breadcrumb.mjs"
|
|
129
|
+
},
|
|
130
130
|
"./button": {
|
|
131
131
|
"types": "./button/index.d.ts",
|
|
132
132
|
"esm2022": "./esm2022/button/seniorsistemas-angular-components-button.mjs",
|
|
@@ -511,6 +511,12 @@
|
|
|
511
511
|
"esm": "./esm2022/slide-in-bar/seniorsistemas-angular-components-slide-in-bar.mjs",
|
|
512
512
|
"default": "./fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs"
|
|
513
513
|
},
|
|
514
|
+
"./slider": {
|
|
515
|
+
"types": "./slider/index.d.ts",
|
|
516
|
+
"esm2022": "./esm2022/slider/seniorsistemas-angular-components-slider.mjs",
|
|
517
|
+
"esm": "./esm2022/slider/seniorsistemas-angular-components-slider.mjs",
|
|
518
|
+
"default": "./fesm2022/seniorsistemas-angular-components-slider.mjs"
|
|
519
|
+
},
|
|
514
520
|
"./speech-recognition": {
|
|
515
521
|
"types": "./speech-recognition/index.d.ts",
|
|
516
522
|
"esm2022": "./esm2022/speech-recognition/seniorsistemas-angular-components-speech-recognition.mjs",
|
|
@@ -529,12 +535,6 @@
|
|
|
529
535
|
"esm": "./esm2022/spotlight/seniorsistemas-angular-components-spotlight.mjs",
|
|
530
536
|
"default": "./fesm2022/seniorsistemas-angular-components-spotlight.mjs"
|
|
531
537
|
},
|
|
532
|
-
"./slider": {
|
|
533
|
-
"types": "./slider/index.d.ts",
|
|
534
|
-
"esm2022": "./esm2022/slider/seniorsistemas-angular-components-slider.mjs",
|
|
535
|
-
"esm": "./esm2022/slider/seniorsistemas-angular-components-slider.mjs",
|
|
536
|
-
"default": "./fesm2022/seniorsistemas-angular-components-slider.mjs"
|
|
537
|
-
},
|
|
538
538
|
"./star-rating": {
|
|
539
539
|
"types": "./star-rating/index.d.ts",
|
|
540
540
|
"esm2022": "./esm2022/star-rating/seniorsistemas-angular-components-star-rating.mjs",
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.migrate = migrate;
|
|
4
|
+
const ts = require("typescript");
|
|
5
|
+
const ast_utils_1 = require("../../utils/ast-utils");
|
|
6
|
+
const html_utils_1 = require("../../utils/html-utils");
|
|
7
|
+
const STEPS_MODULE = '@seniorsistemas/angular-components/steps';
|
|
8
|
+
const STEPPER_MODULE = '@seniorsistemas/angular-components/stepper';
|
|
9
|
+
// v18 name -> v19 name. Names absent from this map keep their original name (Step, StepState, StepSelectionEvent).
|
|
10
|
+
const RENAMED_SYMBOLS = {
|
|
11
|
+
StepsComponent: 'StepperComponent',
|
|
12
|
+
};
|
|
13
|
+
// StepperComponent is standalone now — the wrapper module is dropped; its usages become StepperComponent directly.
|
|
14
|
+
const DROPPED_MODULE_SYMBOL = 'StepsModule';
|
|
15
|
+
const ALL_IMPORT_NAMES = [
|
|
16
|
+
...Object.keys(RENAMED_SYMBOLS),
|
|
17
|
+
DROPPED_MODULE_SYMBOL,
|
|
18
|
+
'Step',
|
|
19
|
+
'StepState',
|
|
20
|
+
'StepSelectionEvent',
|
|
21
|
+
];
|
|
22
|
+
// Canonical order used when rebuilding the stepper import statement
|
|
23
|
+
const IMPORT_ORDER = ['StepperComponent', 'Step', 'StepState', 'StepSelectionEvent'];
|
|
24
|
+
function migrate() {
|
|
25
|
+
return (tree, context) => {
|
|
26
|
+
tree.visit((path) => {
|
|
27
|
+
if (path.includes('/node_modules/'))
|
|
28
|
+
return;
|
|
29
|
+
if (path.endsWith('.html')) {
|
|
30
|
+
migrateTemplate(tree, path);
|
|
31
|
+
}
|
|
32
|
+
else if (path.endsWith('.ts')) {
|
|
33
|
+
migrateTypeScript(tree, path, context);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function migrateTemplate(tree, path) {
|
|
39
|
+
const content = tree.readText(path);
|
|
40
|
+
if (!content.includes('s-steps'))
|
|
41
|
+
return;
|
|
42
|
+
let updated = content;
|
|
43
|
+
updated = updated.replace(/<s-steps\b/g, '<s-stepper');
|
|
44
|
+
updated = updated.replace(/<\/s-steps>/g, '</s-stepper>');
|
|
45
|
+
if (updated !== content) {
|
|
46
|
+
tree.overwrite(path, updated);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function migrateTypeScript(tree, path, context) {
|
|
50
|
+
const content = tree.readText(path);
|
|
51
|
+
if (!content.includes(STEPS_MODULE))
|
|
52
|
+
return;
|
|
53
|
+
const sourceFile = ts.createSourceFile(path, content, ts.ScriptTarget.Latest, true);
|
|
54
|
+
const { changes: importChanges, removedNames } = (0, ast_utils_1.buildRemoveNamedImportsChanges)(sourceFile, ALL_IMPORT_NAMES, STEPS_MODULE);
|
|
55
|
+
if (removedNames.length === 0)
|
|
56
|
+
return;
|
|
57
|
+
// StepsModule/StepsComponent used in NgModule imports/exports, standalone Component imports,
|
|
58
|
+
// TestBed.configureTestingModule, etc. all collapse to the standalone StepperComponent.
|
|
59
|
+
const arrayChanges = (0, ast_utils_1.replaceIdentifierInArrayLiterals)(sourceFile, [DROPPED_MODULE_SYMBOL, 'StepsComponent'], 'StepperComponent');
|
|
60
|
+
let updated = (0, ast_utils_1.applyChanges)(content, [...importChanges, ...arrayChanges]);
|
|
61
|
+
updated = updated.replace(/\n{3,}/g, '\n\n');
|
|
62
|
+
// Rename remaining bare usages (type annotations, @ViewChild, etc.) of renamed symbols
|
|
63
|
+
for (const [oldName, newName] of Object.entries(RENAMED_SYMBOLS)) {
|
|
64
|
+
if (removedNames.includes(oldName)) {
|
|
65
|
+
updated = updated.replace(new RegExp(`\\b${oldName}\\b`, 'g'), newName);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (removedNames.includes(DROPPED_MODULE_SYMBOL) && new RegExp(`\\b${DROPPED_MODULE_SYMBOL}\\b`).test(updated)) {
|
|
69
|
+
context.logger.warn(`${path}: referência a "StepsModule" fora de um array de imports/exports/declarations não pôde ser migrada automaticamente. Substitua manualmente por "StepperComponent".`);
|
|
70
|
+
}
|
|
71
|
+
const neededImports = new Set();
|
|
72
|
+
for (const name of removedNames) {
|
|
73
|
+
neededImports.add(name === DROPPED_MODULE_SYMBOL ? 'StepperComponent' : (RENAMED_SYMBOLS[name] ?? name));
|
|
74
|
+
}
|
|
75
|
+
for (const name of IMPORT_ORDER) {
|
|
76
|
+
if (neededImports.has(name)) {
|
|
77
|
+
updated = ensureNamedImport(updated, name, STEPPER_MODULE);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (neededImports.has('StepperComponent')) {
|
|
81
|
+
updated = (0, ast_utils_1.ensureExportedSymbolIsImported)(updated, 'StepperComponent');
|
|
82
|
+
}
|
|
83
|
+
if (updated !== content) {
|
|
84
|
+
tree.overwrite(path, updated);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ─── Import merging helpers (mirrors migrate-dynamic-form-v19 / migrate-p-editor) ─────────────
|
|
88
|
+
function isSymbolImportedFrom(content, symbolName, fromModule) {
|
|
89
|
+
const regex = new RegExp(`import\\s*\\{[^}]*\\b${symbolName}\\b[^}]*\\}\\s*from\\s*['"]${(0, html_utils_1.escapeRegex)(fromModule)}['"]`);
|
|
90
|
+
return regex.test(content);
|
|
91
|
+
}
|
|
92
|
+
function ensureNamedImport(content, symbolName, fromModule) {
|
|
93
|
+
if (isSymbolImportedFrom(content, symbolName, fromModule))
|
|
94
|
+
return content;
|
|
95
|
+
const existingImportRegex = new RegExp(`(import\\s*\\{)([^}]*)(\\}\\s*from\\s*['"]${(0, html_utils_1.escapeRegex)(fromModule)}['"])`);
|
|
96
|
+
const match = existingImportRegex.exec(content);
|
|
97
|
+
if (match) {
|
|
98
|
+
const newNames = match[2].trimEnd();
|
|
99
|
+
const separator = newNames.endsWith(',') ? ' ' : ', ';
|
|
100
|
+
return content.replace(match[0], `${match[1]}${newNames}${separator}${symbolName}${match[3]}`);
|
|
101
|
+
}
|
|
102
|
+
return (0, ast_utils_1.insertImportStatement)(content, symbolName, fromModule);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/angular-components/schematics/migrations/migrate-steps-to-stepper/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"description": "Migra DynamicForm v18→v19: construtores → plain objects, enums → string literals, [fields] → [configs], Editor → provideEditorField(), estilos → angular.json",
|
|
7
7
|
"factory": "./migrations/migrate-dynamic-form-v19/index#migrate"
|
|
8
8
|
},
|
|
9
|
+
"migration-v19-0-0-steps-to-stepper": {
|
|
10
|
+
"version": "19.0.0",
|
|
11
|
+
"description": "Migra Steps para Stepper: <s-steps> → <s-stepper>, import '@seniorsistemas/angular-components/steps' → 'stepper', StepsComponent → StepperComponent, e remove StepsModule (standalone) substituindo por StepperComponent",
|
|
12
|
+
"factory": "./migrations/migrate-steps-to-stepper/index#migrate"
|
|
13
|
+
},
|
|
9
14
|
"migration-v19-6-2-s-chips-outputs": {
|
|
10
15
|
"version": "19.6.2",
|
|
11
16
|
"description": "Renomeia outputs legados do s-chips: onAdd→added, onRemove→removed, onChipClick→chipClicked, onFocus→focused, onBlur→focusLost",
|
|
@@ -19,6 +19,13 @@ export declare function buildRemoveNamedImportsChanges(sourceFile: ts.SourceFile
|
|
|
19
19
|
* If no imports exist, prepends to the file.
|
|
20
20
|
*/
|
|
21
21
|
export declare function insertImportStatement(content: string, name: string, fromModule: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Standalone components/directives/pipes can only appear in an @NgModule's `exports` if they
|
|
24
|
+
* are also present in that module's `imports` (the Angular compiler rejects export-only entries,
|
|
25
|
+
* unlike classic NgModules which can be re-exported without being imported). This backfills
|
|
26
|
+
* `imports` whenever `symbolName` ends up in `exports` without it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function ensureExportedSymbolIsImported(content: string, symbolName: string): string;
|
|
22
29
|
export declare const ngModule: {
|
|
23
30
|
replaceInImports(sourceFile: ts.SourceFile, remove: string[], add: string): AstChange[];
|
|
24
31
|
replaceInExports(sourceFile: ts.SourceFile, remove: string[], add: string): AstChange[];
|
|
@@ -26,6 +33,12 @@ export declare const ngModule: {
|
|
|
26
33
|
export declare const ngComponent: {
|
|
27
34
|
replaceInImports(sourceFile: ts.SourceFile, remove: string[], add: string): AstChange[];
|
|
28
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Replaces bare identifiers inside ANY array literal in the file (NgModule imports/exports,
|
|
38
|
+
* standalone Component imports, TestBed.configureTestingModule imports/declarations, etc.)
|
|
39
|
+
* with a single replacement identifier. Deduplicates if the replacement is already present.
|
|
40
|
+
*/
|
|
41
|
+
export declare function replaceIdentifierInArrayLiterals(sourceFile: ts.SourceFile, remove: string[], add: string): AstChange[];
|
|
29
42
|
/**
|
|
30
43
|
* Removes a property assignment from an object literal, handling comma cleanup.
|
|
31
44
|
* - Non-last property: removes from property start to next property start (trailing comma).
|
|
@@ -4,6 +4,8 @@ exports.ngComponent = exports.ngModule = void 0;
|
|
|
4
4
|
exports.applyChanges = applyChanges;
|
|
5
5
|
exports.buildRemoveNamedImportsChanges = buildRemoveNamedImportsChanges;
|
|
6
6
|
exports.insertImportStatement = insertImportStatement;
|
|
7
|
+
exports.ensureExportedSymbolIsImported = ensureExportedSymbolIsImported;
|
|
8
|
+
exports.replaceIdentifierInArrayLiterals = replaceIdentifierInArrayLiterals;
|
|
7
9
|
exports.buildRemoveObjectPropertyChange = buildRemoveObjectPropertyChange;
|
|
8
10
|
const ts = require("typescript");
|
|
9
11
|
function applyChanges(content, changes) {
|
|
@@ -101,6 +103,58 @@ function buildReplaceDecoratorPropertyArray(sourceFile, decoratorName, arrayProp
|
|
|
101
103
|
});
|
|
102
104
|
return changes;
|
|
103
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Standalone components/directives/pipes can only appear in an @NgModule's `exports` if they
|
|
108
|
+
* are also present in that module's `imports` (the Angular compiler rejects export-only entries,
|
|
109
|
+
* unlike classic NgModules which can be re-exported without being imported). This backfills
|
|
110
|
+
* `imports` whenever `symbolName` ends up in `exports` without it.
|
|
111
|
+
*/
|
|
112
|
+
function ensureExportedSymbolIsImported(content, symbolName) {
|
|
113
|
+
const sourceFile = ts.createSourceFile('_temp.ts', content, ts.ScriptTarget.Latest, true);
|
|
114
|
+
const changes = [];
|
|
115
|
+
ts.forEachChild(sourceFile, (node) => {
|
|
116
|
+
if (!ts.isClassDeclaration(node))
|
|
117
|
+
return;
|
|
118
|
+
const decorators = ts.getDecorators(node);
|
|
119
|
+
if (!decorators)
|
|
120
|
+
return;
|
|
121
|
+
for (const decorator of decorators) {
|
|
122
|
+
if (!ts.isCallExpression(decorator.expression))
|
|
123
|
+
continue;
|
|
124
|
+
if (decorator.expression.expression.getText(sourceFile) !== 'NgModule')
|
|
125
|
+
continue;
|
|
126
|
+
const [arg] = decorator.expression.arguments;
|
|
127
|
+
if (!arg || !ts.isObjectLiteralExpression(arg))
|
|
128
|
+
continue;
|
|
129
|
+
const exportsProp = arg.properties.find((p) => ts.isPropertyAssignment(p) && p.name.getText(sourceFile) === 'exports');
|
|
130
|
+
if (!exportsProp || !ts.isArrayLiteralExpression(exportsProp.initializer))
|
|
131
|
+
continue;
|
|
132
|
+
const isExported = exportsProp.initializer.elements.some((el) => ts.isIdentifier(el) && el.text === symbolName);
|
|
133
|
+
if (!isExported)
|
|
134
|
+
continue;
|
|
135
|
+
const importsProp = arg.properties.find((p) => ts.isPropertyAssignment(p) && p.name.getText(sourceFile) === 'imports');
|
|
136
|
+
if (importsProp && ts.isArrayLiteralExpression(importsProp.initializer)) {
|
|
137
|
+
const alreadyImported = importsProp.initializer.elements.some((el) => ts.isIdentifier(el) && el.text === symbolName);
|
|
138
|
+
if (alreadyImported)
|
|
139
|
+
continue;
|
|
140
|
+
const elements = [...importsProp.initializer.elements.map((el) => el.getText(sourceFile)), symbolName];
|
|
141
|
+
changes.push({
|
|
142
|
+
start: importsProp.initializer.getStart(),
|
|
143
|
+
end: importsProp.initializer.getEnd(),
|
|
144
|
+
replacement: `[${elements.join(', ')}]`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
changes.push({
|
|
149
|
+
start: exportsProp.getStart(),
|
|
150
|
+
end: exportsProp.getStart(),
|
|
151
|
+
replacement: `imports: [${symbolName}],\n `,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
return applyChanges(content, changes);
|
|
157
|
+
}
|
|
104
158
|
exports.ngModule = {
|
|
105
159
|
replaceInImports(sourceFile, remove, add) {
|
|
106
160
|
return buildReplaceDecoratorPropertyArray(sourceFile, 'NgModule', 'imports', remove, add);
|
|
@@ -114,6 +168,28 @@ exports.ngComponent = {
|
|
|
114
168
|
return buildReplaceDecoratorPropertyArray(sourceFile, 'Component', 'imports', remove, add);
|
|
115
169
|
},
|
|
116
170
|
};
|
|
171
|
+
/**
|
|
172
|
+
* Replaces bare identifiers inside ANY array literal in the file (NgModule imports/exports,
|
|
173
|
+
* standalone Component imports, TestBed.configureTestingModule imports/declarations, etc.)
|
|
174
|
+
* with a single replacement identifier. Deduplicates if the replacement is already present.
|
|
175
|
+
*/
|
|
176
|
+
function replaceIdentifierInArrayLiterals(sourceFile, remove, add) {
|
|
177
|
+
const changes = [];
|
|
178
|
+
function visit(node) {
|
|
179
|
+
if (ts.isArrayLiteralExpression(node)) {
|
|
180
|
+
const elements = [...node.elements];
|
|
181
|
+
const kept = elements.filter((el) => !(ts.isIdentifier(el) && remove.includes(el.text)));
|
|
182
|
+
if (kept.length < elements.length) {
|
|
183
|
+
const keptTexts = kept.map((el) => el.getText(sourceFile));
|
|
184
|
+
const newElements = keptTexts.includes(add) ? keptTexts : [...keptTexts, add];
|
|
185
|
+
changes.push({ start: node.getStart(), end: node.getEnd(), replacement: `[${newElements.join(', ')}]` });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
ts.forEachChild(node, visit);
|
|
189
|
+
}
|
|
190
|
+
visit(sourceFile);
|
|
191
|
+
return changes;
|
|
192
|
+
}
|
|
117
193
|
/**
|
|
118
194
|
* Removes a property assignment from an object literal, handling comma cleanup.
|
|
119
195
|
* - Non-last property: removes from property start to next property start (trailing comma).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../../projects/angular-components/schematics/utils/ast-utils.ts"],"names":[],"mappings":";;;AAQA,oCAOC;AAOD,wEAqCC;AAMD,sDAWC;
|
|
1
|
+
{"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../../projects/angular-components/schematics/utils/ast-utils.ts"],"names":[],"mappings":";;;AAQA,oCAOC;AAOD,wEAqCC;AAMD,sDAWC;AAuDD,wEAsDC;AAsBD,4EAuBC;AAQD,0EAiBC;AA/PD,iCAAiC;AAQjC,SAAgB,YAAY,CAAC,OAAe,EAAE,OAAoB;IAC9D,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAgB,8BAA8B,CAC1C,UAAyB,EACzB,KAAe,EACf,iBAAyB;IAEzB,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,OAAO;QAE1C,MAAM,eAAe,GAAI,IAAI,CAAC,eAAoC,CAAC,IAAI,CAAC;QACxE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAAE,OAAO;QAEzD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;QACvD,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC;YAAE,OAAO;QAEhE,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE;gBAC/B,GAAG,EAAE,aAAa,CAAC,MAAM,EAAE;gBAC3B,WAAW,EAAE,KAAK,UAAU,IAAI;aACnC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,IAAY,EAAE,UAAkB;IACnF,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1F,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,YAAY,IAAI,YAAY,UAAU,MAAM,CAAC;IAC/D,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,GAAG,OAAO,CAAC;IAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,kCAAkC,CACvC,UAAyB,EACzB,aAAqB,EACrB,SAAiB,EACjB,MAAgB,EAChB,GAAW;IAEX,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAAE,OAAO;QAEzC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;gBAAE,SAAS;YAEzD,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,aAAa;gBAAE,SAAS;YAEpF,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEzD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,CAC3C,CAAC;YAEvC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,SAAS;YAEtE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtF,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,SAAS;YAE9C,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACrB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE;gBACjB,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aAC7C,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,8BAA8B,CAAC,OAAe,EAAE,UAAkB;IAC9E,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAAE,OAAO;QAEzC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;gBAAE,SAAS;YACzD,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU;gBAAE,SAAS;YAEjF,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEzD,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,CAC3C,CAAC;YACvC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,WAAW,CAAC;gBAAE,SAAS;YAEpF,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,CACxD,CAAC;YACF,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,CAC3C,CAAC;YAEvC,IAAI,WAAW,IAAI,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtE,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CACzD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,CACxD,CAAC;gBACF,IAAI,eAAe;oBAAE,SAAS;gBAE9B,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE;oBACzC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE;oBACrC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBAC1C,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;oBAC7B,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE;oBAC3B,WAAW,EAAE,aAAa,UAAU,UAAU;iBACjD,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAEY,QAAA,QAAQ,GAAG;IACpB,gBAAgB,CAAC,UAAyB,EAAE,MAAgB,EAAE,GAAW;QACrE,OAAO,kCAAkC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9F,CAAC;IACD,gBAAgB,CAAC,UAAyB,EAAE,MAAgB,EAAE,GAAW;QACrE,OAAO,kCAAkC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9F,CAAC;CACJ,CAAC;AAEW,QAAA,WAAW,GAAG;IACvB,gBAAgB,CAAC,UAAyB,EAAE,MAAgB,EAAE,GAAW;QACrE,OAAO,kCAAkC,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/F,CAAC;CACJ,CAAC;AAEF;;;;GAIG;AACH,SAAgB,gCAAgC,CAC5C,UAAyB,EACzB,MAAgB,EAChB,GAAW;IAEX,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,SAAS,KAAK,CAAC,IAAa;QACxB,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEzF,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC9E,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7G,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,+BAA+B,CAC3C,UAAyB,EACzB,GAA+B,EAC/B,IAA2B;IAE3B,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|