s4y-ui 2.0.2 → 2.1.2
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/fesm2022/s4y-ui.mjs +2 -2
- package/fesm2022/s4y-ui.mjs.map +1 -1
- package/package.json +1 -1
package/fesm2022/s4y-ui.mjs
CHANGED
|
@@ -1209,11 +1209,11 @@ class ModalComponent {
|
|
|
1209
1209
|
this.visible.set(false);
|
|
1210
1210
|
}
|
|
1211
1211
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1212
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: ModalComponent, isStandalone: true, selector: "s4y-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, modalStyle: { classPropertyName: "modalStyle", publicName: "modalStyle", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, withHeader: { classPropertyName: "withHeader", publicName: "withHeader", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeModal: "closeModal", visible: "visibleChange", withHeader: "withHeaderChange" }, queries: [{ propertyName: "modalHeaderTemplate", first: true, predicate: ["modalHeaderTemplate"], descendants: true }, { propertyName: "modalFooterTemplate", first: true, predicate: ["modalFooterTemplate"], descendants: true }], ngImport: i0, template: "@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"s4y-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".s4y-modal-wrapper{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-index-modal-backdrop)}.s4y-backdrop{position:fixed;inset:0;background-color:#000000b3}.s4y-modal-container{background:#fff;width:100%;min-width:300px;max-width:500px;max-height:90dvh;min-height:18rem;border-radius:var(--radius);z-index:var(--z-index-modal);box-shadow:0 4px 12px #0003;animation:fadeInUp .3s ease;padding:1rem 1.8rem;display:flex;flex-direction:column}@media screen and (min-width: 320px) and (max-width: 480px){.s4y-modal-container{width:90%}}@media screen and (min-width: 481px) and (max-width: 767px){.s4y-modal-container{width:90%}}@media screen and (min-width: 768px) and (max-width: 1024px){.s4y-modal-container{width:90%}}.s4y-modal-header{padding:1rem 0;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.s4y-modal-header button{padding:.6rem 1.2rem;font-size:1.8rem;cursor:pointer}.s4y-modal-header s4y-modal-header__title{font-size:1.8rem;color:var(--primary-color)}.s4y-modal-body{flex-grow:1;overflow-y:auto}.s4y-modal-footer{padding:1rem 0;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [modalFadeCombined] });
|
|
1212
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: ModalComponent, isStandalone: true, selector: "s4y-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, modalStyle: { classPropertyName: "modalStyle", publicName: "modalStyle", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, withHeader: { classPropertyName: "withHeader", publicName: "withHeader", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeModal: "closeModal", visible: "visibleChange", withHeader: "withHeaderChange" }, queries: [{ propertyName: "modalHeaderTemplate", first: true, predicate: ["modalHeaderTemplate"], descendants: true }, { propertyName: "modalFooterTemplate", first: true, predicate: ["modalFooterTemplate"], descendants: true }], ngImport: i0, template: "@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"s4y-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".s4y-modal-wrapper{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-index-modal-backdrop)}.s4y-backdrop{position:fixed;inset:0;background-color:#000000b3}.s4y-modal-container{background:#fff;width:100%;min-width:300px;max-width:500px;max-height:90dvh;min-height:18rem;border-radius:var(--radius);z-index:var(--z-index-modal);box-shadow:0 4px 12px #0003;animation:fadeInUp .3s ease;padding:1rem 1.8rem;display:flex;flex-direction:column}@media screen and (min-width: 320px) and (max-width: 480px){.s4y-modal-container{width:90%}}@media screen and (min-width: 481px) and (max-width: 767px){.s4y-modal-container{width:90%}}@media screen and (min-width: 768px) and (max-width: 1024px){.s4y-modal-container{width:90%}}.s4y-modal-header{padding:1rem 0;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.s4y-modal-header button{padding:.6rem 1.2rem;font-size:1.8rem;cursor:pointer}.s4y-modal-header .s4y-modal-header__title{font-size:1.8rem;color:var(--primary-color)}.s4y-modal-body{flex-grow:1;overflow-y:auto}.s4y-modal-footer{padding:1rem 0;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [modalFadeCombined] });
|
|
1213
1213
|
}
|
|
1214
1214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: ModalComponent, decorators: [{
|
|
1215
1215
|
type: Component,
|
|
1216
|
-
args: [{ selector: 's4y-modal', imports: [CommonModule], animations: [modalFadeCombined], template: "@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"s4y-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".s4y-modal-wrapper{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-index-modal-backdrop)}.s4y-backdrop{position:fixed;inset:0;background-color:#000000b3}.s4y-modal-container{background:#fff;width:100%;min-width:300px;max-width:500px;max-height:90dvh;min-height:18rem;border-radius:var(--radius);z-index:var(--z-index-modal);box-shadow:0 4px 12px #0003;animation:fadeInUp .3s ease;padding:1rem 1.8rem;display:flex;flex-direction:column}@media screen and (min-width: 320px) and (max-width: 480px){.s4y-modal-container{width:90%}}@media screen and (min-width: 481px) and (max-width: 767px){.s4y-modal-container{width:90%}}@media screen and (min-width: 768px) and (max-width: 1024px){.s4y-modal-container{width:90%}}.s4y-modal-header{padding:1rem 0;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.s4y-modal-header button{padding:.6rem 1.2rem;font-size:1.8rem;cursor:pointer}.s4y-modal-header s4y-modal-header__title{font-size:1.8rem;color:var(--primary-color)}.s4y-modal-body{flex-grow:1;overflow-y:auto}.s4y-modal-footer{padding:1rem 0;flex-shrink:0}\n"] }]
|
|
1216
|
+
args: [{ selector: 's4y-modal', imports: [CommonModule], animations: [modalFadeCombined], template: "@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"s4y-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".s4y-modal-wrapper{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:var(--z-index-modal-backdrop)}.s4y-backdrop{position:fixed;inset:0;background-color:#000000b3}.s4y-modal-container{background:#fff;width:100%;min-width:300px;max-width:500px;max-height:90dvh;min-height:18rem;border-radius:var(--radius);z-index:var(--z-index-modal);box-shadow:0 4px 12px #0003;animation:fadeInUp .3s ease;padding:1rem 1.8rem;display:flex;flex-direction:column}@media screen and (min-width: 320px) and (max-width: 480px){.s4y-modal-container{width:90%}}@media screen and (min-width: 481px) and (max-width: 767px){.s4y-modal-container{width:90%}}@media screen and (min-width: 768px) and (max-width: 1024px){.s4y-modal-container{width:90%}}.s4y-modal-header{padding:1rem 0;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.s4y-modal-header button{padding:.6rem 1.2rem;font-size:1.8rem;cursor:pointer}.s4y-modal-header .s4y-modal-header__title{font-size:1.8rem;color:var(--primary-color)}.s4y-modal-body{flex-grow:1;overflow-y:auto}.s4y-modal-footer{padding:1rem 0;flex-shrink:0}\n"] }]
|
|
1217
1217
|
}], propDecorators: { modalHeaderTemplate: [{
|
|
1218
1218
|
type: ContentChild,
|
|
1219
1219
|
args: ['modalHeaderTemplate']
|
package/fesm2022/s4y-ui.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s4y-ui.mjs","sources":["../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.service.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.html","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.ts","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.html","../../../projects/s4y-components/src/lib/components/svg/svg.service.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard.module.ts","../../../projects/s4y-components/src/lib/components/dashboard/index.ts","../../../projects/s4y-components/src/lib/components/button/button.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/forms-kit.module.ts","../../../projects/s4y-components/src/lib/components/forms-kit/index.ts","../../../projects/s4y-components/src/lib/directives/mask/mask.directive.ts","../../../projects/s4y-components/src/lib/directives/click-outside.directive.ts","../../../projects/s4y-components/src/lib/components/toast/toast.animation.ts","../../../projects/s4y-components/src/lib/components/toast/toast.service.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.html","../../../projects/s4y-components/src/lib/components/drawer/drawer.animation.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.html","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.ts","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.html","../../../projects/s4y-components/src/lib/components/table/table.component.ts","../../../projects/s4y-components/src/lib/components/table/table.component.html","../../../projects/s4y-components/src/lib/components/table/actions/sortTable.directive.ts","../../../projects/s4y-components/src/lib/components/modal/modal.animation.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.html","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.service.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.html","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.ts","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.html","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.ts","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.html","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.ts","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.html","../../../projects/s4y-components/src/lib/components/select/select.animation.ts","../../../projects/s4y-components/src/lib/components/select/select.component.ts","../../../projects/s4y-components/src/lib/components/select/select.component.html","../../../projects/s4y-components/src/lib/components/slider/slider.component.ts","../../../projects/s4y-components/src/lib/components/slider/slider.component.html","../../../projects/s4y-components/src/lib/components/radio/radio.component.ts","../../../projects/s4y-components/src/lib/components/radio/radio.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.enums.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.module.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb-item.directive.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.service.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/s4y-components/src/public-api.ts","../../../projects/s4y-components/src/s4y-ui.ts"],"sourcesContent":["import {\r\n Component,\r\n ContentChild,\r\n contentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-layout',\r\n templateUrl: './dashboard-layout.component.html',\r\n styleUrl: './dashboard-layout.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardLayoutComponent {\r\n @ContentChild('asideTemplate') asideTemplate!: TemplateRef<any>;\r\n @ContentChild('navTemplate') navTemplate!: TemplateRef<any>;\r\n}\r\n","<div class=\"s4y-dashboard-layout\">\r\n @if (asideTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"asideTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-aside\"></ng-content>\r\n }\r\n <div class=\"s4y-dashboard-layout__content\">\r\n @if (navTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"navTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-navbar\"></ng-content>\r\n }\r\n <ng-content select=\"s4y-dashboard-routes\"></ng-content>\r\n </div>\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AsideService {\r\n private _isOpened = signal<boolean>(true);\r\n\r\n isOpened = computed(() => this._isOpened());\r\n\r\n onToggle() {\r\n this._isOpened.update((state) => !state);\r\n }\r\n}\r\n","import { Component, ContentChild, inject, TemplateRef } from '@angular/core';\r\nimport { AsideService } from '../aside/aside.service';\r\n\r\n@Component({\r\n selector: 's4y-navbar',\r\n templateUrl: './navbar.component.html',\r\n styleUrl: './navbar.component.scss',\r\n standalone: false,\r\n})\r\nexport class NavbarComponent {\r\n protected _asideService = inject(AsideService);\r\n\r\n @ContentChild('actionsTemplate')\r\n actionsTemplate!: TemplateRef<any>;\r\n}\r\n","<nav class=\"s4y-navbar-container\">\r\n <button\r\n (click)=\"_asideService.onToggle()\"\r\n class=\"s4y-navbar-container__btn\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"menuIcon\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-navbar-container__actions\">\r\n <ng-container *ngIf=\"actionsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"actionsTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</nav>\r\n\r\n\r\n<ng-template #menuIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path d=\"M3 4H21V6H3V4ZM3 11H15V13H3V11ZM3 18H21V20H3V18Z\"></path>\r\n </svg>\r\n</ng-template>\r\n","import {\r\n Component,\r\n HostBinding,\r\n Input,\r\n computed,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgIf, NgClass, CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-avatar',\r\n imports: [CommonModule],\r\n templateUrl: './avatar.component.html',\r\n styleUrl: './avatar.component.scss',\r\n})\r\nexport class AvatarComponent {\r\n src = input<string | undefined>(undefined); // URL da imagem\r\n alt = input<string>('Avatar'); // Texto alternativo\r\n size = input<'sm' | 'md' | 'lg' | 'xl'>('md'); // Tamanho\r\n rounded = input<boolean>(true); // Arredondar ou não\r\n border = input<boolean>(false); // Borda decorativa\r\n // Estados internos\r\n imageLoaded = signal(false);\r\n imageError = signal(false);\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n const classes = [];\r\n\r\n switch (this.size()) {\r\n case 'sm':\r\n classes.push('s4y-avatar-sm');\r\n break;\r\n case 'md':\r\n classes.push('s4y-avatar-md');\r\n break;\r\n case 'lg':\r\n classes.push('s4y-avatar-lg');\r\n break;\r\n case 'xl':\r\n classes.push('s4y-avatar-xl');\r\n break;\r\n default:\r\n classes.push('s4y-avatar-md');\r\n }\r\n\r\n classes.push(this.rounded() ? 's4y-avatar-rounded' : 's4y-avatar-square');\r\n\r\n if (this.border()) {\r\n classes.push('s4y-avatar-border');\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n onLoad() {\r\n this.imageLoaded.set(true);\r\n this.imageError.set(false);\r\n }\r\n\r\n onError() {\r\n this.imageError.set(true);\r\n }\r\n}\r\n","@if (src()) {\r\n<img [src]=\"src()\" [alt]=\"alt()\" />\r\n\r\n}@else {\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M4 22C4 17.5817 7.58172 14 12 14C16.4183 14 20 17.5817 20 22H18C18 18.6863 15.3137 16 12 16C8.68629 16 6 18.6863 6 22H4ZM12 13C8.685 13 6 10.315 6 7C6 3.685 8.685 1 12 1C15.315 1 18 3.685 18 7C18 10.315 15.315 13 12 13ZM12 11C14.21 11 16 9.21 16 7C16 4.79 14.21 3 12 3C9.79 3 8 4.79 8 7C8 9.21 9.79 11 12 11Z\"\r\n ></path>\r\n</svg>\r\n}\r\n","// src/app/icon/icon.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { defer, from, Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SvgService {\r\n private requests = new Map<string, Promise<string>>();\r\n\r\n getSvgContent(url: string): Observable<string> {\r\n let request = this.requests.get(url);\r\n\r\n if (!request) {\r\n request = fetch(url).then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`Erro ao carregar SVG: ${response.statusText}`);\r\n }\r\n return response.text();\r\n });\r\n\r\n this.requests.set(url, request);\r\n }\r\n\r\n return defer(() => from(request)).pipe(\r\n catchError((error) => {\r\n console.error('Erro ao carregar SVG:', error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n}\r\n","// import { NgIf, NgStyle } from '@angular/common';\r\n// import { HttpClient } from '@angular/common/http';\r\n// import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n// import { DomSanitizer } from '@angular/platform-browser';\r\n// import { SvgService } from './svg.service';\r\n\r\n// @Component({\r\n// selector: 's4y-svg',\r\n// imports: [NgStyle, NgIf],\r\n// templateUrl: './svg.component.html',\r\n// styleUrl: './svg.component.scss',\r\n// changeDetection: ChangeDetectionStrategy.OnPush,\r\n// })\r\n// export class SvgComponent implements OnChanges {\r\n// @Input() src!: string;\r\n// @Input() mode: 'inline' | 'mask' = 'mask';\r\n// @Input() size: string = '24px';\r\n// @Input() color: string = 'currentColor';\r\n\r\n// svgContent: any = '';\r\n// maskStyle = '';\r\n\r\n// constructor(\r\n// private http: HttpClient,\r\n// private sanitizer: DomSanitizer,\r\n// private svgService: SvgService\r\n// ) {}\r\n\r\n// ngOnChanges(changes: SimpleChanges): void {\r\n// if (!this.src) return;\r\n\r\n// if (this.mode === 'inline') {\r\n// this.http.get(this.src, { responseType: 'text' }).subscribe((svg) => {\r\n// this.svgContent = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n// });\r\n// } else if (this.mode === 'mask') {\r\n// this.maskStyle = `url(\"${this.src}\")`;\r\n// }\r\n// }\r\n// }\r\n\r\n// src/app/icon/icon.component.ts\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SvgService } from './svg.service';\r\nimport { AsyncPipe, JsonPipe } from '@angular/common';\r\n\r\nexport type tSvgSize = 'small' | 'default' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-svg',\r\n templateUrl: './svg.component.html',\r\n styleUrls: ['./svg.component.scss'],\r\n imports: [AsyncPipe, JsonPipe],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SvgComponent {\r\n @Input()\r\n @HostBinding('class')\r\n size: tSvgSize = 'default';\r\n\r\n public svgContent: Observable<SafeHtml> | undefined;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private svgService: SvgService,\r\n ) {}\r\n\r\n @Input()\r\n set src(value: string | undefined | null) {\r\n if (!value) return;\r\n\r\n this.setSvgContent(value);\r\n }\r\n\r\n private setSvgContent(src: string): void {\r\n this.svgContent = this.svgService\r\n .getSvgContent(src)\r\n .pipe(map((content) => this.sanitizer.bypassSecurityTrustHtml(content)));\r\n }\r\n}\r\n","<!-- <span\r\n *ngIf=\"mode === 'inline'\"\r\n class=\"s4y-svg-inline\"\r\n [innerHTML]=\"svgContent\"\r\n [ngStyle]=\"{\r\n width: size,\r\n height: size,\r\n color: color\r\n }\"\r\n></span>\r\n\r\n<span\r\n *ngIf=\"mode === 'mask'\"\r\n class=\"s4y-svg-mask\"\r\n [ngStyle]=\"{\r\n WebkitMaskImage: maskStyle,\r\n maskImage: maskStyle,\r\n width: size,\r\n height: size,\r\n backgroundColor: color\r\n }\"\r\n></span> -->\r\n\r\n<div class=\"icon-inner\" [innerHTML]=\"svgContent | async\"></div>\r\n\r\n{{ svgContent | json }}\r\n","import {\r\n Component,\r\n ContentChild,\r\n inject,\r\n input,\r\n output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { AsideService } from './aside.service';\r\n\r\nexport interface iMenuItem {\r\n title: string;\r\n link: string;\r\n iconUri?: string;\r\n isOpen?: boolean;\r\n children?: { title: string; link: string }[];\r\n roles: string[];\r\n}\r\n\r\n@Component({\r\n selector: 's4y-aside',\r\n templateUrl: './aside.component.html',\r\n styleUrl: './aside.component.scss',\r\n standalone: false,\r\n host: {\r\n '[attr.data-opened]': 'isOpened()',\r\n },\r\n})\r\nexport class AsideComponent {\r\n protected _asideService = inject(AsideService);\r\n private router = inject(Router);\r\n private sanitizer = inject(DomSanitizer);\r\n protected asideService = inject(AsideService);\r\n\r\n menus = input<iMenuItem[]>([]);\r\n\r\n companyLogoSrc = input<string>(\r\n 'https://vanderson-teste.sirv.com/ChatGPT%20Image%2024%20de%20abr.%20de%202025%2C%2009_37_39%201%20(1).png',\r\n );\r\n companyTitle = input<string>('Solution4You');\r\n companyDescription = input<string>('Tecnologia');\r\n\r\n userImage = input<string>('');\r\n userName = input<string>('');\r\n userEmail = input<string>('');\r\n\r\n isOpened = this._asideService.isOpened;\r\n\r\n @ContentChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n onToggle(menu: iMenuItem) {\r\n if (menu.children && menu.children.length > 0) {\r\n this.closeOtherMenus(menu);\r\n\r\n if (!this.isOpened()) {\r\n this._asideService.onToggle();\r\n }\r\n\r\n menu.isOpen = !menu.isOpen;\r\n } else {\r\n this.router.navigate([menu.link]);\r\n }\r\n }\r\n\r\n closeOtherMenus(menuToKeepOpen: iMenuItem) {\r\n this.menus().forEach((menu) => {\r\n if (menu !== menuToKeepOpen) {\r\n menu.isOpen = false;\r\n }\r\n });\r\n }\r\n\r\n sanitizeSvg(iconUri: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(iconUri); // Sanitiza o conteúdo SVG\r\n }\r\n\r\n closeWithClickedOverlay() {\r\n this.asideService.onToggle();\r\n }\r\n}\r\n","<div class=\"s4y-aside-overlay\" (click)=\"closeWithClickedOverlay()\"></div>\r\n\r\n<aside [attr.data-opened]=\"isOpened()\" class=\"s4y-aside\">\r\n <div class=\"s4y-aside-header__container\">\r\n @if (headerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"></ng-container>\r\n } @else {\r\n <div class=\"s4y-aside-header\">\r\n <img class=\"s4y-aside-logo\" [src]=\"companyLogoSrc()\" />\r\n <div class=\"s4y-aside-header__infor\">\r\n <p class=\"s4y-aside-title\">{{ companyTitle() }}</p>\r\n <p class=\"s4y-aside-description\">{{ companyDescription() }}</p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"s4y-aside-body__container\">\r\n <!-- Body Abaixo -->\r\n <div class=\"s4y-aside-body-section\">\r\n @for (menu of menus(); track $index) {\r\n <div class=\"s4y-aside-body-section__item\">\r\n <div\r\n class=\"s4y-aside-body-section-item__infor\"\r\n [class.active]=\"menu.isOpen\"\r\n (click)=\"onToggle(menu)\"\r\n >\r\n <div\r\n class=\"s4y-aside-body-section-item-title\"\r\n [class.closed]=\"!isOpened\"\r\n >\r\n @if (menuTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"menuTemplate; context: { $implicit: menu }\"\r\n ></ng-container>\r\n } @else\r\n { @if (menu.iconUri) {\r\n <s4y-svg size=\"default\" [src]=\"menu.iconUri\"> </s4y-svg>\r\n }\r\n <p>{{ menu.title }}</p>\r\n }\r\n </div>\r\n\r\n @if (menu.children?.length) {\r\n <!-- -->\r\n @if (menu.isOpen) {\r\n <ng-container [ngTemplateOutlet]=\"arrowBottom\"></ng-container>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n }\r\n <!-- -->\r\n }\r\n </div>\r\n <div class=\"s4y-aside-body-section-item__children\" [class.is-opened]=\"menu.isOpen\">\r\n @for (children of menu.children; track $index) {\r\n <div class=\"s4y-aside-body-section-item-children__item\">\r\n <a role=\"link\" routerLinkActive=\"children-active\" [routerLinkActiveOptions]=\"{exact: true}\" [routerLink]=\"children.link\">{{ children.title }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <!-- <div class=\"s4y-aside-body-section__scroll\"></div> -->\r\n </div>\r\n <!-- Body Acima -->\r\n <div class=\"s4y-aside-body__user\" [class.s4y-aside-body__user_divider]=\"footerTemplate || (userImage() && userName() && userEmail())\">\r\n @if (footerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\r\n } @else {\r\n @if (userImage()) {\r\n <s4y-avatar [src]=\"userImage()\"></s4y-avatar>\r\n }\r\n <div class=\"s4y-aside-body-user__infor\">\r\n <p class=\"s4y-aside-body-user_name\">{{ userName() }}</p>\r\n <p class=\"s4y-aside-body-user_email\">{{ userEmail() }}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</aside>\r\n\r\n<ng-template #arrowRight>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n<ng-template #arrowBottom>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-routes',\r\n templateUrl: './dashboard-routes.component.html',\r\n styleUrl: './dashboard-routes.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardRoutesComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-container',\r\n templateUrl: './dashboard-container.component.html',\r\n styleUrl: './dashboard-container.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardContainerComponent {}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { DashboardLayoutComponent } from './dashboard-layout/dashboard-layout.component';\r\nimport { AsideComponent } from './aside/aside.component';\r\nimport { RouterLink, RouterModule } from '@angular/router';\r\nimport { NavbarComponent } from './navbar/navbar.component';\r\nimport { AvatarComponent } from '../avatar/avatar.component';\r\nimport { DashboardRoutesComponent } from './dashboard-routes/dashboard-routes.component';\r\nimport { DashboardContainerComponent } from './dashboard-container/dashboard-container.component';\r\nimport { SvgComponent } from '../svg/svg.component';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nconst COMPONENTS = [\r\n DashboardLayoutComponent,\r\n AsideComponent,\r\n NavbarComponent,\r\n DashboardRoutesComponent,\r\n DashboardContainerComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n exports: [COMPONENTS],\r\n imports: [RouterModule, CommonModule, AvatarComponent, SvgComponent],\r\n})\r\nexport class DashboardModule {}\r\n","// lib/components/dashboard/index.ts\r\nexport * from './dashboard-layout/dashboard-layout.component';\r\nexport * from './navbar/navbar.component';\r\nexport * from './aside/aside.component';\r\nexport * from './dashboard-routes/dashboard-routes.component';\r\nexport * from './dashboard-container/dashboard-container.component';\r\nexport * from './dashboard.module';\r\n","import {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n HostBinding,\r\n input,\r\n} from '@angular/core';\r\nimport { tButtonSize, tButtonVariant } from './button.interface';\r\n\r\n@Component({\r\n selector: 'button[s4yButton], a[s4yButton]',\r\n imports: [],\r\n template: `\r\n @if (loading()) {\r\n <div class=\"loader\"></div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n `,\r\n styleUrl: './button.component.scss',\r\n standalone: true,\r\n host: {\r\n '[class.btn-default]': 'true',\r\n '[class.loading]': 'loading()',\r\n '[attr.size]': 'size()',\r\n '[attr.variant]': 'variant()',\r\n '[style.width]': 'fullWidth() ? \"100%\" : null',\r\n '[class.outlined]': 'outlined()',\r\n '[class.disabled]': 'disabled()',\r\n '[class]': 'variantClass()',\r\n },\r\n})\r\nexport class ButtonComponent implements AfterViewInit {\r\n disabled = input(false);\r\n outlined = input(false, { transform: booleanAttribute });\r\n loading = input(false);\r\n size = input<tButtonSize>('medium');\r\n\r\n variant = input<tButtonVariant>('primary');\r\n\r\n fullWidth = input<boolean>(false);\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n @HostBinding('disabled')\r\n private get isDisabled() {\r\n return this.loading() || this.disabled();\r\n }\r\n\r\n private variantClass = computed(() => {\r\n switch (this.variant()) {\r\n case 'primary':\r\n return 'btn-primary';\r\n case 'secondary':\r\n return 'btn-secondary';\r\n case 'danger':\r\n return 'btn-danger';\r\n case 'success':\r\n return 'btn-success';\r\n case 'info':\r\n return 'btn-info';\r\n default:\r\n return 'btn-primary';\r\n }\r\n });\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n standalone: false,\r\n})\r\nexport class FormFieldComponent {}\r\n","<label class=\"s4y-form-field\">\r\n <ng-content select=\"s4y-label\"></ng-content>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <ng-content select=\"input, textarea\"></ng-content>\r\n <ng-content select=\"s4y-input-sufix\"></ng-content>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[s4y-input], textarea[s4y-input]',\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputComponent {}\r\n","<p>input works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-label',\r\n templateUrl: './label.component.html',\r\n styleUrl: './label.component.scss',\r\n standalone: false,\r\n})\r\nexport class LabelComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-hint',\r\n templateUrl: './hint.component.html',\r\n styleUrl: './hint.component.scss',\r\n standalone: false,\r\n})\r\nexport class HintComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-error-message',\r\n templateUrl: './error-message.component.html',\r\n styleUrl: './error-message.component.scss',\r\n standalone: false,\r\n})\r\nexport class ErrorMessageComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-prefix',\r\n templateUrl: './input-prefix.component.html',\r\n styleUrl: './input-prefix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputPrefixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-sufix',\r\n templateUrl: './input-sufix.component.html',\r\n styleUrl: './input-sufix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputSufixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-form-field-password',\r\n templateUrl: './form-field-password.component.html',\r\n styleUrl: './form-field-password.component.scss',\r\n standalone: false,\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormFieldPasswordComponent),\r\n },\r\n ],\r\n})\r\nexport class FormFieldPasswordComponent implements ControlValueAccessor {\r\n type: 'text' | 'password' = 'password';\r\n\r\n label = input<string>('Senha');\r\n name = input.required<string>();\r\n id = input.required<string>();\r\n placeholder = input<string>(this.label());\r\n\r\n protected value: string = '';\r\n protected disabled: boolean = false;\r\n\r\n protected togglePasswordVisibility(): void {\r\n this.type = this.type === 'text' ? 'password' : 'text';\r\n }\r\n\r\n onInput(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n this.onChanged(this.value);\r\n this.onTouched();\r\n }\r\n\r\n onChanged = (value: string) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value = value || '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChanged = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<label class=\"s4y-form-field\">\r\n <s4y-label>\r\n {{ label() }}\r\n </s4y-label>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <input\r\n s4y-input\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n [disabled]=\"disabled\"\r\n [type]=\"type\"\r\n [name]=\"name()\"\r\n [id]=\"id()\"\r\n [placeholder]=\"placeholder()\"\r\n />\r\n <s4y-input-sufix>\r\n <button\r\n type=\"button\"\r\n class=\"shown-password\"\r\n (click)=\"togglePasswordVisibility()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"eye\"></ng-container>\r\n </button>\r\n </s4y-input-sufix>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n\r\n<!-- Icone cadeado -->\r\n<ng-template #eye>\r\n <!-- Olho fechado -->\r\n @if (type == \"password\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3ZM12.0003 19C16.2359 19 19.8603 16.052 20.7777 12C19.8603 7.94803 16.2359 5 12.0003 5C7.7646 5 4.14022 7.94803 3.22278 12C4.14022 16.052 7.7646 19 12.0003 19ZM12.0003 16.5C9.51498 16.5 7.50026 14.4853 7.50026 12C7.50026 9.51472 9.51498 7.5 12.0003 7.5C14.4855 7.5 16.5003 9.51472 16.5003 12C16.5003 14.4853 14.4855 16.5 12.0003 16.5ZM12.0003 14.5C13.381 14.5 14.5003 13.3807 14.5003 12C14.5003 10.6193 13.381 9.5 12.0003 9.5C10.6196 9.5 9.50026 10.6193 9.50026 12C9.50026 13.3807 10.6196 14.5 12.0003 14.5Z\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n <!-- Olho aberto -->\r\n @if (type == \"text\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M17.8827 19.2968C16.1814 20.3755 14.1638 21.0002 12.0003 21.0002C6.60812 21.0002 2.12215 17.1204 1.18164 12.0002C1.61832 9.62282 2.81932 7.5129 4.52047 5.93457L1.39366 2.80777L2.80788 1.39355L22.6069 21.1925L21.1927 22.6068L17.8827 19.2968ZM5.9356 7.3497C4.60673 8.56015 3.6378 10.1672 3.22278 12.0002C4.14022 16.0521 7.7646 19.0002 12.0003 19.0002C13.5997 19.0002 15.112 18.5798 16.4243 17.8384L14.396 15.8101C13.7023 16.2472 12.8808 16.5002 12.0003 16.5002C9.51498 16.5002 7.50026 14.4854 7.50026 12.0002C7.50026 11.1196 7.75317 10.2981 8.19031 9.60442L5.9356 7.3497ZM12.9139 14.328L9.67246 11.0866C9.5613 11.3696 9.50026 11.6777 9.50026 12.0002C9.50026 13.3809 10.6196 14.5002 12.0003 14.5002C12.3227 14.5002 12.6309 14.4391 12.9139 14.328ZM20.8068 16.5925L19.376 15.1617C20.0319 14.2268 20.5154 13.1586 20.7777 12.0002C19.8603 7.94818 16.2359 5.00016 12.0003 5.00016C11.1544 5.00016 10.3329 5.11773 9.55249 5.33818L7.97446 3.76015C9.22127 3.26959 10.5793 3.00016 12.0003 3.00016C17.3924 3.00016 21.8784 6.87992 22.8189 12.0002C22.5067 13.6998 21.8038 15.2628 20.8068 16.5925ZM11.7229 7.50857C11.8146 7.50299 11.9071 7.50016 12.0003 7.50016C14.4855 7.50016 16.5003 9.51488 16.5003 12.0002C16.5003 12.0933 16.4974 12.1858 16.4919 12.2775L11.7229 7.50857Z\"\r\n ></path>\r\n </svg>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormFieldComponent } from './form-field/form-field.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { InputPrefixComponent } from './components/input-prefix/input-prefix.component';\r\nimport { InputSufixComponent } from './components/input-sufix/input-sufix.component';\r\nimport { FormFieldPasswordComponent } from './form-field-password/form-field-password.component';\r\n\r\nconst COMPONENTS = [\r\n FormFieldComponent,\r\n InputComponent,\r\n LabelComponent,\r\n HintComponent,\r\n ErrorMessageComponent,\r\n InputPrefixComponent,\r\n InputSufixComponent,\r\n FormFieldPasswordComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n exports: COMPONENTS,\r\n imports: [CommonModule],\r\n})\r\nexport class FormsKitModule {}\r\n","// lib/components/forms-kit/index.ts\r\nexport * from './forms-kit.module';\r\nexport * from './form-field-password/form-field-password.component';\r\nexport * from './form-field/form-field.component';\r\nexport * from './components/error-message/error-message.component';\r\nexport * from './components/hint/hint.component';\r\nexport * from './components/input/input.component';\r\nexport * from './components/input-prefix/input-prefix.component';\r\nexport * from './components/input-sufix/input-sufix.component';\r\nexport * from './components/label/label.component';\r\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\ntype tMask =\n | 'cep'\n | 'cnpj'\n | 'cpf'\n | 'data'\n | 'moeda'\n | 'porcentagem'\n | 'telefone'\n | 'telefone-fixo';\n\n@Directive({\n selector: '[s4yMask]',\n standalone: true,\n})\nexport class MaskDirective implements AfterViewInit {\n mask = input<tMask | undefined>(undefined, { alias: 's4yMask' });\n showMaskType = input<boolean>(false);\n\n private control = inject(NgControl, { optional: true });\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n ngAfterViewInit(): void {\n if (this.showMaskType()) {\n this._applyPlaceholderMask();\n }\n }\n\n private _applyPlaceholderMask() {\n const input = this.el.nativeElement;\n\n switch (this.mask()) {\n case 'cep':\n input.value = this._toCEP(input.value);\n break;\n case 'cpf':\n input.value = this._toCPF(input.value);\n break;\n case 'cnpj':\n input.value = this._toCNPJ(input.value);\n break;\n case 'data':\n input.value = this._toDate(input.value);\n break;\n case 'moeda':\n input.value = this._toCurrency(input.value);\n break;\n case 'porcentagem':\n input.value = this._toPercent(input.value);\n break;\n case 'telefone':\n input.value = this._toMobilePhone(input.value);\n break;\n case 'telefone-fixo':\n input.value = this._toLandlinePhone(input.value);\n break;\n }\n }\n\n @HostListener('focus')\n @HostListener('click')\n onFocusOrClick() {\n const input = this.el.nativeElement;\n const value = input.value;\n\n const templates: Record<tMask, string> = {\n data: '__/__/____',\n cpf: '___.___.___-__',\n cnpj: '__.___.___/____-__',\n cep: '_____-___',\n moeda: '', // máscara de moeda não precisa de cursor fixo\n porcentagem: '', // idem\n telefone: '(__) _____-____',\n 'telefone-fixo': '(__) ____-____',\n };\n\n const template = templates[this.mask()!];\n\n // Só reposiciona se tiver template definido\n if (template) {\n this._setCursorToNextEditable(template, value);\n }\n }\n\n @HostListener('input', ['$event'])\n private onInput(e: InputEvent) {\n const input = this.el.nativeElement;\n const value = input.value;\n\n switch (this.mask()) {\n case 'data': {\n const template = '__/__/____';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'cpf': {\n const template = '___.___.___-__';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'cnpj': {\n const template = '__.___.___/____-__';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'cep': {\n const template = '_____-___';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'telefone': {\n const template = '(__) _____-____';\n const masked = this._toMobilePhone(value);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n case 'telefone-fixo': {\n const template = '(__) ____-____';\n const masked = this._toLandlinePhone(value);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'moeda': {\n input.value = this._toCurrency(value);\n break;\n }\n\n case 'porcentagem': {\n input.value = this._toPercent(value);\n break;\n }\n }\n\n if (this.control && this.control.control) {\n this.control.control.setValue(input.value, { emitEvent: false });\n }\n }\n\n private _toDate = (value: string) =>\n this._applyMaskTemplate(value, '__/__/____');\n\n private _toCPF = (value: string) =>\n this._applyMaskTemplate(value, '___.___.___-__');\n\n private _toCNPJ = (value: string) =>\n this._applyMaskTemplate(value, '__.___.___/____-__');\n\n private _toCEP = (value: string) =>\n this._applyMaskTemplate(value, '_____-___');\n\n private _toMobilePhone = (value: string): string =>\n this._applyMaskTemplate(value, '(__) _____-____');\n\n private _toLandlinePhone = (value: string): string =>\n this._applyMaskTemplate(value, '(__) ____-____');\n\n private _toCurrency = (value: string) => {\n // Remove qualquer caractere não numérico\n const cleaned = value.replace(/\\D/g, '');\n\n // Se estiver vazio, retorna 0 formatado\n if (!cleaned) return 'R$ 0,00';\n\n const number = parseFloat(cleaned) / 100;\n\n return number.toLocaleString('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n });\n };\n\n private _toPercent = (value: string) => {\n // Remove tudo que não for número\n const cleaned = value.replace(/\\D/g, '');\n\n // Limita a 6 dígitos (ex: 999999 → 9999,99%)\n const limited = cleaned.slice(0, 6);\n\n // Garante um valor numérico válido\n const number = parseFloat(limited || '0') / 100;\n\n // Formata com 2 casas decimais e adiciona % manualmente\n return (\n number.toLocaleString('pt-BR', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }) + '%'\n );\n };\n\n private _applyMaskTemplate(value: string, template: string): string {\n const result = template.split('');\n let i = 0;\n\n for (const digit of value.replace(/\\D/g, '')) {\n while (i < result.length && !['_'].includes(result[i])) i++;\n if (i < result.length) result[i++] = digit;\n }\n\n return result.join('');\n }\n\n private _getCursorPosition(template: string, digitsCount: number): number {\n let count = 0;\n for (let i = 0; i < template.length; i++) {\n if (template[i].match(/[_\\d]/)) count++;\n if (count >= digitsCount) return i + 1;\n }\n return template.length;\n }\n\n private _setCursorToNextEditable(template: string, value: string) {\n const input = this.el.nativeElement;\n const digits = value.replace(/\\D/g, '');\n const nextPos = this._getCursorPosition(template, digits.length);\n setTimeout(() => input.setSelectionRange(nextPos, nextPos));\n }\n}\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[s4yClickOutside]',\r\n standalone: true,\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() isVisible: boolean = false;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n handleClick(targetElement: HTMLElement): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n AnimationTriggerMetadata,\r\n} from '@angular/animations';\r\n\r\nexport const ToastAnimation: AnimationTriggerMetadata = trigger(\r\n 'ToastAnimation',\r\n [\r\n // TOPO\r\n transition('top-left => void, top-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(-20px)' })\r\n ),\r\n ]),\r\n transition('void => top-left, void => top-right', [\r\n style({ opacity: 0, transform: 'translateY(-20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n\r\n // BOTTOM\r\n transition('bottom-left => void, bottom-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' })\r\n ),\r\n ]),\r\n transition('void => bottom-left, void => bottom-right', [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n ]\r\n);\r\n","import { computed, Injectable, signal } from '@angular/core';\r\nimport { iToast } from './toast.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n private _toasts = signal<iToast[]>([]);\r\n\r\n toasts = computed(() => this._toasts());\r\n\r\n add(toast: iToast) {\r\n const internalId =\r\n typeof crypto?.randomUUID === 'function'\r\n ? crypto.randomUUID()\r\n : this.generateUUID();\r\n\r\n const toastWithId: iToast = { ...toast, __internalId: internalId };\r\n\r\n this._toasts.update((list) => [...list, toastWithId]);\r\n\r\n if (toast.duration && toast.duration > 0) {\r\n setTimeout(() => {\r\n this.removeByInternalId(internalId);\r\n }, toast.duration);\r\n }\r\n }\r\n\r\n remove(index: number) {\r\n this._toasts.update((prevState) => {\r\n const newToasts = prevState.filter((_, i) => index != i);\r\n\r\n return newToasts;\r\n });\r\n }\r\n\r\n removeByInternalId(id: string) {\r\n this._toasts.update((list) =>\r\n list.filter((toast) => toast.__internalId !== id),\r\n );\r\n }\r\n\r\n clearAll() {\r\n this._toasts.set([]);\r\n }\r\n\r\n private generateUUID(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","import { Component, computed, input, signal } from '@angular/core';\r\nimport { ToastService } from './toast.service';\r\nimport { ToastAnimation } from './toast.animation';\r\nimport { ToastPosition } from './toast.interface';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-toast',\r\n imports: [NgClass],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n animations: [ToastAnimation],\r\n})\r\nexport class ToastComponent {\r\n position = input<ToastPosition>('top-left');\r\n\r\n constructor(protected _toastService: ToastService) {}\r\n\r\n protected toasts = computed(() => this._toastService.toasts());\r\n\r\n isBottomPosition = computed(() => this.position().startsWith('bottom'));\r\n}\r\n","<!-- Ajustar os icones -->\r\n\r\n<div class=\"s4y-toast-container\" [ngClass]=\"position()\">\r\n @for (toast of toasts(); track $index; let i = $index) {\r\n <div class=\"s4y-toast-item\" [@ToastAnimation]=\"position()\">\r\n <div class=\"s4y-toast-item_content\">\r\n <div class=\"s4y-toast-item_icon {{ toast.type }}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#fff\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 7H13V9H11V7ZM11 11H13V17H11V11Z\"\r\n ></path>\r\n </svg>\r\n </div>\r\n <p class=\"s4y-toast-item_message\">\r\n {{ toast.message }}\r\n </p>\r\n </div>\r\n <button (click)=\"_toastService.remove(i)\" class=\"s4y-toast-item_close\">\r\n ×\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const drawerAnimation = trigger('drawerAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out', style({ opacity: 1 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: '{{transformFrom}}' }),\r\n animate('300ms ease-out', style({ transform: 'translate(0, 0)' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformFrom: 'translateX(100%)' } }\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 1 }),\r\n animate('300ms ease-in', style({ opacity: 0 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: 'translate(0, 0)' }),\r\n animate('300ms ease-in', style({ transform: '{{transformTo}}' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformTo: 'translateX(100%)' } }\r\n ),\r\n]);\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n HostListener,\r\n input,\r\n model,\r\n computed,\r\n OnInit,\r\n effect,\r\n contentChild,\r\n TemplateRef,\r\n ContentChild,\r\n} from '@angular/core';\r\nimport { drawerAnimation } from './drawer.animation';\r\n\r\ntype tPosition = 'left' | 'right' | 'top' | 'bottom';\r\ntype tSize = 'small' | 'medium' | 'large' | string;\r\n\r\n@Component({\r\n selector: 's4y-drawer',\r\n imports: [NgClass, NgTemplateOutlet],\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.scss',\r\n animations: [drawerAnimation],\r\n})\r\nexport class DrawerComponent implements OnInit {\r\n position = input<tPosition>('right');\r\n isOpen = model<boolean>(false);\r\n size = input<tSize>('medium');\r\n backdrop = input<boolean>(true);\r\n closeOnBackdropClick = input<boolean>(true);\r\n hasCloseButton = input<boolean>(true);\r\n\r\n title = input<string>('Title');\r\n\r\n protected isVisible = computed(() => this.isOpen());\r\n\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('bodyTemplate') bodyTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n drawerSize = computed(() => {\r\n const size = this.size();\r\n const position = this.position();\r\n\r\n let value: string;\r\n\r\n switch (size) {\r\n case 'small':\r\n value = '250px';\r\n break;\r\n case 'medium':\r\n value = '400px';\r\n break;\r\n case 'large':\r\n value = '600px';\r\n break;\r\n default:\r\n value = size;\r\n }\r\n\r\n if (position === 'left' || position === 'right') {\r\n return { width: value, height: null };\r\n } else {\r\n return { width: null, height: value };\r\n }\r\n });\r\n\r\n isHorizontal = computed(() => {\r\n const pos = this.position();\r\n return pos === 'left' || pos === 'right';\r\n });\r\n\r\n isVertical = computed(() => {\r\n const pos = this.position();\r\n return pos === 'top' || pos === 'bottom';\r\n });\r\n\r\n transformFrom = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n transformTo = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n closeOnPressEscapeKey(event: KeyboardEvent) {\r\n this.close();\r\n }\r\n\r\n onBackdropClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n\r\n if (target.classList.contains('s4y-overlay')) {\r\n if (this.closeOnBackdropClick() && this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n }\r\n\r\n close() {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (!this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","@if (isVisible()) {\r\n <div\r\n [@drawerAnimation]=\"{\r\n value: '',\r\n params: {\r\n transformFrom: transformFrom(),\r\n transformTo: transformTo(),\r\n },\r\n }\"\r\n [class.s4y-overlay]=\"backdrop()\"\r\n (click)=\"onBackdropClick($event)\"\r\n >\r\n <div\r\n [style.maxWidth]=\"drawerSize().width\"\r\n [style.maxHeight]=\"drawerSize().height\"\r\n [ngClass]=\"{\r\n 's4y-drawer-left': position() === 'left',\r\n 's4y-drawer-right': position() === 'right',\r\n 's4y-drawer-top': position() === 'top',\r\n 's4y-drawer-bottom': position() === 'bottom',\r\n }\"\r\n class=\"s4y-drawer-container\"\r\n >\r\n <header class=\"s4y-header\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n <!-- -->\r\n @else {\r\n <p class=\"s4y-header__title\">{{ title() }}</p>\r\n @if (hasCloseButton()) {\r\n <button (click)=\"close()\">×</button>\r\n }\r\n }\r\n </header>\r\n\r\n <div class=\"s4y-body-content\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n @if (footerTemplate) {\r\n <div class=\"s4y-footer-content\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Component, input, Input, OnInit } from '@angular/core';\nimport { SpinnerColor, SpinnerSize } from './interface';\n\n@Component({\n selector: 's4y-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n host: {\n '[attr.size]': 'size()',\n '[attr.color]': 'color()',\n },\n})\nexport class SpinnerComponent implements OnInit {\n size = input<SpinnerSize>('small');\n color = input<SpinnerColor>('primary');\n\n constructor() {}\n\n ngOnInit() {}\n}\n","\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n contentChild,\r\n ContentChildren,\r\n ElementRef,\r\n input,\r\n model,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\n\r\n@Component({\r\n selector: 's4y-table',\r\n imports: [CommonModule, SpinnerComponent],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent {\r\n headers = input<any[]>([]);\r\n data = input<any[]>([]);\r\n\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n\r\n @ContentChild('rowTemplate') rowTemplate!: TemplateRef<any>;\r\n @ContentChild('headTemplate') headTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n\r\n errorMessageDefault = input<string>('Não foi possível carregar os dados.');\r\n emptyMessageDefault = input<string>(' Não encontramos dados para exibir.');\r\n}\r\n","<div class=\"s4y-table-container\">\r\n <table class=\"s4y-table\">\r\n <thead>\r\n <ng-container [ngTemplateOutlet]=\"headTemplate\"></ng-container>\r\n </thead>\r\n <tbody>\r\n @if (isLoading()) {\r\n <tr class=\"loading\">\r\n <td [colSpan]=\"headers().length\">\r\n <s4y-spinner></s4y-spinner>\r\n </td>\r\n </tr>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ errorMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"tableContent\"></ng-container>\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<ng-template #SortIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #tableContent>\r\n @for (item of data(); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"rowTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item, idx: $index }\"\r\n >\r\n </ng-container>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ emptyMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n }\r\n</ng-template>\r\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n input,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[s4ySortTable]',\n})\nexport class SortTableDirective implements OnInit, AfterViewInit {\n s4yColumnName = input<string | undefined>(undefined);\n data = input<any[]>([]);\n private isSortedAsc = true;\n private icon: HTMLOrSVGElement | undefined;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n this.icon = this.createIcon();\n\n if (this.icon && this.s4yColumnName()) {\n this.applySortButton();\n }\n }\n\n private createSpanElement() {\n const span = this.renderer.createElement('span') as HTMLSpanElement;\n span.role = 'button';\n\n this.renderer.setStyle(span, 'cursor', 'pointer');\n\n this.renderer.createText(this.svgIconAsc);\n\n return span;\n }\n\n private applySortButton() {\n const thElement = this.el.nativeElement;\n let thText = this.el.nativeElement.textContent.trim();\n thElement.textContent = '';\n /* A div vai agrupar os dois, e espalhar na horizontal */\n const thContainer = this.renderer.createElement('div') as HTMLDivElement;\n const headerText = this.renderer.createText(thText);\n const span = this.createSpanElement();\n\n this.renderer.appendChild(span, this.icon);\n\n this.renderer.appendChild(thContainer, headerText);\n this.renderer.appendChild(thContainer, span);\n\n this.renderer.appendChild(thElement, thContainer);\n\n this.applyStyleInThContainer(thContainer);\n\n this.renderer.listen(span, 'click', () => this.toggleSort());\n }\n\n private toggleSort() {\n this.isSortedAsc = !this.isSortedAsc;\n this.updateSortIcon();\n\n this.sortColumnData();\n }\n\n private createIcon() {\n const icon = this.renderer.createElement('svg') as HTMLOrSVGElement;\n this.renderer.setProperty(icon, 'innerHTML', this.svgIconAsc);\n\n return icon;\n }\n\n private sortColumnData() {\n const columnName = this.s4yColumnName();\n const data = this.data();\n\n if (columnName && columnName.trim() !== '' && data.length > 0) {\n data.sort((a: any, b: any) => {\n const columnA = a[columnName];\n const columnB = b[columnName];\n\n if (columnA < columnB) {\n return this.isSortedAsc ? -1 : 1;\n }\n if (columnA > columnB) {\n return this.isSortedAsc ? 1 : -1;\n }\n return 0;\n });\n\n this.updateSortIcon();\n this.applySortedClass();\n console.log('Dados ordenados:', data); // Dados ordenados no console\n } else {\n console.error('Nome da coluna não definido ou inválido!');\n }\n }\n\n private applySortedClass() {\n const thElements = this.el.nativeElement\n .closest('table')\n .querySelectorAll('th');\n const tdElements = this.el.nativeElement\n .closest('table')\n .querySelectorAll('td');\n\n const thElement = this.el.nativeElement;\n const isAlreadySorted = thElement.classList.contains('sorted');\n\n if (isAlreadySorted) {\n thElements.forEach((th: HTMLElement) => {\n this.renderer.removeClass(th, 'sorted');\n });\n tdElements.forEach((td: HTMLElement) => {\n this.renderer.removeClass(td, 'sorted');\n });\n return;\n }\n\n thElements.forEach((th: HTMLElement) => {\n this.renderer.removeClass(th, 'sorted');\n });\n tdElements.forEach((td: HTMLElement) => {\n this.renderer.removeClass(td, 'sorted');\n });\n\n this.renderer.addClass(thElement, 'sorted');\n\n const columnIndex = Array.from(thElements).indexOf(thElement);\n\n const trElements = this.el.nativeElement\n .closest('table')\n .querySelectorAll('tr');\n trElements.forEach((tr: HTMLElement) => {\n const td = tr.children[columnIndex];\n if (td) {\n this.renderer.addClass(td, 'sorted');\n }\n });\n }\n\n private applyStyleInThContainer(thContainer: HTMLDivElement) {\n this.renderer.setStyle(thContainer, 'display', 'flex');\n this.renderer.setStyle(thContainer, 'justify-content', 'space-between');\n this.renderer.setStyle(thContainer, 'align-items', 'center');\n }\n\n private updateSortIcon() {\n let iconSvg = this.isSortedAsc ? this.svgIconAsc : this.svgIconDesc;\n\n this.renderer.setProperty(this.icon, 'innerHTML', iconSvg);\n }\n\n private svgIconAsc = `<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"1.8rem\"\n height=\"1.8rem\"\n >\n <path\n d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"\n ></path>\n </svg>`;\n\n private svgIconDesc = `<svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1.8rem\"\n height=\"1.8rem\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"><path d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM21.9999 8L17.9999 3L13.9999 8H16.9999V21H18.9999V8H21.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"></path></svg>`;\n}\n","import {\r\n trigger,\r\n transition,\r\n style,\r\n animate,\r\n AnimationTriggerMetadata,\r\n group,\r\n query,\r\n} from '@angular/animations';\r\n\r\nexport const modalFadeCombined: AnimationTriggerMetadata = trigger(\r\n 'modalFadeCombined',\r\n [\r\n transition(':enter', [\r\n group([\r\n query('.s4y-backdrop', [\r\n style({ opacity: 0 }),\r\n animate('200ms ease-out', style({ opacity: 1 })),\r\n ]),\r\n query('.s4y-modal-container', [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '250ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n transition(':leave', [\r\n group([\r\n query('.s4y-backdrop', [\r\n animate('200ms ease-in', style({ opacity: 0 })),\r\n ]),\r\n query('.s4y-modal-container', [\r\n animate(\r\n '200ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n ],\r\n);\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n input,\r\n model,\r\n output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from './modal.animation';\r\n\r\n@Component({\r\n selector: 's4y-modal',\r\n imports: [CommonModule],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalComponent {\r\n @ContentChild('modalHeaderTemplate') modalHeaderTemplate!: TemplateRef<any>;\r\n @ContentChild('modalFooterTemplate') modalFooterTemplate!: TemplateRef<any>;\r\n\r\n title = input<string>('Titulo');\r\n\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n closeModal = output();\r\n\r\n visible = model<boolean>(false);\r\n withHeader = model<boolean>(true);\r\n\r\n onClose() {\r\n this.visible.set(false);\r\n }\r\n}\r\n","@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"s4y-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Injectable, signal, computed } from '@angular/core';\r\nimport { tButtonVariant } from '../button/button.interface';\r\nimport { iModalConfirmationProps } from './modal-confirmation.interface';\r\n\r\n@Injectable()\r\nexport class ModalConfirmationService {\r\n private _modalConfirmation = signal<iModalConfirmationProps>({\r\n title: 'Confirmação',\r\n message: 'Tem certeza que deseja continuar?',\r\n });\r\n\r\n private _visible = signal(false);\r\n\r\n modalConfirmation = computed(() => this._modalConfirmation());\r\n isVisible = computed(() => this._visible());\r\n\r\n open(modalConfig: iModalConfirmationProps) {\r\n this._modalConfirmation.set(modalConfig);\r\n this._visible.set(true);\r\n }\r\n\r\n onConfirm() {\r\n this._modalConfirmation().confirm?.();\r\n this.close();\r\n }\r\n\r\n onCancel() {\r\n this._modalConfirmation().cancel?.();\r\n this.close();\r\n }\r\n\r\n close() {\r\n this._visible.set(false);\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n ContentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from '../modal/modal.animation';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ModalConfirmationService } from './modal-confirmation.service';\r\nimport { iButtonProps } from './modal-confirmation.interface';\r\n\r\n@Component({\r\n selector: 's4y-modal-confirmation',\r\n imports: [CommonModule, ButtonComponent],\r\n templateUrl: './modal-confirmation.component.html',\r\n styleUrl: './modal-confirmation.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalConfirmationComponent {\r\n protected modalConfirmationService = inject(ModalConfirmationService);\r\n @ContentChild('iconTemplate') iconTemplate!: TemplateRef<any>;\r\n\r\n protected modalConfigs = this.modalConfirmationService.modalConfirmation;\r\n\r\n visible = this.modalConfirmationService.isVisible;\r\n\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n buttonCancelProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonCancelProps ?? {\r\n text: 'Cancelar',\r\n outlined: true,\r\n },\r\n );\r\n buttonConfirmProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonConfirmProps ?? {\r\n text: 'Sim, confirmar',\r\n outlined: false,\r\n },\r\n );\r\n\r\n onConfirm() {\r\n this.modalConfirmationService.onConfirm();\r\n }\r\n\r\n onCancel() {\r\n this.modalConfirmationService.onCancel();\r\n }\r\n\r\n onClose() {\r\n this.modalConfirmationService.close();\r\n }\r\n}\r\n","@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (iconTemplate) {\r\n <div class=\"s4y-modal-icon\">\r\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\r\n </div>\r\n }\r\n <div class=\"s4y-modal-header\">\r\n <h3>{{ modalConfigs().title }}</h3>\r\n <p>\r\n {{ modalConfigs().message }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"s4y-modal-body\">\r\n <button\r\n (click)=\"onCancel()\"\r\n s4yButton\r\n [variant]=\"buttonCancelProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonCancelProps().outlined ?? true\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonCancelProps().text }}\r\n </button>\r\n <button\r\n (click)=\"onConfirm()\"\r\n s4yButton\r\n [variant]=\"buttonConfirmProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonConfirmProps().outlined ?? false\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonConfirmProps().text }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-search-bar',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './search-bar.component.html',\r\n styleUrl: './search-bar.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchBarComponent {}\r\n","<label class=\"s4y-search-bar-container\">\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n <ng-content select=\"input[s4ySearchBar]\"></ng-content>\r\n</label>\r\n\r\n<ng-template #searchIcon>\r\n <span class=\"s4y-search-bar__icon\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component, input, model } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\ntype iToggleSize = 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-toggle',\r\n imports: [FormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: ToggleComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ToggleComponent implements ControlValueAccessor {\r\n model = model<boolean>(false);\r\n disabled = input<boolean>(false);\r\n size = input<iToggleSize>('medium');\r\n\r\n protected disabledWithReactives: boolean = false;\r\n\r\n onChange = (value: boolean) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.model.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabledWithReactives = isDisabled;\r\n }\r\n\r\n onToggle() {\r\n if (this.disabled() || this.disabledWithReactives) return;\r\n\r\n this.model.update((prevState) => !prevState);\r\n this.onTouched();\r\n this.onChange(this.model());\r\n }\r\n}\r\n","<label class=\"s4y-switch\" [class]=\"size()\">\r\n <input\r\n (input)=\"onToggle()\"\r\n type=\"checkbox\"\r\n [checked]=\"model()\"\r\n [disabled]=\"disabled() || disabledWithReactives\"\r\n />\r\n <span class=\"slider round\"></span>\r\n</label>\r\n","import { Component, input, model } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-checkbox',\r\n imports: [FormsModule],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: CheckboxComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CheckboxComponent implements ControlValueAccessor {\r\n model = model<boolean>(false);\r\n\r\n id = input.required<string>();\r\n name = input.required<string>();\r\n\r\n label = input<string>();\r\n\r\n isDisabled: boolean = false;\r\n\r\n onChange = (value: boolean) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.model.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n onToggleCheckbox() {\r\n if (this.isDisabled) return;\r\n\r\n this.model.update((prevState) => !prevState);\r\n this.onTouched();\r\n this.onChange(this.model());\r\n }\r\n}\r\n","<div\r\n class=\"s4y-checkbox-wrapper\"\r\n (click)=\"onToggleCheckbox()\"\r\n [class.disabled]=\"isDisabled\"\r\n>\r\n <input\r\n class=\"s4y-inp-cbx\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"checkbox\"\r\n [checked]=\"model()\"\r\n [disabled]=\"isDisabled\"\r\n />\r\n <label class=\"cbx\" [for]=\"id()\"\r\n ><span>\r\n <svg width=\"12px\" height=\"10px\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </svg>\r\n </span>\r\n @if (label()) {\r\n <span>\r\n {{ label() }}\r\n </span>\r\n }\r\n </label>\r\n</div>\r\n","import { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n computed,\r\n model,\r\n signal,\r\n output,\r\n} from '@angular/core';\r\nimport { IPagination } from './pagination.interface';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-pagination',\r\n imports: [NgTemplateOutlet, CommonModule, FormsModule],\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss',\r\n})\r\nexport class PaginationComponent {\r\n currentPage = model<number>(0);\r\n totalResults = input<number>(0);\r\n rowsPerPageOptions = input<number[]>([5, 10, 15, 20]);\r\n rowsPerPage = signal(5);\r\n\r\n onChange = output<IPagination>();\r\n\r\n totalPages = computed(() =>\r\n Math.ceil(this.totalResults() / this.rowsPerPage()),\r\n );\r\n\r\n // offset = computed(() => Math.max(0, this.limit() - this.rowsPerPage() + 1));\r\n\r\n offset = computed(() =>\r\n this.totalResults() === 0 ? 0 : this.currentPage() * this.rowsPerPage() + 1,\r\n );\r\n\r\n limit = computed(() =>\r\n Math.min(\r\n (this.currentPage() + 1) * this.rowsPerPage(),\r\n this.totalResults(),\r\n ),\r\n );\r\n\r\n smartPageArray = computed(() => {\r\n const total = this.totalPages();\r\n const current = this.currentPage();\r\n const windowSize = 5;\r\n const pages: (number | '...')[] = [];\r\n\r\n if (total <= windowSize + 2) {\r\n for (let i = 0; i < total; i++) pages.push(i);\r\n return pages;\r\n }\r\n\r\n const start = Math.max(1, current - 1);\r\n const end = Math.min(total - 2, current + 1);\r\n\r\n pages.push(0); // sempre mostra a primeira página\r\n\r\n if (start > 1) pages.push('...');\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < total - 2) pages.push('...');\r\n\r\n pages.push(total - 1); // última página\r\n\r\n return pages;\r\n });\r\n\r\n // limit = computed(() =>\r\n // Math.min(this.rowsPerPage() * this.currentPage(), this.totalResults()),\r\n // );\r\n\r\n // smartPageArray = computed(() => {\r\n // const total = this.totalPages();\r\n // const current = this.currentPage();\r\n // const windowSize = 5;\r\n // const pages: (number | '...')[] = [];\r\n\r\n // if (total <= windowSize + 2) {\r\n // // mostra todas as páginas se for pequeno\r\n // for (let i = 1; i <= total; i++) pages.push(i);\r\n // return pages;\r\n // }\r\n\r\n // const start = Math.max(2, current - 1);\r\n // const end = Math.min(total - 1, current + 1);\r\n\r\n // pages.push(1); // sempre mostra a primeira página\r\n\r\n // if (start > 2) pages.push('...');\r\n\r\n // for (let i = start; i <= end; i++) {\r\n // pages.push(i);\r\n // }\r\n\r\n // if (end < total - 1) pages.push('...');\r\n\r\n // pages.push(total); // sempre mostra a última página\r\n\r\n // return pages;\r\n // });\r\n\r\n // totalPageArr = computed(() => {\r\n // let arr: number[] = [];\r\n // let calculateTotalPages = this.totalPages() + 1;\r\n\r\n // for (let i = 1; i < calculateTotalPages; i++) {\r\n // arr.push(i);\r\n // }\r\n // return arr;\r\n // });\r\n\r\n protected changePage(selectedPage: number) {\r\n this.currentPage.set(selectedPage);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n prevButtonDisabled = computed(() => this.currentPage() <= 0);\r\n nextButtonDisabled = computed(\r\n () => this.currentPage() >= this.totalPages() - 1,\r\n );\r\n\r\n // prevButtonDisabled = computed(\r\n // () => this.currentPage() <= -1 || this.currentPage() == 1,\r\n // );\r\n // nextButtonDisabled = computed(() => this.currentPage() == this.totalPages());\r\n\r\n prevPage() {\r\n if (this.currentPage() <= 0) return;\r\n this.currentPage.update((prevValue) => prevValue - 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage() == this.totalPages()) return;\r\n this.currentPage.update((prevValue) => prevValue + 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n selectRowsPerPage(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n const value = Number(selectElement.value);\r\n\r\n this.rowsPerPage.set(value ?? 5);\r\n this.currentPage.set(0);\r\n\r\n this.recalcCurrentPage();\r\n }\r\n\r\n private recalcCurrentPage() {\r\n // if (this.currentPage() > Math.max(...this.totalPageArr())) {\r\n // const lastPage = Math.max(...this.totalPageArr());\r\n // this.currentPage.set(lastPage);\r\n // }\r\n\r\n if (this.currentPage() > this.totalPages()) {\r\n const lastPage = this.totalPages();\r\n this.currentPage.set(lastPage);\r\n }\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n private emitChangeValue() {\r\n this.onChange.emit({\r\n currentPage: this.currentPage(),\r\n limit: this.limit(),\r\n offset: this.offset(),\r\n totalPages: this.totalPages(),\r\n rowsPerPage: this.rowsPerPage(),\r\n });\r\n }\r\n}\r\n","<div class=\"s4y-pagination-container desktop\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n @if (totalResults() > 0) {\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Mobile -->\r\n<div class=\"s4y-pagination-container mobile\">\r\n <div class=\"flex justify-between align-center\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #arrowLeft>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.8284 12.0005L14.6569 14.8289L13.2426 16.2431L9 12.0005L13.2426 7.75781L14.6569 9.17203L11.8284 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowRight>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.1717 12.0005L9.34326 9.17203L10.7575 7.75781L15.0001 12.0005L10.7575 16.2431L9.34326 14.8289L12.1717 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const selectAnimation = trigger('selectAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n overflowY: 'hidden',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n transition(':leave', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n overflowY: 'hidden',\r\n background: 'red',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n]);\r\n","import { CommonModule, NgIf } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n ContentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n OnInit,\r\n output,\r\n signal,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { selectAnimation } from './select.animation';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ClickOutsideDirective } from '../../directives';\r\n\r\n@Component({\r\n selector: 's4y-select',\r\n imports: [NgIf, CommonModule, SpinnerComponent, ClickOutsideDirective],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n animations: [selectAnimation],\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n withSearch = input<boolean>(false);\r\n maxScreen = input<boolean>(false);\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n label = input<string>();\r\n\r\n errorMessageDefault = input<string>(\r\n 'Erro ao carregar as opções. Tente novamente mais tarde.',\r\n );\r\n emptyMessageDefault = input<string>('Nenhuma opção disponível');\r\n selectedOption: any = null;\r\n\r\n onSearch = output<string>();\r\n options = input<any[]>([]);\r\n\r\n transformedOptions = computed(() =>\r\n this.options().map((option) => ({\r\n option,\r\n selected: this.isEqual(option, this.selectedValue()),\r\n })),\r\n );\r\n\r\n selectedValue = signal<any>(null);\r\n\r\n @ContentChild('optionTemplate') optionTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('selectedOptionTemplate')\r\n selectedOptionTemplate!: TemplateRef<any>;\r\n\r\n isOpened: boolean = false;\r\n isDisabled: boolean = false;\r\n\r\n widthStyle = computed(() => (this.maxScreen() ? '100%' : '32rem'));\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n ngOnInit(): void {\r\n // this.transformedOptions = this.includeSelectedProperty();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // this.transformedOptions = this.includeSelectedProperty();\r\n this.selectedValue.set(value);\r\n this.markAllUnselected();\r\n\r\n const matchedOption = this.transformedOptions().find((opt) =>\r\n this.isEqual(opt.option, value),\r\n );\r\n\r\n if (matchedOption) {\r\n matchedOption.selected = true;\r\n this.selectedOption = matchedOption;\r\n } else {\r\n this.selectedOption = {\r\n option: value,\r\n selected: true,\r\n };\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n setSelectedOption(selectedOption: any) {\r\n this.selectedOption = selectedOption;\r\n\r\n this.markAllUnselected();\r\n\r\n if (selectedOption && typeof selectedOption == 'object') {\r\n this.selectedOption['selected'] = true;\r\n }\r\n\r\n this.isOpened = false;\r\n this.onTouched();\r\n\r\n const originalOption = selectedOption?.option ?? selectedOption;\r\n\r\n this.onChange(originalOption);\r\n }\r\n\r\n handleSearch(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.onSearch.emit(value);\r\n }\r\n\r\n private includeSelectedProperty() {\r\n return this.options().map((option) => ({\r\n option: option,\r\n selected: false,\r\n }));\r\n }\r\n\r\n private markAllUnselected() {\r\n this.transformedOptions().forEach((option) => (option['selected'] = false));\r\n }\r\n\r\n private isEqual(opt1: any, opt2: any): boolean {\r\n return opt1?.id !== undefined && opt2?.id !== undefined\r\n ? opt1.id === opt2.id\r\n : JSON.stringify(opt1) === JSON.stringify(opt2); // fallback genérico\r\n }\r\n}\r\n","<label\r\n class=\"s4y-select-container\"\r\n [style.maxWidth]=\"widthStyle()\"\r\n s4yClickOutside\r\n (clickOutside)=\"isOpened = false\"\r\n>\r\n <p class=\"s4y-select-label\">\r\n {{ label() }}\r\n </p>\r\n\r\n <div\r\n class=\"s4y-select-container__wrapper\"\r\n [class.disabled]=\"isDisabled\"\r\n (click)=\"isOpened = !isOpened\"\r\n [attr.aria-expanded]=\"isOpened ? 'true' : 'false'\"\r\n tabindex=\"0\"\r\n aria-controls=\"select-options-container\"\r\n >\r\n <div class=\"s4y-select-container__placeholder\">\r\n @if (selectedOptionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: selectedOption?.option }\"\r\n ></ng-container>\r\n } @else {\r\n @if (!selectedOption) {\r\n <p>Selecione...</p>\r\n } @else {\r\n <p>{{ selectedOption }}</p>\r\n }\r\n }\r\n </div>\r\n @if (isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowUp\"></ng-container>\r\n }\r\n @if (!isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowDown\"></ng-container>\r\n }\r\n </div>\r\n <div @selectAnimation class=\"s4y-select-options-container\" *ngIf=\"isOpened\">\r\n <div class=\"s4y-select-options\">\r\n @if (isLoading()) {\r\n <div class=\"s4y-select-container__loading\">\r\n <s4y-spinner [size]=\"'mini'\"></s4y-spinner>\r\n </div>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <p class=\"s4y-select-options__message\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p class=\"s4y-select-options__message\">\r\n {{ errorMessageDefault() }}\r\n </p>\r\n }\r\n } @else {\r\n @if (withSearch()) {\r\n <div class=\"s4y-select-options__search\">\r\n <input\r\n (input)=\"handleSearch($event)\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n name=\"search-option\"\r\n id=\"search-option\"\r\n autocomplete=\"off\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </div>\r\n }\r\n <div\r\n class=\"s4y-select-options__scroll\"\r\n role=\"listbox\"\r\n aria-live=\"polite\"\r\n >\r\n @for (option of transformedOptions(); track $index) {\r\n <p\r\n [class.selected]=\"option.selected\"\r\n class=\"s4y-select-options__item\"\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n tabindex=\"0\"\r\n (click)=\"setSelectedOption(option)\"\r\n (keyup.enter)=\"setSelectedOption(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate;\r\n context: { $implicit: option?.option }\r\n \"\r\n ></ng-container>\r\n </p>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n {{ emptyMessageDefault() }}\r\n </p>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</label>\r\n\r\n<!-- arrows -->\r\n<ng-template #arrowDown>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #searchIcon>\r\n <svg\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11 2C15.968 2 20 6.032 20 11C20 15.968 15.968 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2ZM11 18C14.8675 18 18 14.8675 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18ZM19.4853 18.0711L22.3137 20.8995L20.8995 22.3137L18.0711 19.4853L19.4853 18.0711Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { JsonPipe, NgStyle } from '@angular/common';\r\nimport { Component, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-slider',\r\n imports: [NgStyle],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements ControlValueAccessor {\r\n showValue = input(true);\r\n min = input<string>('0');\r\n max = input<string>('100');\r\n step = input<string>('5');\r\n rangeStyle = input<{ [key: string]: string }>({});\r\n\r\n disabled = false;\r\n\r\n value: number = 0;\r\n\r\n onChange: (value: any) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: any): void {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n changeValue(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = typeof value === 'number' ? value : Number(value);\r\n this.onChange(value);\r\n }\r\n}\r\n","<input\r\n #rangeElement\r\n [ngStyle]=\"rangeStyle\"\r\n type=\"range\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [step]=\"step()\"\r\n [disabled]=\"disabled\"\r\n [value]=\"value\"\r\n (input)=\"changeValue($event)\"\r\n/>\r\n\r\n@if (showValue()) {\r\n <p class=\"s4y-ranger-value\">\r\n {{ rangeElement.value }}\r\n </p>\r\n}\r\n","import { Component, forwardRef, input } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n RadioControlValueAccessor,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-radio',\r\n imports: [],\r\n templateUrl: './radio.component.html',\r\n styleUrl: './radio.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RadioComponent implements ControlValueAccessor {\r\n label = input<string>();\r\n name = input<string>();\r\n id = input<string>();\r\n radioValue = input.required<string>();\r\n\r\n disabled: boolean = false;\r\n\r\n value: string | null = null;\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInput(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n}\r\n","<label class=\"s4y-radio\" [class.disabled]=\"disabled\">\r\n <input\r\n [value]=\"radioValue()\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"radio\"\r\n (input)=\"onInput($event)\"\r\n [checked]=\"value == radioValue()\"\r\n />\r\n @if (label()) {\r\n <span class=\"s4y-radio-label\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</label>\r\n","export enum TooltipPosition {\r\n ABOVE = 'above',\r\n BELOW = 'below',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n DYNAMIC = 'dynamic',\r\n DEFAULT = 'above',\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Component({\r\n selector: 's4y-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.scss'],\r\n standalone: false,\r\n})\r\nexport class TooltipComponent implements OnInit {\r\n position: TooltipPosition = TooltipPosition.DEFAULT;\r\n tooltip = '';\r\n left = 0;\r\n top = 0;\r\n visible = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div\r\n class=\"tooltip {{ 'tooltip--' + position }}\"\r\n [class.tooltip--visible]=\"visible\"\r\n [style.left]=\"left + 'px'\"\r\n [style.top]=\"top + 'px'\"\r\n>\r\n {{ tooltip }}\r\n</div>\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Directive({\r\n selector: '[s4yTooltip]',\r\n standalone: false,\r\n})\r\nexport class TooltipDirective {\r\n @Input('s4yTooltip') tooltip = '';\r\n @Input('s4yTooltipPosition') position: TooltipPosition =\r\n TooltipPosition.DEFAULT;\r\n @Input() showDelay = 0;\r\n @Input() hideDelay = 0;\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n private showTimeout?: number;\r\n private hideTimeout?: number;\r\n private touchTimeout?: number;\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private injector: Injector,\r\n ) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.initializeTooltip();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n onMouseMove($event: MouseEvent): void {\r\n if (\r\n this.componentRef !== null &&\r\n this.position === TooltipPosition.DYNAMIC\r\n ) {\r\n this.componentRef.instance.left = $event.clientX;\r\n this.componentRef.instance.top = $event.clientY;\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n }\r\n }\r\n\r\n @HostListener('touchstart', ['$event'])\r\n onTouchStart($event: TouchEvent): void {\r\n $event.preventDefault();\r\n window.clearTimeout(this.touchTimeout);\r\n this.touchTimeout = window.setTimeout(\r\n this.initializeTooltip.bind(this),\r\n 500,\r\n );\r\n }\r\n\r\n @HostListener('touchend')\r\n onTouchEnd(): void {\r\n window.clearTimeout(this.touchTimeout);\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n private initializeTooltip() {\r\n if (this.componentRef === null) {\r\n window.clearInterval(this.hideDelay);\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const [tooltipDOMElement] = (\r\n this.componentRef.hostView as EmbeddedViewRef<any>\r\n ).rootNodes;\r\n\r\n this.setTooltipComponentProperties();\r\n\r\n document.body.appendChild(tooltipDOMElement);\r\n this.showTimeout = window.setTimeout(\r\n this.showTooltip.bind(this),\r\n this.showDelay,\r\n );\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n this.componentRef.instance.position = this.position;\r\n\r\n const { left, right, top, bottom } =\r\n this.elementRef.nativeElement.getBoundingClientRect();\r\n\r\n switch (this.position) {\r\n case TooltipPosition.BELOW: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(bottom);\r\n break;\r\n }\r\n case TooltipPosition.ABOVE: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(top);\r\n break;\r\n }\r\n case TooltipPosition.RIGHT: {\r\n this.componentRef.instance.left = Math.round(right);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n case TooltipPosition.LEFT: {\r\n this.componentRef.instance.left = Math.round(left);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private showTooltip() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.visible = true;\r\n }\r\n }\r\n\r\n private setHideTooltipTimeout() {\r\n this.hideTimeout = window.setTimeout(\r\n this.destroy.bind(this),\r\n this.hideDelay,\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n window.clearInterval(this.showTimeout);\r\n window.clearInterval(this.hideDelay);\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { CommonModule, NgClass } from '@angular/common';\r\nimport { TooltipDirective } from './tooltip.directive';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\n\r\n@NgModule({\r\n declarations: [TooltipComponent, TooltipDirective],\r\n imports: [CommonModule, NgClass],\r\n exports: [TooltipDirective],\r\n})\r\nexport class TooltipModule {}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * This directive is used to customize the breadcrumb label behavior\r\n * *s4yBreadcrumbItem directive can be used in the child element of s4yBreadcrumbItem\r\n * Usage: refer to the demo - app.component.html\r\n */\r\n@Directive({\r\n selector: '[s4yBreadcrumbItem]',\r\n standalone: true,\r\n})\r\nexport class BreadcrumbItemDirective {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n GuardsCheckEnd,\r\n Router,\r\n} from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport {\r\n BreadcrumbDefinition,\r\n Breadcrumb,\r\n BreadcrumbConfig,\r\n BreadcrumbObject,\r\n} from './types';\r\n\r\ntype StoreMatcherKey = 'routeLink' | 'routeRegex' | 'alias';\r\n\r\nconst PATH_PARAM = {\r\n PREFIX: ':',\r\n REGEX_IDENTIFIER: '/:[^/]+',\r\n REGEX_REPLACER: '/[^/]+',\r\n};\r\nconst ALIAS_PREFIX = '@';\r\nconst isNonEmpty = (obj: unknown): boolean => {\r\n return !!obj && Object.keys(obj).length > 0;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreadcrumbService {\r\n private baseHref = '/';\r\n\r\n /**\r\n * dynamicBreadcrumbStore holds information about dynamically updated breadcrumbs.\r\n * Breadcrumbs can be set from anywhere (component, service) in the app.\r\n * On every breadcrumb update check this store and use the info if available.\r\n */\r\n private dynamicBreadcrumbStore: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * breadcrumbList for the current route\r\n * When breadcrumb info is changed dynamically, check if the currentBreadcrumbs is effected\r\n * If effected, update the change and emit a new stream\r\n */\r\n private currentBreadcrumbs: BreadcrumbDefinition[] = [];\r\n private previousBreadcrumbs: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * Breadcrumbs observable to be subscribed by BreadcrumbComponent\r\n * Emits on every route change OR dynamic update of breadcrumb\r\n */\r\n private breadcrumbs = new BehaviorSubject<BreadcrumbDefinition[]>([]);\r\n public breadcrumbs$ = this.breadcrumbs.asObservable();\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n ) {\r\n this.detectRouteChanges();\r\n }\r\n\r\n /**\r\n * Whenever route changes build breadcrumb list again\r\n */\r\n private detectRouteChanges() {\r\n // Special case where breadcrumb service & component instantiates after a route is navigated.\r\n // Ex: put breadcrumbs within *ngIf and this.router.events would be empty\r\n // This check is also required where { initialNavigation: 'enabledBlocking' } is applied to routes\r\n this.setupBreadcrumbs(this.activatedRoute.snapshot);\r\n\r\n this.router.events\r\n .pipe(\r\n filter(\r\n (event): event is GuardsCheckEnd => event instanceof GuardsCheckEnd,\r\n ),\r\n )\r\n .subscribe((event) => {\r\n // activatedRoute doesn't carry data when shouldReuseRoute returns false\r\n // use the event data with GuardsCheckEnd as workaround\r\n // Check for shouldActivate in case where the authGuard returns false the breadcrumbs shouldn't be changed\r\n if (event.shouldActivate) {\r\n this.setupBreadcrumbs(event.state.root);\r\n }\r\n });\r\n }\r\n\r\n private setupBreadcrumbs(activatedRouteSnapshot: ActivatedRouteSnapshot) {\r\n this.previousBreadcrumbs = this.currentBreadcrumbs;\r\n // breadcrumb label for base OR root path. Usually, this can be set as 'Home'\r\n const rootBreadcrumb = this.getRootBreadcrumb();\r\n this.currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];\r\n this.prepareBreadcrumbList(activatedRouteSnapshot, this.baseHref);\r\n }\r\n\r\n private getRootBreadcrumb(): Breadcrumb | void {\r\n const rootConfig = this.router.config.find((config) => config.path === '');\r\n const rootBreadcrumb = this.extractObject(rootConfig?.data?.['breadcrumb']);\r\n const storeItem = this.getFromStore(rootBreadcrumb.alias!, '/');\r\n\r\n if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem)) {\r\n return {\r\n ...storeItem,\r\n ...rootBreadcrumb,\r\n routeLink: this.baseHref,\r\n ...this.getQueryParamsFromPreviousList('/'),\r\n };\r\n }\r\n }\r\n\r\n private prepareBreadcrumbItem(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): BreadcrumbDefinition {\r\n const { path, breadcrumb } = this.parseRouteData(\r\n activatedRouteSnapshot.routeConfig,\r\n );\r\n const resolvedSegment = this.resolvePathSegment(\r\n path,\r\n activatedRouteSnapshot,\r\n );\r\n const routeLink = `${routeLinkPrefix}${resolvedSegment}`;\r\n const storeItem = this.getFromStore(breadcrumb.alias!, routeLink);\r\n\r\n const label = this.extractLabel(\r\n storeItem?.label! || breadcrumb?.label!,\r\n resolvedSegment,\r\n );\r\n let isAutoGeneratedLabel = false;\r\n let autoGeneratedLabel = '';\r\n if (!label) {\r\n isAutoGeneratedLabel = true;\r\n autoGeneratedLabel = resolvedSegment;\r\n }\r\n\r\n return {\r\n ...storeItem,\r\n ...breadcrumb,\r\n label: isAutoGeneratedLabel ? autoGeneratedLabel : label,\r\n routeLink,\r\n isAutoGeneratedLabel,\r\n ...this.getQueryParamsFromPreviousList(routeLink),\r\n };\r\n }\r\n\r\n private prepareBreadcrumbList(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): Breadcrumb[] | void {\r\n if (activatedRouteSnapshot.routeConfig?.path) {\r\n const breadcrumbItem = this.prepareBreadcrumbItem(\r\n activatedRouteSnapshot,\r\n routeLinkPrefix,\r\n );\r\n this.currentBreadcrumbs.push(breadcrumbItem);\r\n\r\n if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n breadcrumbItem.routeLink + '/',\r\n );\r\n }\r\n } else if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n routeLinkPrefix,\r\n );\r\n }\r\n const lastCrumb =\r\n this.currentBreadcrumbs[this.currentBreadcrumbs.length - 1];\r\n this.setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);\r\n\r\n // remove breadcrumb items that needs to be hidden\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n\r\n this.breadcrumbs.next(breadcrumbsToShow);\r\n }\r\n\r\n private getFromStore(\r\n alias: string,\r\n routeLink: string,\r\n ): BreadcrumbDefinition | undefined {\r\n return this.dynamicBreadcrumbStore.find((item) => {\r\n return (\r\n (alias && alias === item.alias) ||\r\n (routeLink && routeLink === item.routeLink) ||\r\n this.matchRegex(routeLink, item.routeRegex!)\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * use exact match instead of regexp.test\r\n * for /mentor/[^/]+ we should match '/mentor/12' but not '/mentor/12/abc'\r\n */\r\n private matchRegex(routeLink: string, routeRegex: string) {\r\n const match = routeLink.match(new RegExp(routeRegex));\r\n return match?.[0] === routeLink;\r\n }\r\n\r\n /**\r\n * if the path segment has route params, read the param value from url\r\n * for each segment of route this gets called\r\n *\r\n * for mentor/:id/view - it gets called with mentor, :id, view 3 times\r\n */\r\n private resolvePathSegment(\r\n segment: string,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n //quirk -segment can be defined as view/:id in route config in which case you need to make it view/<resolved-param>\r\n if (segment.includes(PATH_PARAM.PREFIX)) {\r\n Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {\r\n segment = segment.replace(`:${key}`, `${value}`);\r\n });\r\n }\r\n return segment;\r\n }\r\n\r\n /**\r\n * queryParams & fragments for previous breadcrumb path are copied over to new list\r\n */\r\n private getQueryParamsFromPreviousList(routeLink: string): Breadcrumb {\r\n const { queryParams, fragment } =\r\n this.previousBreadcrumbs.find((item) => item.routeLink === routeLink) ||\r\n {};\r\n return { queryParams, fragment };\r\n }\r\n\r\n /**\r\n * set current activated route query params to the last breadcrumb item\r\n */\r\n private setQueryParamsForActiveBreadcrumb(\r\n lastItem: Breadcrumb,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n if (lastItem) {\r\n const { queryParams, fragment } = activatedRouteSnapshot;\r\n lastItem.queryParams = queryParams ? { ...queryParams } : undefined;\r\n lastItem.fragment = fragment!;\r\n }\r\n }\r\n\r\n /**\r\n * For a specific route, breadcrumb can be defined either on parent OR it's child(which has empty path)\r\n * When both are defined, child takes precedence\r\n *\r\n * Ex: Below we are setting breadcrumb on both parent and child.\r\n * So, child takes precedence and \"Defined On Child\" is displayed for the route 'home'\r\n * { path: 'home', loadChildren: () => import('./home/home.module').then((m) => m.HomeModule) , data: {breadcrumb: \"Defined On Module\"}}\r\n * AND\r\n * children: [\r\n * { path: '', component: ShowUserComponent, data: {breadcrumb: \"Defined On Child\" }\r\n * ]\r\n */\r\n private parseRouteData(routeConfig: any) {\r\n const { path, data } = routeConfig;\r\n const breadcrumb = this.mergeWithBaseChildData(\r\n routeConfig,\r\n data?.breadcrumb,\r\n );\r\n\r\n return { path, breadcrumb };\r\n }\r\n\r\n /**\r\n * get empty children of a module or Component. Empty child is the one with path: ''\r\n * When parent and it's children (that has empty route path) define data merge them both with child taking precedence\r\n */\r\n private mergeWithBaseChildData(\r\n routeConfig: any, // TODO: add proper type\r\n config: BreadcrumbConfig,\r\n ): BreadcrumbObject {\r\n if (!routeConfig) {\r\n return this.extractObject(config);\r\n }\r\n\r\n let baseChild;\r\n if (routeConfig.loadChildren) {\r\n // To handle a module with empty child route\r\n baseChild = routeConfig._loadedRoutes.find(\r\n (route: any) => route.path === '',\r\n );\r\n } else if (routeConfig.children) {\r\n // To handle a component with empty child route\r\n baseChild = routeConfig.children.find((route: any) => route.path === '');\r\n }\r\n\r\n const childConfig = baseChild?.data?.breadcrumb;\r\n return childConfig\r\n ? this.mergeWithBaseChildData(baseChild, {\r\n ...this.extractObject(config),\r\n ...this.extractObject(childConfig),\r\n })\r\n : this.extractObject(config);\r\n }\r\n\r\n /**\r\n * Update breadcrumb dynamically\r\n *\r\n * key can be a path | alias\r\n *\r\n * 1) Using complete route path. route can be passed the same way you define angular routes\r\n * - path can be passed as 'exact path(routeLink)' or 'path with params(routeRegex)'\r\n * - update label Ex: set('/mentor', 'Mentor'), set('/mentor/:id', 'Mentor Details')\r\n * - change visibility Ex: set('/mentor/:id/edit', { skip: true })\r\n * ------------------------------------------ OR ------------------------------------------\r\n * 2) Using route alias (prefixed with '@'). alias should be unique for a route\r\n * - update label Ex: set('@mentor', 'Enabler')\r\n * - change visibility Ex: set('@mentorEdit', { skip: true })\r\n *\r\n *\r\n * value can be string | BreadcrumbObject | BreadcrumbFunction\r\n */\r\n set(key: string, breadcrumb: string | BreadcrumbObject) {\r\n const breadcrumbObject = this.extractObject(breadcrumb);\r\n let updateArgs: [StoreMatcherKey, BreadcrumbDefinition];\r\n\r\n if (key.startsWith(ALIAS_PREFIX)) {\r\n updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];\r\n } else if (key.includes(PATH_PARAM.PREFIX)) {\r\n updateArgs = [\r\n 'routeRegex',\r\n { ...breadcrumbObject, routeRegex: this.buildRegex(key) },\r\n ];\r\n } else {\r\n updateArgs = [\r\n 'routeLink',\r\n { ...breadcrumbObject, routeLink: this.ensureLeadingSlash(key) },\r\n ];\r\n }\r\n\r\n // For this route if previously a breadcrumb is not defined that sets isAutoGeneratedLabel: true\r\n // change it to false since this is user supplied value\r\n updateArgs[1].isAutoGeneratedLabel = false;\r\n\r\n this.updateStore(...updateArgs);\r\n this.updateCurrentBreadcrumbs(...updateArgs);\r\n }\r\n\r\n /**\r\n * Update the store to reuse for dynamic declarations\r\n * If the store already has this route definition update it, else add\r\n */\r\n private updateStore(key: string, breadcrumb: BreadcrumbDefinition) {\r\n const storeItemIndex = this.dynamicBreadcrumbStore.findIndex((item) => {\r\n return (\r\n breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition]\r\n );\r\n });\r\n if (storeItemIndex > -1) {\r\n this.dynamicBreadcrumbStore[storeItemIndex] = {\r\n ...this.dynamicBreadcrumbStore[storeItemIndex],\r\n ...breadcrumb,\r\n };\r\n } else {\r\n this.dynamicBreadcrumbStore.push({ ...breadcrumb });\r\n }\r\n }\r\n\r\n /**\r\n * If breadcrumb is present in current breadcrumbs update it and emit new stream\r\n */\r\n private updateCurrentBreadcrumbs(\r\n key: string,\r\n breadcrumb: BreadcrumbDefinition,\r\n ) {\r\n const itemIndex = this.currentBreadcrumbs.findIndex((item) => {\r\n return key === 'routeRegex'\r\n ? this.matchRegex(item.routeLink!, breadcrumb[key]!)\r\n : breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition];\r\n });\r\n if (itemIndex > -1) {\r\n this.currentBreadcrumbs[itemIndex] = {\r\n ...this.currentBreadcrumbs[itemIndex],\r\n ...breadcrumb,\r\n };\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n this.breadcrumbs.next([...breadcrumbsToShow]);\r\n }\r\n }\r\n\r\n /**\r\n * For a route with path param, we create regex dynamically from angular route syntax\r\n * '/mentor/:id' becomes '/mentor/[^/]',\r\n * breadcrumbService.set('/mentor/:id', 'Uday') should update 'Uday' as label for '/mentor/2' OR 'mentor/ada'\r\n */\r\n private buildRegex(path: string) {\r\n return this.ensureLeadingSlash(path).replace(\r\n new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'),\r\n PATH_PARAM.REGEX_REPLACER,\r\n );\r\n }\r\n\r\n private ensureLeadingSlash(path: string) {\r\n return path.startsWith('/') ? path : `/${path}`;\r\n }\r\n\r\n /**\r\n * In App's RouteConfig, breadcrumb can be defined as a string OR a function OR an object\r\n *\r\n * string: simple static breadcrumb label for a path\r\n * function: callback that gets invoked with resolved path param\r\n * object: additional data defined along with breadcrumb label that gets passed to *s4yBreadcrumbItem directive\r\n */\r\n private extractLabel(config: BreadcrumbConfig, resolvedParam?: string) {\r\n const label = typeof config === 'object' ? config.label : config;\r\n if (typeof label === 'function') {\r\n return label(resolvedParam);\r\n }\r\n return label;\r\n }\r\n\r\n private extractObject(config: BreadcrumbConfig): BreadcrumbObject {\r\n // don't include {label} if config is undefined. This is important since we merge the configs\r\n if (\r\n config &&\r\n (typeof config === 'string' || typeof config === 'function')\r\n ) {\r\n return { label: config };\r\n }\r\n return (config as BreadcrumbObject) || {};\r\n }\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ActivatedRoute, RouterModule } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\r\nimport { BreadcrumbService } from './breadcrumb.service';\r\nimport { BreadcrumbDefinition } from './types';\r\n\r\n@Component({\r\n selector: 's4y-breadcrumb',\r\n imports: [CommonModule, RouterModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class BreadcrumbComponent implements OnInit {\r\n breadcrumbs$!: Observable<BreadcrumbDefinition[]>;\r\n separatorTemplate: TemplateRef<void> | undefined;\r\n private _separator: string = '/';\r\n\r\n /**\r\n * Breadcrumb item can be customized with this template\r\n * Template context is provided label, additional info, first and last indexes\r\n * Use cases:\r\n * 1) Add an icon along with label\r\n * 2) i18n. {{breadcrumb | translate}} or {{breadcrumb | transloco}}\r\n * 3) Change text case {{breadcrumb | titlecase}}\r\n */\r\n @ContentChild(BreadcrumbItemDirective, { static: false, read: TemplateRef })\r\n itemTemplate: any;\r\n\r\n /**\r\n * If true, breadcrumb is auto generated even without any mapping label\r\n * Default label is same as route segment\r\n */\r\n @Input() autoGenerate = true;\r\n\r\n /**\r\n * By default query params will be preserved with breadcrumbs\r\n */\r\n @Input() preserveQueryParams = true;\r\n\r\n /**\r\n * By default query fragments will be preserved with breadcrumbs\r\n */\r\n @Input() preserveFragment = true;\r\n\r\n /**\r\n * custom class provided by consumer to increase specificity\r\n * This will benefit to override styles that are conflicting\r\n */\r\n @Input() class = '';\r\n\r\n /**\r\n * anchorTarget = \"_blank\" makes the breadcrumb link open in a new tab\r\n */\r\n @Input() anchorTarget: '_blank' | undefined;\r\n\r\n /**\r\n * separator between breadcrumbs, defaults to '/'.\r\n * User can customize separator either by passing a String or Template\r\n *\r\n * String --> Ex: <s4y-breadcrumb separator=\"-\"> </s4y-breadcrumb>\r\n *\r\n * Template --> Ex: <s4y-breadcrumb [separator]=\"separatorTemplate\"> </s4y-breadcrumb>\r\n * <ng-template #separatorTemplate><mat-icon>arrow_right</mat-icon></ng-template>\r\n */\r\n @Input()\r\n set separator(value: string | TemplateRef<void>) {\r\n if (value instanceof TemplateRef) {\r\n this.separatorTemplate = value;\r\n this._separator = '/';\r\n } else {\r\n this.separatorTemplate = undefined;\r\n this._separator = value || '/';\r\n }\r\n }\r\n get separator() {\r\n return this._separator;\r\n }\r\n\r\n setupMessage = 'not set up yet';\r\n someParameterValue = null;\r\n\r\n constructor(\r\n private breadcrumbService: BreadcrumbService,\r\n activateRoute: ActivatedRoute,\r\n ) {\r\n // breadcrumb inside ngIf works only this way\r\n activateRoute.params.subscribe((params) => {\r\n this.setupComponent(params['someParam']);\r\n });\r\n }\r\n\r\n setupComponent(someParam: any) {\r\n this.setupMessage = 'set up at ' + new Date();\r\n this.someParameterValue = someParam;\r\n }\r\n\r\n ngOnInit() {\r\n this.breadcrumbs$ = this.breadcrumbService.breadcrumbs$.pipe(\r\n map((breadcrumbs: BreadcrumbDefinition[]) => {\r\n return breadcrumbs\r\n .filter((breadcrumb: BreadcrumbDefinition) => {\r\n // Usually, breadcrumb list can contain a combination of auto generated and user specified labels\r\n // this filters autogenerated labels in case of \"[autoGenerate]: false\"\r\n if (this.autoGenerate) {\r\n return true;\r\n }\r\n return !breadcrumb.isAutoGeneratedLabel;\r\n })\r\n .map((breadcrumb: BreadcrumbDefinition) => {\r\n // Do not mutate breadcrumb as its source of truth.\r\n // There can be scenarios where we can have multiple s4y-breadcrumb instances in page\r\n const { routeInterceptor, routeLink } = breadcrumb;\r\n return {\r\n ...breadcrumb,\r\n routeLink:\r\n routeInterceptor?.(routeLink!, breadcrumb) || routeLink,\r\n };\r\n });\r\n }),\r\n );\r\n }\r\n}\r\n","<nav aria-label=\"breadcrumb\" class=\"s4y-breadcrumb-root\" [ngClass]=\"class\">\r\n <ol class=\"s4y-breadcrumb-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let breadcrumb of breadcrumbs$ | async;\r\n last as isLast;\r\n first as isFirst;\r\n index as index;\r\n count as count\r\n \"\r\n >\r\n <li class=\"s4y-breadcrumb-item\">\r\n <a\r\n *ngIf=\"!isLast\"\r\n class=\"s4y-breadcrumb-link\"\r\n [ngClass]=\"{ 's4y-breadcrumb-link-disabled': breadcrumb.disable }\"\r\n [attr.aria-disabled]=\"breadcrumb.disable\"\r\n [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor(breadcrumb.routeLink!, breadcrumb)\r\n : breadcrumb.routeLink\r\n \"\r\n [queryParams]=\"\r\n preserveQueryParams ? breadcrumb.queryParams : undefined\r\n \"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </a>\r\n\r\n <span *ngIf=\"isLast\" class=\"s4y-breadcrumb-trail\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </span>\r\n </li>\r\n\r\n <li *ngIf=\"!isLast\" class=\"s4y-breadcrumb-separator\" aria-hidden=\"true\">\r\n @if (separatorTemplate) {\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n }\r\n\r\n <ng-container *ngIf=\"!separatorTemplate\">{{ separator }}</ng-container>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n","/*\r\n * Public API Surface of s4y-components\r\n */\r\n\r\n// Exporta tudo do index.ts de cada pasta\r\nexport * from './lib/components/dashboard';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/forms-kit';\r\nexport * from './lib/directives';\r\nexport * from './lib/components/toast';\r\nexport * from './lib/components/svg';\r\nexport * from './lib/components/drawer/drawer.component';\r\nexport * from './lib/components/avatar/avatar.component';\r\nexport * from './lib/components/table';\r\nexport * from './lib/components/spinner/spinner.component';\r\nexport * from './lib/components/modal/modal.component';\r\nexport * from './lib/components/modal-confirmation';\r\nexport * from './lib/components/search-bar';\r\nexport * from './lib/components/toggle/toggle.component';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/pagination';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/slider/slider.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/tooltip';\r\nexport * from './lib/components/breadcrumb';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SvgService","i2","i3.AvatarComponent","i4.SvgComponent","COMPONENTS","i2.InputComponent","i3.LabelComponent","i4.InputSufixComponent","i1.ToastService","map","i1.BreadcrumbService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"s4y-ui.mjs","sources":["../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.service.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.html","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.ts","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.html","../../../projects/s4y-components/src/lib/components/svg/svg.service.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard.module.ts","../../../projects/s4y-components/src/lib/components/dashboard/index.ts","../../../projects/s4y-components/src/lib/components/button/button.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/forms-kit.module.ts","../../../projects/s4y-components/src/lib/components/forms-kit/index.ts","../../../projects/s4y-components/src/lib/directives/mask/mask.directive.ts","../../../projects/s4y-components/src/lib/directives/click-outside.directive.ts","../../../projects/s4y-components/src/lib/components/toast/toast.animation.ts","../../../projects/s4y-components/src/lib/components/toast/toast.service.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.html","../../../projects/s4y-components/src/lib/components/drawer/drawer.animation.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.html","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.ts","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.html","../../../projects/s4y-components/src/lib/components/table/table.component.ts","../../../projects/s4y-components/src/lib/components/table/table.component.html","../../../projects/s4y-components/src/lib/components/table/actions/sortTable.directive.ts","../../../projects/s4y-components/src/lib/components/modal/modal.animation.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.html","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.service.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.html","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.ts","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.html","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.ts","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.html","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.ts","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.html","../../../projects/s4y-components/src/lib/components/select/select.animation.ts","../../../projects/s4y-components/src/lib/components/select/select.component.ts","../../../projects/s4y-components/src/lib/components/select/select.component.html","../../../projects/s4y-components/src/lib/components/slider/slider.component.ts","../../../projects/s4y-components/src/lib/components/slider/slider.component.html","../../../projects/s4y-components/src/lib/components/radio/radio.component.ts","../../../projects/s4y-components/src/lib/components/radio/radio.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.enums.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.module.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb-item.directive.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.service.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/s4y-components/src/public-api.ts","../../../projects/s4y-components/src/s4y-ui.ts"],"sourcesContent":["import {\r\n Component,\r\n ContentChild,\r\n contentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-layout',\r\n templateUrl: './dashboard-layout.component.html',\r\n styleUrl: './dashboard-layout.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardLayoutComponent {\r\n @ContentChild('asideTemplate') asideTemplate!: TemplateRef<any>;\r\n @ContentChild('navTemplate') navTemplate!: TemplateRef<any>;\r\n}\r\n","<div class=\"s4y-dashboard-layout\">\r\n @if (asideTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"asideTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-aside\"></ng-content>\r\n }\r\n <div class=\"s4y-dashboard-layout__content\">\r\n @if (navTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"navTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-navbar\"></ng-content>\r\n }\r\n <ng-content select=\"s4y-dashboard-routes\"></ng-content>\r\n </div>\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AsideService {\r\n private _isOpened = signal<boolean>(true);\r\n\r\n isOpened = computed(() => this._isOpened());\r\n\r\n onToggle() {\r\n this._isOpened.update((state) => !state);\r\n }\r\n}\r\n","import { Component, ContentChild, inject, TemplateRef } from '@angular/core';\r\nimport { AsideService } from '../aside/aside.service';\r\n\r\n@Component({\r\n selector: 's4y-navbar',\r\n templateUrl: './navbar.component.html',\r\n styleUrl: './navbar.component.scss',\r\n standalone: false,\r\n})\r\nexport class NavbarComponent {\r\n protected _asideService = inject(AsideService);\r\n\r\n @ContentChild('actionsTemplate')\r\n actionsTemplate!: TemplateRef<any>;\r\n}\r\n","<nav class=\"s4y-navbar-container\">\r\n <button\r\n (click)=\"_asideService.onToggle()\"\r\n class=\"s4y-navbar-container__btn\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"menuIcon\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-navbar-container__actions\">\r\n <ng-container *ngIf=\"actionsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"actionsTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</nav>\r\n\r\n\r\n<ng-template #menuIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path d=\"M3 4H21V6H3V4ZM3 11H15V13H3V11ZM3 18H21V20H3V18Z\"></path>\r\n </svg>\r\n</ng-template>\r\n","import {\r\n Component,\r\n HostBinding,\r\n Input,\r\n computed,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgIf, NgClass, CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-avatar',\r\n imports: [CommonModule],\r\n templateUrl: './avatar.component.html',\r\n styleUrl: './avatar.component.scss',\r\n})\r\nexport class AvatarComponent {\r\n src = input<string | undefined>(undefined); // URL da imagem\r\n alt = input<string>('Avatar'); // Texto alternativo\r\n size = input<'sm' | 'md' | 'lg' | 'xl'>('md'); // Tamanho\r\n rounded = input<boolean>(true); // Arredondar ou não\r\n border = input<boolean>(false); // Borda decorativa\r\n // Estados internos\r\n imageLoaded = signal(false);\r\n imageError = signal(false);\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n const classes = [];\r\n\r\n switch (this.size()) {\r\n case 'sm':\r\n classes.push('s4y-avatar-sm');\r\n break;\r\n case 'md':\r\n classes.push('s4y-avatar-md');\r\n break;\r\n case 'lg':\r\n classes.push('s4y-avatar-lg');\r\n break;\r\n case 'xl':\r\n classes.push('s4y-avatar-xl');\r\n break;\r\n default:\r\n classes.push('s4y-avatar-md');\r\n }\r\n\r\n classes.push(this.rounded() ? 's4y-avatar-rounded' : 's4y-avatar-square');\r\n\r\n if (this.border()) {\r\n classes.push('s4y-avatar-border');\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n onLoad() {\r\n this.imageLoaded.set(true);\r\n this.imageError.set(false);\r\n }\r\n\r\n onError() {\r\n this.imageError.set(true);\r\n }\r\n}\r\n","@if (src()) {\r\n<img [src]=\"src()\" [alt]=\"alt()\" />\r\n\r\n}@else {\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M4 22C4 17.5817 7.58172 14 12 14C16.4183 14 20 17.5817 20 22H18C18 18.6863 15.3137 16 12 16C8.68629 16 6 18.6863 6 22H4ZM12 13C8.685 13 6 10.315 6 7C6 3.685 8.685 1 12 1C15.315 1 18 3.685 18 7C18 10.315 15.315 13 12 13ZM12 11C14.21 11 16 9.21 16 7C16 4.79 14.21 3 12 3C9.79 3 8 4.79 8 7C8 9.21 9.79 11 12 11Z\"\r\n ></path>\r\n</svg>\r\n}\r\n","// src/app/icon/icon.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { defer, from, Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SvgService {\r\n private requests = new Map<string, Promise<string>>();\r\n\r\n getSvgContent(url: string): Observable<string> {\r\n let request = this.requests.get(url);\r\n\r\n if (!request) {\r\n request = fetch(url).then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`Erro ao carregar SVG: ${response.statusText}`);\r\n }\r\n return response.text();\r\n });\r\n\r\n this.requests.set(url, request);\r\n }\r\n\r\n return defer(() => from(request)).pipe(\r\n catchError((error) => {\r\n console.error('Erro ao carregar SVG:', error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n}\r\n","// import { NgIf, NgStyle } from '@angular/common';\r\n// import { HttpClient } from '@angular/common/http';\r\n// import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n// import { DomSanitizer } from '@angular/platform-browser';\r\n// import { SvgService } from './svg.service';\r\n\r\n// @Component({\r\n// selector: 's4y-svg',\r\n// imports: [NgStyle, NgIf],\r\n// templateUrl: './svg.component.html',\r\n// styleUrl: './svg.component.scss',\r\n// changeDetection: ChangeDetectionStrategy.OnPush,\r\n// })\r\n// export class SvgComponent implements OnChanges {\r\n// @Input() src!: string;\r\n// @Input() mode: 'inline' | 'mask' = 'mask';\r\n// @Input() size: string = '24px';\r\n// @Input() color: string = 'currentColor';\r\n\r\n// svgContent: any = '';\r\n// maskStyle = '';\r\n\r\n// constructor(\r\n// private http: HttpClient,\r\n// private sanitizer: DomSanitizer,\r\n// private svgService: SvgService\r\n// ) {}\r\n\r\n// ngOnChanges(changes: SimpleChanges): void {\r\n// if (!this.src) return;\r\n\r\n// if (this.mode === 'inline') {\r\n// this.http.get(this.src, { responseType: 'text' }).subscribe((svg) => {\r\n// this.svgContent = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n// });\r\n// } else if (this.mode === 'mask') {\r\n// this.maskStyle = `url(\"${this.src}\")`;\r\n// }\r\n// }\r\n// }\r\n\r\n// src/app/icon/icon.component.ts\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SvgService } from './svg.service';\r\nimport { AsyncPipe, JsonPipe } from '@angular/common';\r\n\r\nexport type tSvgSize = 'small' | 'default' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-svg',\r\n templateUrl: './svg.component.html',\r\n styleUrls: ['./svg.component.scss'],\r\n imports: [AsyncPipe, JsonPipe],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SvgComponent {\r\n @Input()\r\n @HostBinding('class')\r\n size: tSvgSize = 'default';\r\n\r\n public svgContent: Observable<SafeHtml> | undefined;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private svgService: SvgService,\r\n ) {}\r\n\r\n @Input()\r\n set src(value: string | undefined | null) {\r\n if (!value) return;\r\n\r\n this.setSvgContent(value);\r\n }\r\n\r\n private setSvgContent(src: string): void {\r\n this.svgContent = this.svgService\r\n .getSvgContent(src)\r\n .pipe(map((content) => this.sanitizer.bypassSecurityTrustHtml(content)));\r\n }\r\n}\r\n","<!-- <span\r\n *ngIf=\"mode === 'inline'\"\r\n class=\"s4y-svg-inline\"\r\n [innerHTML]=\"svgContent\"\r\n [ngStyle]=\"{\r\n width: size,\r\n height: size,\r\n color: color\r\n }\"\r\n></span>\r\n\r\n<span\r\n *ngIf=\"mode === 'mask'\"\r\n class=\"s4y-svg-mask\"\r\n [ngStyle]=\"{\r\n WebkitMaskImage: maskStyle,\r\n maskImage: maskStyle,\r\n width: size,\r\n height: size,\r\n backgroundColor: color\r\n }\"\r\n></span> -->\r\n\r\n<div class=\"icon-inner\" [innerHTML]=\"svgContent | async\"></div>\r\n\r\n{{ svgContent | json }}\r\n","import {\r\n Component,\r\n ContentChild,\r\n inject,\r\n input,\r\n output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { AsideService } from './aside.service';\r\n\r\nexport interface iMenuItem {\r\n title: string;\r\n link: string;\r\n iconUri?: string;\r\n isOpen?: boolean;\r\n children?: { title: string; link: string }[];\r\n roles: string[];\r\n}\r\n\r\n@Component({\r\n selector: 's4y-aside',\r\n templateUrl: './aside.component.html',\r\n styleUrl: './aside.component.scss',\r\n standalone: false,\r\n host: {\r\n '[attr.data-opened]': 'isOpened()',\r\n },\r\n})\r\nexport class AsideComponent {\r\n protected _asideService = inject(AsideService);\r\n private router = inject(Router);\r\n private sanitizer = inject(DomSanitizer);\r\n protected asideService = inject(AsideService);\r\n\r\n menus = input<iMenuItem[]>([]);\r\n\r\n companyLogoSrc = input<string>(\r\n 'https://vanderson-teste.sirv.com/ChatGPT%20Image%2024%20de%20abr.%20de%202025%2C%2009_37_39%201%20(1).png',\r\n );\r\n companyTitle = input<string>('Solution4You');\r\n companyDescription = input<string>('Tecnologia');\r\n\r\n userImage = input<string>('');\r\n userName = input<string>('');\r\n userEmail = input<string>('');\r\n\r\n isOpened = this._asideService.isOpened;\r\n\r\n @ContentChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n onToggle(menu: iMenuItem) {\r\n if (menu.children && menu.children.length > 0) {\r\n this.closeOtherMenus(menu);\r\n\r\n if (!this.isOpened()) {\r\n this._asideService.onToggle();\r\n }\r\n\r\n menu.isOpen = !menu.isOpen;\r\n } else {\r\n this.router.navigate([menu.link]);\r\n }\r\n }\r\n\r\n closeOtherMenus(menuToKeepOpen: iMenuItem) {\r\n this.menus().forEach((menu) => {\r\n if (menu !== menuToKeepOpen) {\r\n menu.isOpen = false;\r\n }\r\n });\r\n }\r\n\r\n sanitizeSvg(iconUri: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(iconUri); // Sanitiza o conteúdo SVG\r\n }\r\n\r\n closeWithClickedOverlay() {\r\n this.asideService.onToggle();\r\n }\r\n}\r\n","<div class=\"s4y-aside-overlay\" (click)=\"closeWithClickedOverlay()\"></div>\r\n\r\n<aside [attr.data-opened]=\"isOpened()\" class=\"s4y-aside\">\r\n <div class=\"s4y-aside-header__container\">\r\n @if (headerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"></ng-container>\r\n } @else {\r\n <div class=\"s4y-aside-header\">\r\n <img class=\"s4y-aside-logo\" [src]=\"companyLogoSrc()\" />\r\n <div class=\"s4y-aside-header__infor\">\r\n <p class=\"s4y-aside-title\">{{ companyTitle() }}</p>\r\n <p class=\"s4y-aside-description\">{{ companyDescription() }}</p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"s4y-aside-body__container\">\r\n <!-- Body Abaixo -->\r\n <div class=\"s4y-aside-body-section\">\r\n @for (menu of menus(); track $index) {\r\n <div class=\"s4y-aside-body-section__item\">\r\n <div\r\n class=\"s4y-aside-body-section-item__infor\"\r\n [class.active]=\"menu.isOpen\"\r\n (click)=\"onToggle(menu)\"\r\n >\r\n <div\r\n class=\"s4y-aside-body-section-item-title\"\r\n [class.closed]=\"!isOpened\"\r\n >\r\n @if (menuTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"menuTemplate; context: { $implicit: menu }\"\r\n ></ng-container>\r\n } @else\r\n { @if (menu.iconUri) {\r\n <s4y-svg size=\"default\" [src]=\"menu.iconUri\"> </s4y-svg>\r\n }\r\n <p>{{ menu.title }}</p>\r\n }\r\n </div>\r\n\r\n @if (menu.children?.length) {\r\n <!-- -->\r\n @if (menu.isOpen) {\r\n <ng-container [ngTemplateOutlet]=\"arrowBottom\"></ng-container>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n }\r\n <!-- -->\r\n }\r\n </div>\r\n <div class=\"s4y-aside-body-section-item__children\" [class.is-opened]=\"menu.isOpen\">\r\n @for (children of menu.children; track $index) {\r\n <div class=\"s4y-aside-body-section-item-children__item\">\r\n <a role=\"link\" routerLinkActive=\"children-active\" [routerLinkActiveOptions]=\"{exact: true}\" [routerLink]=\"children.link\">{{ children.title }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <!-- <div class=\"s4y-aside-body-section__scroll\"></div> -->\r\n </div>\r\n <!-- Body Acima -->\r\n <div class=\"s4y-aside-body__user\" [class.s4y-aside-body__user_divider]=\"footerTemplate || (userImage() && userName() && userEmail())\">\r\n @if (footerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\r\n } @else {\r\n @if (userImage()) {\r\n <s4y-avatar [src]=\"userImage()\"></s4y-avatar>\r\n }\r\n <div class=\"s4y-aside-body-user__infor\">\r\n <p class=\"s4y-aside-body-user_name\">{{ userName() }}</p>\r\n <p class=\"s4y-aside-body-user_email\">{{ userEmail() }}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</aside>\r\n\r\n<ng-template #arrowRight>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n<ng-template #arrowBottom>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-routes',\r\n templateUrl: './dashboard-routes.component.html',\r\n styleUrl: './dashboard-routes.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardRoutesComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-container',\r\n templateUrl: './dashboard-container.component.html',\r\n styleUrl: './dashboard-container.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardContainerComponent {}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { DashboardLayoutComponent } from './dashboard-layout/dashboard-layout.component';\r\nimport { AsideComponent } from './aside/aside.component';\r\nimport { RouterLink, RouterModule } from '@angular/router';\r\nimport { NavbarComponent } from './navbar/navbar.component';\r\nimport { AvatarComponent } from '../avatar/avatar.component';\r\nimport { DashboardRoutesComponent } from './dashboard-routes/dashboard-routes.component';\r\nimport { DashboardContainerComponent } from './dashboard-container/dashboard-container.component';\r\nimport { SvgComponent } from '../svg/svg.component';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nconst COMPONENTS = [\r\n DashboardLayoutComponent,\r\n AsideComponent,\r\n NavbarComponent,\r\n DashboardRoutesComponent,\r\n DashboardContainerComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n exports: [COMPONENTS],\r\n imports: [RouterModule, CommonModule, AvatarComponent, SvgComponent],\r\n})\r\nexport class DashboardModule {}\r\n","// lib/components/dashboard/index.ts\r\nexport * from './dashboard-layout/dashboard-layout.component';\r\nexport * from './navbar/navbar.component';\r\nexport * from './aside/aside.component';\r\nexport * from './dashboard-routes/dashboard-routes.component';\r\nexport * from './dashboard-container/dashboard-container.component';\r\nexport * from './dashboard.module';\r\n","import {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n HostBinding,\r\n input,\r\n} from '@angular/core';\r\nimport { tButtonSize, tButtonVariant } from './button.interface';\r\n\r\n@Component({\r\n selector: 'button[s4yButton], a[s4yButton]',\r\n imports: [],\r\n template: `\r\n @if (loading()) {\r\n <div class=\"loader\"></div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n `,\r\n styleUrl: './button.component.scss',\r\n standalone: true,\r\n host: {\r\n '[class.btn-default]': 'true',\r\n '[class.loading]': 'loading()',\r\n '[attr.size]': 'size()',\r\n '[attr.variant]': 'variant()',\r\n '[style.width]': 'fullWidth() ? \"100%\" : null',\r\n '[class.outlined]': 'outlined()',\r\n '[class.disabled]': 'disabled()',\r\n '[class]': 'variantClass()',\r\n },\r\n})\r\nexport class ButtonComponent implements AfterViewInit {\r\n disabled = input(false);\r\n outlined = input(false, { transform: booleanAttribute });\r\n loading = input(false);\r\n size = input<tButtonSize>('medium');\r\n\r\n variant = input<tButtonVariant>('primary');\r\n\r\n fullWidth = input<boolean>(false);\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n @HostBinding('disabled')\r\n private get isDisabled() {\r\n return this.loading() || this.disabled();\r\n }\r\n\r\n private variantClass = computed(() => {\r\n switch (this.variant()) {\r\n case 'primary':\r\n return 'btn-primary';\r\n case 'secondary':\r\n return 'btn-secondary';\r\n case 'danger':\r\n return 'btn-danger';\r\n case 'success':\r\n return 'btn-success';\r\n case 'info':\r\n return 'btn-info';\r\n default:\r\n return 'btn-primary';\r\n }\r\n });\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n standalone: false,\r\n})\r\nexport class FormFieldComponent {}\r\n","<label class=\"s4y-form-field\">\r\n <ng-content select=\"s4y-label\"></ng-content>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <ng-content select=\"input, textarea\"></ng-content>\r\n <ng-content select=\"s4y-input-sufix\"></ng-content>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[s4y-input], textarea[s4y-input]',\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputComponent {}\r\n","<p>input works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-label',\r\n templateUrl: './label.component.html',\r\n styleUrl: './label.component.scss',\r\n standalone: false,\r\n})\r\nexport class LabelComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-hint',\r\n templateUrl: './hint.component.html',\r\n styleUrl: './hint.component.scss',\r\n standalone: false,\r\n})\r\nexport class HintComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-error-message',\r\n templateUrl: './error-message.component.html',\r\n styleUrl: './error-message.component.scss',\r\n standalone: false,\r\n})\r\nexport class ErrorMessageComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-prefix',\r\n templateUrl: './input-prefix.component.html',\r\n styleUrl: './input-prefix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputPrefixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-sufix',\r\n templateUrl: './input-sufix.component.html',\r\n styleUrl: './input-sufix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputSufixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-form-field-password',\r\n templateUrl: './form-field-password.component.html',\r\n styleUrl: './form-field-password.component.scss',\r\n standalone: false,\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormFieldPasswordComponent),\r\n },\r\n ],\r\n})\r\nexport class FormFieldPasswordComponent implements ControlValueAccessor {\r\n type: 'text' | 'password' = 'password';\r\n\r\n label = input<string>('Senha');\r\n name = input.required<string>();\r\n id = input.required<string>();\r\n placeholder = input<string>(this.label());\r\n\r\n protected value: string = '';\r\n protected disabled: boolean = false;\r\n\r\n protected togglePasswordVisibility(): void {\r\n this.type = this.type === 'text' ? 'password' : 'text';\r\n }\r\n\r\n onInput(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n this.onChanged(this.value);\r\n this.onTouched();\r\n }\r\n\r\n onChanged = (value: string) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value = value || '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChanged = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<label class=\"s4y-form-field\">\r\n <s4y-label>\r\n {{ label() }}\r\n </s4y-label>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <input\r\n s4y-input\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n [disabled]=\"disabled\"\r\n [type]=\"type\"\r\n [name]=\"name()\"\r\n [id]=\"id()\"\r\n [placeholder]=\"placeholder()\"\r\n />\r\n <s4y-input-sufix>\r\n <button\r\n type=\"button\"\r\n class=\"shown-password\"\r\n (click)=\"togglePasswordVisibility()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"eye\"></ng-container>\r\n </button>\r\n </s4y-input-sufix>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n\r\n<!-- Icone cadeado -->\r\n<ng-template #eye>\r\n <!-- Olho fechado -->\r\n @if (type == \"password\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3ZM12.0003 19C16.2359 19 19.8603 16.052 20.7777 12C19.8603 7.94803 16.2359 5 12.0003 5C7.7646 5 4.14022 7.94803 3.22278 12C4.14022 16.052 7.7646 19 12.0003 19ZM12.0003 16.5C9.51498 16.5 7.50026 14.4853 7.50026 12C7.50026 9.51472 9.51498 7.5 12.0003 7.5C14.4855 7.5 16.5003 9.51472 16.5003 12C16.5003 14.4853 14.4855 16.5 12.0003 16.5ZM12.0003 14.5C13.381 14.5 14.5003 13.3807 14.5003 12C14.5003 10.6193 13.381 9.5 12.0003 9.5C10.6196 9.5 9.50026 10.6193 9.50026 12C9.50026 13.3807 10.6196 14.5 12.0003 14.5Z\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n <!-- Olho aberto -->\r\n @if (type == \"text\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M17.8827 19.2968C16.1814 20.3755 14.1638 21.0002 12.0003 21.0002C6.60812 21.0002 2.12215 17.1204 1.18164 12.0002C1.61832 9.62282 2.81932 7.5129 4.52047 5.93457L1.39366 2.80777L2.80788 1.39355L22.6069 21.1925L21.1927 22.6068L17.8827 19.2968ZM5.9356 7.3497C4.60673 8.56015 3.6378 10.1672 3.22278 12.0002C4.14022 16.0521 7.7646 19.0002 12.0003 19.0002C13.5997 19.0002 15.112 18.5798 16.4243 17.8384L14.396 15.8101C13.7023 16.2472 12.8808 16.5002 12.0003 16.5002C9.51498 16.5002 7.50026 14.4854 7.50026 12.0002C7.50026 11.1196 7.75317 10.2981 8.19031 9.60442L5.9356 7.3497ZM12.9139 14.328L9.67246 11.0866C9.5613 11.3696 9.50026 11.6777 9.50026 12.0002C9.50026 13.3809 10.6196 14.5002 12.0003 14.5002C12.3227 14.5002 12.6309 14.4391 12.9139 14.328ZM20.8068 16.5925L19.376 15.1617C20.0319 14.2268 20.5154 13.1586 20.7777 12.0002C19.8603 7.94818 16.2359 5.00016 12.0003 5.00016C11.1544 5.00016 10.3329 5.11773 9.55249 5.33818L7.97446 3.76015C9.22127 3.26959 10.5793 3.00016 12.0003 3.00016C17.3924 3.00016 21.8784 6.87992 22.8189 12.0002C22.5067 13.6998 21.8038 15.2628 20.8068 16.5925ZM11.7229 7.50857C11.8146 7.50299 11.9071 7.50016 12.0003 7.50016C14.4855 7.50016 16.5003 9.51488 16.5003 12.0002C16.5003 12.0933 16.4974 12.1858 16.4919 12.2775L11.7229 7.50857Z\"\r\n ></path>\r\n </svg>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormFieldComponent } from './form-field/form-field.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { InputPrefixComponent } from './components/input-prefix/input-prefix.component';\r\nimport { InputSufixComponent } from './components/input-sufix/input-sufix.component';\r\nimport { FormFieldPasswordComponent } from './form-field-password/form-field-password.component';\r\n\r\nconst COMPONENTS = [\r\n FormFieldComponent,\r\n InputComponent,\r\n LabelComponent,\r\n HintComponent,\r\n ErrorMessageComponent,\r\n InputPrefixComponent,\r\n InputSufixComponent,\r\n FormFieldPasswordComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n exports: COMPONENTS,\r\n imports: [CommonModule],\r\n})\r\nexport class FormsKitModule {}\r\n","// lib/components/forms-kit/index.ts\r\nexport * from './forms-kit.module';\r\nexport * from './form-field-password/form-field-password.component';\r\nexport * from './form-field/form-field.component';\r\nexport * from './components/error-message/error-message.component';\r\nexport * from './components/hint/hint.component';\r\nexport * from './components/input/input.component';\r\nexport * from './components/input-prefix/input-prefix.component';\r\nexport * from './components/input-sufix/input-sufix.component';\r\nexport * from './components/label/label.component';\r\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\ntype tMask =\n | 'cep'\n | 'cnpj'\n | 'cpf'\n | 'data'\n | 'moeda'\n | 'porcentagem'\n | 'telefone'\n | 'telefone-fixo';\n\n@Directive({\n selector: '[s4yMask]',\n standalone: true,\n})\nexport class MaskDirective implements AfterViewInit {\n mask = input<tMask | undefined>(undefined, { alias: 's4yMask' });\n showMaskType = input<boolean>(false);\n\n private control = inject(NgControl, { optional: true });\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n ngAfterViewInit(): void {\n if (this.showMaskType()) {\n this._applyPlaceholderMask();\n }\n }\n\n private _applyPlaceholderMask() {\n const input = this.el.nativeElement;\n\n switch (this.mask()) {\n case 'cep':\n input.value = this._toCEP(input.value);\n break;\n case 'cpf':\n input.value = this._toCPF(input.value);\n break;\n case 'cnpj':\n input.value = this._toCNPJ(input.value);\n break;\n case 'data':\n input.value = this._toDate(input.value);\n break;\n case 'moeda':\n input.value = this._toCurrency(input.value);\n break;\n case 'porcentagem':\n input.value = this._toPercent(input.value);\n break;\n case 'telefone':\n input.value = this._toMobilePhone(input.value);\n break;\n case 'telefone-fixo':\n input.value = this._toLandlinePhone(input.value);\n break;\n }\n }\n\n @HostListener('focus')\n @HostListener('click')\n onFocusOrClick() {\n const input = this.el.nativeElement;\n const value = input.value;\n\n const templates: Record<tMask, string> = {\n data: '__/__/____',\n cpf: '___.___.___-__',\n cnpj: '__.___.___/____-__',\n cep: '_____-___',\n moeda: '', // máscara de moeda não precisa de cursor fixo\n porcentagem: '', // idem\n telefone: '(__) _____-____',\n 'telefone-fixo': '(__) ____-____',\n };\n\n const template = templates[this.mask()!];\n\n // Só reposiciona se tiver template definido\n if (template) {\n this._setCursorToNextEditable(template, value);\n }\n }\n\n @HostListener('input', ['$event'])\n private onInput(e: InputEvent) {\n const input = this.el.nativeElement;\n const value = input.value;\n\n switch (this.mask()) {\n case 'data': {\n const template = '__/__/____';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'cpf': {\n const template = '___.___.___-__';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'cnpj': {\n const template = '__.___.___/____-__';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'cep': {\n const template = '_____-___';\n const masked = this._applyMaskTemplate(value, template);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'telefone': {\n const template = '(__) _____-____';\n const masked = this._toMobilePhone(value);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n case 'telefone-fixo': {\n const template = '(__) ____-____';\n const masked = this._toLandlinePhone(value);\n input.value = masked;\n this._setCursorToNextEditable(template, value);\n break;\n }\n\n case 'moeda': {\n input.value = this._toCurrency(value);\n break;\n }\n\n case 'porcentagem': {\n input.value = this._toPercent(value);\n break;\n }\n }\n\n if (this.control && this.control.control) {\n this.control.control.setValue(input.value, { emitEvent: false });\n }\n }\n\n private _toDate = (value: string) =>\n this._applyMaskTemplate(value, '__/__/____');\n\n private _toCPF = (value: string) =>\n this._applyMaskTemplate(value, '___.___.___-__');\n\n private _toCNPJ = (value: string) =>\n this._applyMaskTemplate(value, '__.___.___/____-__');\n\n private _toCEP = (value: string) =>\n this._applyMaskTemplate(value, '_____-___');\n\n private _toMobilePhone = (value: string): string =>\n this._applyMaskTemplate(value, '(__) _____-____');\n\n private _toLandlinePhone = (value: string): string =>\n this._applyMaskTemplate(value, '(__) ____-____');\n\n private _toCurrency = (value: string) => {\n // Remove qualquer caractere não numérico\n const cleaned = value.replace(/\\D/g, '');\n\n // Se estiver vazio, retorna 0 formatado\n if (!cleaned) return 'R$ 0,00';\n\n const number = parseFloat(cleaned) / 100;\n\n return number.toLocaleString('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n });\n };\n\n private _toPercent = (value: string) => {\n // Remove tudo que não for número\n const cleaned = value.replace(/\\D/g, '');\n\n // Limita a 6 dígitos (ex: 999999 → 9999,99%)\n const limited = cleaned.slice(0, 6);\n\n // Garante um valor numérico válido\n const number = parseFloat(limited || '0') / 100;\n\n // Formata com 2 casas decimais e adiciona % manualmente\n return (\n number.toLocaleString('pt-BR', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }) + '%'\n );\n };\n\n private _applyMaskTemplate(value: string, template: string): string {\n const result = template.split('');\n let i = 0;\n\n for (const digit of value.replace(/\\D/g, '')) {\n while (i < result.length && !['_'].includes(result[i])) i++;\n if (i < result.length) result[i++] = digit;\n }\n\n return result.join('');\n }\n\n private _getCursorPosition(template: string, digitsCount: number): number {\n let count = 0;\n for (let i = 0; i < template.length; i++) {\n if (template[i].match(/[_\\d]/)) count++;\n if (count >= digitsCount) return i + 1;\n }\n return template.length;\n }\n\n private _setCursorToNextEditable(template: string, value: string) {\n const input = this.el.nativeElement;\n const digits = value.replace(/\\D/g, '');\n const nextPos = this._getCursorPosition(template, digits.length);\n setTimeout(() => input.setSelectionRange(nextPos, nextPos));\n }\n}\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[s4yClickOutside]',\r\n standalone: true,\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() isVisible: boolean = false;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n handleClick(targetElement: HTMLElement): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n AnimationTriggerMetadata,\r\n} from '@angular/animations';\r\n\r\nexport const ToastAnimation: AnimationTriggerMetadata = trigger(\r\n 'ToastAnimation',\r\n [\r\n // TOPO\r\n transition('top-left => void, top-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(-20px)' })\r\n ),\r\n ]),\r\n transition('void => top-left, void => top-right', [\r\n style({ opacity: 0, transform: 'translateY(-20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n\r\n // BOTTOM\r\n transition('bottom-left => void, bottom-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' })\r\n ),\r\n ]),\r\n transition('void => bottom-left, void => bottom-right', [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n ]\r\n);\r\n","import { computed, Injectable, signal } from '@angular/core';\r\nimport { iToast } from './toast.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n private _toasts = signal<iToast[]>([]);\r\n\r\n toasts = computed(() => this._toasts());\r\n\r\n add(toast: iToast) {\r\n const internalId =\r\n typeof crypto?.randomUUID === 'function'\r\n ? crypto.randomUUID()\r\n : this.generateUUID();\r\n\r\n const toastWithId: iToast = { ...toast, __internalId: internalId };\r\n\r\n this._toasts.update((list) => [...list, toastWithId]);\r\n\r\n if (toast.duration && toast.duration > 0) {\r\n setTimeout(() => {\r\n this.removeByInternalId(internalId);\r\n }, toast.duration);\r\n }\r\n }\r\n\r\n remove(index: number) {\r\n this._toasts.update((prevState) => {\r\n const newToasts = prevState.filter((_, i) => index != i);\r\n\r\n return newToasts;\r\n });\r\n }\r\n\r\n removeByInternalId(id: string) {\r\n this._toasts.update((list) =>\r\n list.filter((toast) => toast.__internalId !== id),\r\n );\r\n }\r\n\r\n clearAll() {\r\n this._toasts.set([]);\r\n }\r\n\r\n private generateUUID(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","import { Component, computed, input, signal } from '@angular/core';\r\nimport { ToastService } from './toast.service';\r\nimport { ToastAnimation } from './toast.animation';\r\nimport { ToastPosition } from './toast.interface';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-toast',\r\n imports: [NgClass],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n animations: [ToastAnimation],\r\n})\r\nexport class ToastComponent {\r\n position = input<ToastPosition>('top-left');\r\n\r\n constructor(protected _toastService: ToastService) {}\r\n\r\n protected toasts = computed(() => this._toastService.toasts());\r\n\r\n isBottomPosition = computed(() => this.position().startsWith('bottom'));\r\n}\r\n","<!-- Ajustar os icones -->\r\n\r\n<div class=\"s4y-toast-container\" [ngClass]=\"position()\">\r\n @for (toast of toasts(); track $index; let i = $index) {\r\n <div class=\"s4y-toast-item\" [@ToastAnimation]=\"position()\">\r\n <div class=\"s4y-toast-item_content\">\r\n <div class=\"s4y-toast-item_icon {{ toast.type }}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#fff\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 7H13V9H11V7ZM11 11H13V17H11V11Z\"\r\n ></path>\r\n </svg>\r\n </div>\r\n <p class=\"s4y-toast-item_message\">\r\n {{ toast.message }}\r\n </p>\r\n </div>\r\n <button (click)=\"_toastService.remove(i)\" class=\"s4y-toast-item_close\">\r\n ×\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const drawerAnimation = trigger('drawerAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out', style({ opacity: 1 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: '{{transformFrom}}' }),\r\n animate('300ms ease-out', style({ transform: 'translate(0, 0)' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformFrom: 'translateX(100%)' } }\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 1 }),\r\n animate('300ms ease-in', style({ opacity: 0 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: 'translate(0, 0)' }),\r\n animate('300ms ease-in', style({ transform: '{{transformTo}}' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformTo: 'translateX(100%)' } }\r\n ),\r\n]);\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n HostListener,\r\n input,\r\n model,\r\n computed,\r\n OnInit,\r\n effect,\r\n contentChild,\r\n TemplateRef,\r\n ContentChild,\r\n} from '@angular/core';\r\nimport { drawerAnimation } from './drawer.animation';\r\n\r\ntype tPosition = 'left' | 'right' | 'top' | 'bottom';\r\ntype tSize = 'small' | 'medium' | 'large' | string;\r\n\r\n@Component({\r\n selector: 's4y-drawer',\r\n imports: [NgClass, NgTemplateOutlet],\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.scss',\r\n animations: [drawerAnimation],\r\n})\r\nexport class DrawerComponent implements OnInit {\r\n position = input<tPosition>('right');\r\n isOpen = model<boolean>(false);\r\n size = input<tSize>('medium');\r\n backdrop = input<boolean>(true);\r\n closeOnBackdropClick = input<boolean>(true);\r\n hasCloseButton = input<boolean>(true);\r\n\r\n title = input<string>('Title');\r\n\r\n protected isVisible = computed(() => this.isOpen());\r\n\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('bodyTemplate') bodyTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n drawerSize = computed(() => {\r\n const size = this.size();\r\n const position = this.position();\r\n\r\n let value: string;\r\n\r\n switch (size) {\r\n case 'small':\r\n value = '250px';\r\n break;\r\n case 'medium':\r\n value = '400px';\r\n break;\r\n case 'large':\r\n value = '600px';\r\n break;\r\n default:\r\n value = size;\r\n }\r\n\r\n if (position === 'left' || position === 'right') {\r\n return { width: value, height: null };\r\n } else {\r\n return { width: null, height: value };\r\n }\r\n });\r\n\r\n isHorizontal = computed(() => {\r\n const pos = this.position();\r\n return pos === 'left' || pos === 'right';\r\n });\r\n\r\n isVertical = computed(() => {\r\n const pos = this.position();\r\n return pos === 'top' || pos === 'bottom';\r\n });\r\n\r\n transformFrom = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n transformTo = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n closeOnPressEscapeKey(event: KeyboardEvent) {\r\n this.close();\r\n }\r\n\r\n onBackdropClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n\r\n if (target.classList.contains('s4y-overlay')) {\r\n if (this.closeOnBackdropClick() && this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n }\r\n\r\n close() {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (!this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","@if (isVisible()) {\r\n <div\r\n [@drawerAnimation]=\"{\r\n value: '',\r\n params: {\r\n transformFrom: transformFrom(),\r\n transformTo: transformTo(),\r\n },\r\n }\"\r\n [class.s4y-overlay]=\"backdrop()\"\r\n (click)=\"onBackdropClick($event)\"\r\n >\r\n <div\r\n [style.maxWidth]=\"drawerSize().width\"\r\n [style.maxHeight]=\"drawerSize().height\"\r\n [ngClass]=\"{\r\n 's4y-drawer-left': position() === 'left',\r\n 's4y-drawer-right': position() === 'right',\r\n 's4y-drawer-top': position() === 'top',\r\n 's4y-drawer-bottom': position() === 'bottom',\r\n }\"\r\n class=\"s4y-drawer-container\"\r\n >\r\n <header class=\"s4y-header\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n <!-- -->\r\n @else {\r\n <p class=\"s4y-header__title\">{{ title() }}</p>\r\n @if (hasCloseButton()) {\r\n <button (click)=\"close()\">×</button>\r\n }\r\n }\r\n </header>\r\n\r\n <div class=\"s4y-body-content\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n @if (footerTemplate) {\r\n <div class=\"s4y-footer-content\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Component, input, Input, OnInit } from '@angular/core';\nimport { SpinnerColor, SpinnerSize } from './interface';\n\n@Component({\n selector: 's4y-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n host: {\n '[attr.size]': 'size()',\n '[attr.color]': 'color()',\n },\n})\nexport class SpinnerComponent implements OnInit {\n size = input<SpinnerSize>('small');\n color = input<SpinnerColor>('primary');\n\n constructor() {}\n\n ngOnInit() {}\n}\n","\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n contentChild,\r\n ContentChildren,\r\n ElementRef,\r\n input,\r\n model,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\n\r\n@Component({\r\n selector: 's4y-table',\r\n imports: [CommonModule, SpinnerComponent],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent {\r\n headers = input<any[]>([]);\r\n data = input<any[]>([]);\r\n\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n\r\n @ContentChild('rowTemplate') rowTemplate!: TemplateRef<any>;\r\n @ContentChild('headTemplate') headTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n\r\n errorMessageDefault = input<string>('Não foi possível carregar os dados.');\r\n emptyMessageDefault = input<string>(' Não encontramos dados para exibir.');\r\n}\r\n","<div class=\"s4y-table-container\">\r\n <table class=\"s4y-table\">\r\n <thead>\r\n <ng-container [ngTemplateOutlet]=\"headTemplate\"></ng-container>\r\n </thead>\r\n <tbody>\r\n @if (isLoading()) {\r\n <tr class=\"loading\">\r\n <td [colSpan]=\"headers().length\">\r\n <s4y-spinner></s4y-spinner>\r\n </td>\r\n </tr>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ errorMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"tableContent\"></ng-container>\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<ng-template #SortIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #tableContent>\r\n @for (item of data(); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"rowTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item, idx: $index }\"\r\n >\r\n </ng-container>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ emptyMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n }\r\n</ng-template>\r\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n input,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[s4ySortTable]',\n})\nexport class SortTableDirective implements OnInit, AfterViewInit {\n s4yColumnName = input<string | undefined>(undefined);\n data = input<any[]>([]);\n private isSortedAsc = true;\n private icon: HTMLOrSVGElement | undefined;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n this.icon = this.createIcon();\n\n if (this.icon && this.s4yColumnName()) {\n this.applySortButton();\n }\n }\n\n private createSpanElement() {\n const span = this.renderer.createElement('span') as HTMLSpanElement;\n span.role = 'button';\n\n this.renderer.setStyle(span, 'cursor', 'pointer');\n\n this.renderer.createText(this.svgIconAsc);\n\n return span;\n }\n\n private applySortButton() {\n const thElement = this.el.nativeElement;\n let thText = this.el.nativeElement.textContent.trim();\n thElement.textContent = '';\n /* A div vai agrupar os dois, e espalhar na horizontal */\n const thContainer = this.renderer.createElement('div') as HTMLDivElement;\n const headerText = this.renderer.createText(thText);\n const span = this.createSpanElement();\n\n this.renderer.appendChild(span, this.icon);\n\n this.renderer.appendChild(thContainer, headerText);\n this.renderer.appendChild(thContainer, span);\n\n this.renderer.appendChild(thElement, thContainer);\n\n this.applyStyleInThContainer(thContainer);\n\n this.renderer.listen(span, 'click', () => this.toggleSort());\n }\n\n private toggleSort() {\n this.isSortedAsc = !this.isSortedAsc;\n this.updateSortIcon();\n\n this.sortColumnData();\n }\n\n private createIcon() {\n const icon = this.renderer.createElement('svg') as HTMLOrSVGElement;\n this.renderer.setProperty(icon, 'innerHTML', this.svgIconAsc);\n\n return icon;\n }\n\n private sortColumnData() {\n const columnName = this.s4yColumnName();\n const data = this.data();\n\n if (columnName && columnName.trim() !== '' && data.length > 0) {\n data.sort((a: any, b: any) => {\n const columnA = a[columnName];\n const columnB = b[columnName];\n\n if (columnA < columnB) {\n return this.isSortedAsc ? -1 : 1;\n }\n if (columnA > columnB) {\n return this.isSortedAsc ? 1 : -1;\n }\n return 0;\n });\n\n this.updateSortIcon();\n this.applySortedClass();\n console.log('Dados ordenados:', data); // Dados ordenados no console\n } else {\n console.error('Nome da coluna não definido ou inválido!');\n }\n }\n\n private applySortedClass() {\n const thElements = this.el.nativeElement\n .closest('table')\n .querySelectorAll('th');\n const tdElements = this.el.nativeElement\n .closest('table')\n .querySelectorAll('td');\n\n const thElement = this.el.nativeElement;\n const isAlreadySorted = thElement.classList.contains('sorted');\n\n if (isAlreadySorted) {\n thElements.forEach((th: HTMLElement) => {\n this.renderer.removeClass(th, 'sorted');\n });\n tdElements.forEach((td: HTMLElement) => {\n this.renderer.removeClass(td, 'sorted');\n });\n return;\n }\n\n thElements.forEach((th: HTMLElement) => {\n this.renderer.removeClass(th, 'sorted');\n });\n tdElements.forEach((td: HTMLElement) => {\n this.renderer.removeClass(td, 'sorted');\n });\n\n this.renderer.addClass(thElement, 'sorted');\n\n const columnIndex = Array.from(thElements).indexOf(thElement);\n\n const trElements = this.el.nativeElement\n .closest('table')\n .querySelectorAll('tr');\n trElements.forEach((tr: HTMLElement) => {\n const td = tr.children[columnIndex];\n if (td) {\n this.renderer.addClass(td, 'sorted');\n }\n });\n }\n\n private applyStyleInThContainer(thContainer: HTMLDivElement) {\n this.renderer.setStyle(thContainer, 'display', 'flex');\n this.renderer.setStyle(thContainer, 'justify-content', 'space-between');\n this.renderer.setStyle(thContainer, 'align-items', 'center');\n }\n\n private updateSortIcon() {\n let iconSvg = this.isSortedAsc ? this.svgIconAsc : this.svgIconDesc;\n\n this.renderer.setProperty(this.icon, 'innerHTML', iconSvg);\n }\n\n private svgIconAsc = `<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"1.8rem\"\n height=\"1.8rem\"\n >\n <path\n d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"\n ></path>\n </svg>`;\n\n private svgIconDesc = `<svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1.8rem\"\n height=\"1.8rem\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"><path d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM21.9999 8L17.9999 3L13.9999 8H16.9999V21H18.9999V8H21.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"></path></svg>`;\n}\n","import {\r\n trigger,\r\n transition,\r\n style,\r\n animate,\r\n AnimationTriggerMetadata,\r\n group,\r\n query,\r\n} from '@angular/animations';\r\n\r\nexport const modalFadeCombined: AnimationTriggerMetadata = trigger(\r\n 'modalFadeCombined',\r\n [\r\n transition(':enter', [\r\n group([\r\n query('.s4y-backdrop', [\r\n style({ opacity: 0 }),\r\n animate('200ms ease-out', style({ opacity: 1 })),\r\n ]),\r\n query('.s4y-modal-container', [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '250ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n transition(':leave', [\r\n group([\r\n query('.s4y-backdrop', [\r\n animate('200ms ease-in', style({ opacity: 0 })),\r\n ]),\r\n query('.s4y-modal-container', [\r\n animate(\r\n '200ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n ],\r\n);\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n input,\r\n model,\r\n output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from './modal.animation';\r\n\r\n@Component({\r\n selector: 's4y-modal',\r\n imports: [CommonModule],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalComponent {\r\n @ContentChild('modalHeaderTemplate') modalHeaderTemplate!: TemplateRef<any>;\r\n @ContentChild('modalFooterTemplate') modalFooterTemplate!: TemplateRef<any>;\r\n\r\n title = input<string>('Titulo');\r\n\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n closeModal = output();\r\n\r\n visible = model<boolean>(false);\r\n withHeader = model<boolean>(true);\r\n\r\n onClose() {\r\n this.visible.set(false);\r\n }\r\n}\r\n","@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"s4y-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Injectable, signal, computed } from '@angular/core';\r\nimport { tButtonVariant } from '../button/button.interface';\r\nimport { iModalConfirmationProps } from './modal-confirmation.interface';\r\n\r\n@Injectable()\r\nexport class ModalConfirmationService {\r\n private _modalConfirmation = signal<iModalConfirmationProps>({\r\n title: 'Confirmação',\r\n message: 'Tem certeza que deseja continuar?',\r\n });\r\n\r\n private _visible = signal(false);\r\n\r\n modalConfirmation = computed(() => this._modalConfirmation());\r\n isVisible = computed(() => this._visible());\r\n\r\n open(modalConfig: iModalConfirmationProps) {\r\n this._modalConfirmation.set(modalConfig);\r\n this._visible.set(true);\r\n }\r\n\r\n onConfirm() {\r\n this._modalConfirmation().confirm?.();\r\n this.close();\r\n }\r\n\r\n onCancel() {\r\n this._modalConfirmation().cancel?.();\r\n this.close();\r\n }\r\n\r\n close() {\r\n this._visible.set(false);\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n ContentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from '../modal/modal.animation';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ModalConfirmationService } from './modal-confirmation.service';\r\nimport { iButtonProps } from './modal-confirmation.interface';\r\n\r\n@Component({\r\n selector: 's4y-modal-confirmation',\r\n imports: [CommonModule, ButtonComponent],\r\n templateUrl: './modal-confirmation.component.html',\r\n styleUrl: './modal-confirmation.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalConfirmationComponent {\r\n protected modalConfirmationService = inject(ModalConfirmationService);\r\n @ContentChild('iconTemplate') iconTemplate!: TemplateRef<any>;\r\n\r\n protected modalConfigs = this.modalConfirmationService.modalConfirmation;\r\n\r\n visible = this.modalConfirmationService.isVisible;\r\n\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n buttonCancelProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonCancelProps ?? {\r\n text: 'Cancelar',\r\n outlined: true,\r\n },\r\n );\r\n buttonConfirmProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonConfirmProps ?? {\r\n text: 'Sim, confirmar',\r\n outlined: false,\r\n },\r\n );\r\n\r\n onConfirm() {\r\n this.modalConfirmationService.onConfirm();\r\n }\r\n\r\n onCancel() {\r\n this.modalConfirmationService.onCancel();\r\n }\r\n\r\n onClose() {\r\n this.modalConfirmationService.close();\r\n }\r\n}\r\n","@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (iconTemplate) {\r\n <div class=\"s4y-modal-icon\">\r\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\r\n </div>\r\n }\r\n <div class=\"s4y-modal-header\">\r\n <h3>{{ modalConfigs().title }}</h3>\r\n <p>\r\n {{ modalConfigs().message }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"s4y-modal-body\">\r\n <button\r\n (click)=\"onCancel()\"\r\n s4yButton\r\n [variant]=\"buttonCancelProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonCancelProps().outlined ?? true\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonCancelProps().text }}\r\n </button>\r\n <button\r\n (click)=\"onConfirm()\"\r\n s4yButton\r\n [variant]=\"buttonConfirmProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonConfirmProps().outlined ?? false\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonConfirmProps().text }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-search-bar',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './search-bar.component.html',\r\n styleUrl: './search-bar.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchBarComponent {}\r\n","<label class=\"s4y-search-bar-container\">\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n <ng-content select=\"input[s4ySearchBar]\"></ng-content>\r\n</label>\r\n\r\n<ng-template #searchIcon>\r\n <span class=\"s4y-search-bar__icon\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component, input, model } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\ntype iToggleSize = 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-toggle',\r\n imports: [FormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: ToggleComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ToggleComponent implements ControlValueAccessor {\r\n model = model<boolean>(false);\r\n disabled = input<boolean>(false);\r\n size = input<iToggleSize>('medium');\r\n\r\n protected disabledWithReactives: boolean = false;\r\n\r\n onChange = (value: boolean) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.model.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabledWithReactives = isDisabled;\r\n }\r\n\r\n onToggle() {\r\n if (this.disabled() || this.disabledWithReactives) return;\r\n\r\n this.model.update((prevState) => !prevState);\r\n this.onTouched();\r\n this.onChange(this.model());\r\n }\r\n}\r\n","<label class=\"s4y-switch\" [class]=\"size()\">\r\n <input\r\n (input)=\"onToggle()\"\r\n type=\"checkbox\"\r\n [checked]=\"model()\"\r\n [disabled]=\"disabled() || disabledWithReactives\"\r\n />\r\n <span class=\"slider round\"></span>\r\n</label>\r\n","import { Component, input, model } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-checkbox',\r\n imports: [FormsModule],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: CheckboxComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CheckboxComponent implements ControlValueAccessor {\r\n model = model<boolean>(false);\r\n\r\n id = input.required<string>();\r\n name = input.required<string>();\r\n\r\n label = input<string>();\r\n\r\n isDisabled: boolean = false;\r\n\r\n onChange = (value: boolean) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.model.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n onToggleCheckbox() {\r\n if (this.isDisabled) return;\r\n\r\n this.model.update((prevState) => !prevState);\r\n this.onTouched();\r\n this.onChange(this.model());\r\n }\r\n}\r\n","<div\r\n class=\"s4y-checkbox-wrapper\"\r\n (click)=\"onToggleCheckbox()\"\r\n [class.disabled]=\"isDisabled\"\r\n>\r\n <input\r\n class=\"s4y-inp-cbx\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"checkbox\"\r\n [checked]=\"model()\"\r\n [disabled]=\"isDisabled\"\r\n />\r\n <label class=\"cbx\" [for]=\"id()\"\r\n ><span>\r\n <svg width=\"12px\" height=\"10px\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </svg>\r\n </span>\r\n @if (label()) {\r\n <span>\r\n {{ label() }}\r\n </span>\r\n }\r\n </label>\r\n</div>\r\n","import { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n computed,\r\n model,\r\n signal,\r\n output,\r\n} from '@angular/core';\r\nimport { IPagination } from './pagination.interface';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-pagination',\r\n imports: [NgTemplateOutlet, CommonModule, FormsModule],\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss',\r\n})\r\nexport class PaginationComponent {\r\n currentPage = model<number>(0);\r\n totalResults = input<number>(0);\r\n rowsPerPageOptions = input<number[]>([5, 10, 15, 20]);\r\n rowsPerPage = signal(5);\r\n\r\n onChange = output<IPagination>();\r\n\r\n totalPages = computed(() =>\r\n Math.ceil(this.totalResults() / this.rowsPerPage()),\r\n );\r\n\r\n // offset = computed(() => Math.max(0, this.limit() - this.rowsPerPage() + 1));\r\n\r\n offset = computed(() =>\r\n this.totalResults() === 0 ? 0 : this.currentPage() * this.rowsPerPage() + 1,\r\n );\r\n\r\n limit = computed(() =>\r\n Math.min(\r\n (this.currentPage() + 1) * this.rowsPerPage(),\r\n this.totalResults(),\r\n ),\r\n );\r\n\r\n smartPageArray = computed(() => {\r\n const total = this.totalPages();\r\n const current = this.currentPage();\r\n const windowSize = 5;\r\n const pages: (number | '...')[] = [];\r\n\r\n if (total <= windowSize + 2) {\r\n for (let i = 0; i < total; i++) pages.push(i);\r\n return pages;\r\n }\r\n\r\n const start = Math.max(1, current - 1);\r\n const end = Math.min(total - 2, current + 1);\r\n\r\n pages.push(0); // sempre mostra a primeira página\r\n\r\n if (start > 1) pages.push('...');\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < total - 2) pages.push('...');\r\n\r\n pages.push(total - 1); // última página\r\n\r\n return pages;\r\n });\r\n\r\n // limit = computed(() =>\r\n // Math.min(this.rowsPerPage() * this.currentPage(), this.totalResults()),\r\n // );\r\n\r\n // smartPageArray = computed(() => {\r\n // const total = this.totalPages();\r\n // const current = this.currentPage();\r\n // const windowSize = 5;\r\n // const pages: (number | '...')[] = [];\r\n\r\n // if (total <= windowSize + 2) {\r\n // // mostra todas as páginas se for pequeno\r\n // for (let i = 1; i <= total; i++) pages.push(i);\r\n // return pages;\r\n // }\r\n\r\n // const start = Math.max(2, current - 1);\r\n // const end = Math.min(total - 1, current + 1);\r\n\r\n // pages.push(1); // sempre mostra a primeira página\r\n\r\n // if (start > 2) pages.push('...');\r\n\r\n // for (let i = start; i <= end; i++) {\r\n // pages.push(i);\r\n // }\r\n\r\n // if (end < total - 1) pages.push('...');\r\n\r\n // pages.push(total); // sempre mostra a última página\r\n\r\n // return pages;\r\n // });\r\n\r\n // totalPageArr = computed(() => {\r\n // let arr: number[] = [];\r\n // let calculateTotalPages = this.totalPages() + 1;\r\n\r\n // for (let i = 1; i < calculateTotalPages; i++) {\r\n // arr.push(i);\r\n // }\r\n // return arr;\r\n // });\r\n\r\n protected changePage(selectedPage: number) {\r\n this.currentPage.set(selectedPage);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n prevButtonDisabled = computed(() => this.currentPage() <= 0);\r\n nextButtonDisabled = computed(\r\n () => this.currentPage() >= this.totalPages() - 1,\r\n );\r\n\r\n // prevButtonDisabled = computed(\r\n // () => this.currentPage() <= -1 || this.currentPage() == 1,\r\n // );\r\n // nextButtonDisabled = computed(() => this.currentPage() == this.totalPages());\r\n\r\n prevPage() {\r\n if (this.currentPage() <= 0) return;\r\n this.currentPage.update((prevValue) => prevValue - 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage() == this.totalPages()) return;\r\n this.currentPage.update((prevValue) => prevValue + 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n selectRowsPerPage(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n const value = Number(selectElement.value);\r\n\r\n this.rowsPerPage.set(value ?? 5);\r\n this.currentPage.set(0);\r\n\r\n this.recalcCurrentPage();\r\n }\r\n\r\n private recalcCurrentPage() {\r\n // if (this.currentPage() > Math.max(...this.totalPageArr())) {\r\n // const lastPage = Math.max(...this.totalPageArr());\r\n // this.currentPage.set(lastPage);\r\n // }\r\n\r\n if (this.currentPage() > this.totalPages()) {\r\n const lastPage = this.totalPages();\r\n this.currentPage.set(lastPage);\r\n }\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n private emitChangeValue() {\r\n this.onChange.emit({\r\n currentPage: this.currentPage(),\r\n limit: this.limit(),\r\n offset: this.offset(),\r\n totalPages: this.totalPages(),\r\n rowsPerPage: this.rowsPerPage(),\r\n });\r\n }\r\n}\r\n","<div class=\"s4y-pagination-container desktop\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n @if (totalResults() > 0) {\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Mobile -->\r\n<div class=\"s4y-pagination-container mobile\">\r\n <div class=\"flex justify-between align-center\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #arrowLeft>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.8284 12.0005L14.6569 14.8289L13.2426 16.2431L9 12.0005L13.2426 7.75781L14.6569 9.17203L11.8284 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowRight>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.1717 12.0005L9.34326 9.17203L10.7575 7.75781L15.0001 12.0005L10.7575 16.2431L9.34326 14.8289L12.1717 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const selectAnimation = trigger('selectAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n overflowY: 'hidden',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n transition(':leave', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n overflowY: 'hidden',\r\n background: 'red',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n]);\r\n","import { CommonModule, NgIf } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n ContentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n OnInit,\r\n output,\r\n signal,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { selectAnimation } from './select.animation';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ClickOutsideDirective } from '../../directives';\r\n\r\n@Component({\r\n selector: 's4y-select',\r\n imports: [NgIf, CommonModule, SpinnerComponent, ClickOutsideDirective],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n animations: [selectAnimation],\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n withSearch = input<boolean>(false);\r\n maxScreen = input<boolean>(false);\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n label = input<string>();\r\n\r\n errorMessageDefault = input<string>(\r\n 'Erro ao carregar as opções. Tente novamente mais tarde.',\r\n );\r\n emptyMessageDefault = input<string>('Nenhuma opção disponível');\r\n selectedOption: any = null;\r\n\r\n onSearch = output<string>();\r\n options = input<any[]>([]);\r\n\r\n transformedOptions = computed(() =>\r\n this.options().map((option) => ({\r\n option,\r\n selected: this.isEqual(option, this.selectedValue()),\r\n })),\r\n );\r\n\r\n selectedValue = signal<any>(null);\r\n\r\n @ContentChild('optionTemplate') optionTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('selectedOptionTemplate')\r\n selectedOptionTemplate!: TemplateRef<any>;\r\n\r\n isOpened: boolean = false;\r\n isDisabled: boolean = false;\r\n\r\n widthStyle = computed(() => (this.maxScreen() ? '100%' : '32rem'));\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n ngOnInit(): void {\r\n // this.transformedOptions = this.includeSelectedProperty();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // this.transformedOptions = this.includeSelectedProperty();\r\n this.selectedValue.set(value);\r\n this.markAllUnselected();\r\n\r\n const matchedOption = this.transformedOptions().find((opt) =>\r\n this.isEqual(opt.option, value),\r\n );\r\n\r\n if (matchedOption) {\r\n matchedOption.selected = true;\r\n this.selectedOption = matchedOption;\r\n } else {\r\n this.selectedOption = {\r\n option: value,\r\n selected: true,\r\n };\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n setSelectedOption(selectedOption: any) {\r\n this.selectedOption = selectedOption;\r\n\r\n this.markAllUnselected();\r\n\r\n if (selectedOption && typeof selectedOption == 'object') {\r\n this.selectedOption['selected'] = true;\r\n }\r\n\r\n this.isOpened = false;\r\n this.onTouched();\r\n\r\n const originalOption = selectedOption?.option ?? selectedOption;\r\n\r\n this.onChange(originalOption);\r\n }\r\n\r\n handleSearch(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.onSearch.emit(value);\r\n }\r\n\r\n private includeSelectedProperty() {\r\n return this.options().map((option) => ({\r\n option: option,\r\n selected: false,\r\n }));\r\n }\r\n\r\n private markAllUnselected() {\r\n this.transformedOptions().forEach((option) => (option['selected'] = false));\r\n }\r\n\r\n private isEqual(opt1: any, opt2: any): boolean {\r\n return opt1?.id !== undefined && opt2?.id !== undefined\r\n ? opt1.id === opt2.id\r\n : JSON.stringify(opt1) === JSON.stringify(opt2); // fallback genérico\r\n }\r\n}\r\n","<label\r\n class=\"s4y-select-container\"\r\n [style.maxWidth]=\"widthStyle()\"\r\n s4yClickOutside\r\n (clickOutside)=\"isOpened = false\"\r\n>\r\n <p class=\"s4y-select-label\">\r\n {{ label() }}\r\n </p>\r\n\r\n <div\r\n class=\"s4y-select-container__wrapper\"\r\n [class.disabled]=\"isDisabled\"\r\n (click)=\"isOpened = !isOpened\"\r\n [attr.aria-expanded]=\"isOpened ? 'true' : 'false'\"\r\n tabindex=\"0\"\r\n aria-controls=\"select-options-container\"\r\n >\r\n <div class=\"s4y-select-container__placeholder\">\r\n @if (selectedOptionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: selectedOption?.option }\"\r\n ></ng-container>\r\n } @else {\r\n @if (!selectedOption) {\r\n <p>Selecione...</p>\r\n } @else {\r\n <p>{{ selectedOption }}</p>\r\n }\r\n }\r\n </div>\r\n @if (isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowUp\"></ng-container>\r\n }\r\n @if (!isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowDown\"></ng-container>\r\n }\r\n </div>\r\n <div @selectAnimation class=\"s4y-select-options-container\" *ngIf=\"isOpened\">\r\n <div class=\"s4y-select-options\">\r\n @if (isLoading()) {\r\n <div class=\"s4y-select-container__loading\">\r\n <s4y-spinner [size]=\"'mini'\"></s4y-spinner>\r\n </div>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <p class=\"s4y-select-options__message\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p class=\"s4y-select-options__message\">\r\n {{ errorMessageDefault() }}\r\n </p>\r\n }\r\n } @else {\r\n @if (withSearch()) {\r\n <div class=\"s4y-select-options__search\">\r\n <input\r\n (input)=\"handleSearch($event)\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n name=\"search-option\"\r\n id=\"search-option\"\r\n autocomplete=\"off\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </div>\r\n }\r\n <div\r\n class=\"s4y-select-options__scroll\"\r\n role=\"listbox\"\r\n aria-live=\"polite\"\r\n >\r\n @for (option of transformedOptions(); track $index) {\r\n <p\r\n [class.selected]=\"option.selected\"\r\n class=\"s4y-select-options__item\"\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n tabindex=\"0\"\r\n (click)=\"setSelectedOption(option)\"\r\n (keyup.enter)=\"setSelectedOption(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate;\r\n context: { $implicit: option?.option }\r\n \"\r\n ></ng-container>\r\n </p>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n {{ emptyMessageDefault() }}\r\n </p>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</label>\r\n\r\n<!-- arrows -->\r\n<ng-template #arrowDown>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #searchIcon>\r\n <svg\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11 2C15.968 2 20 6.032 20 11C20 15.968 15.968 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2ZM11 18C14.8675 18 18 14.8675 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18ZM19.4853 18.0711L22.3137 20.8995L20.8995 22.3137L18.0711 19.4853L19.4853 18.0711Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { JsonPipe, NgStyle } from '@angular/common';\r\nimport { Component, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-slider',\r\n imports: [NgStyle],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements ControlValueAccessor {\r\n showValue = input(true);\r\n min = input<string>('0');\r\n max = input<string>('100');\r\n step = input<string>('5');\r\n rangeStyle = input<{ [key: string]: string }>({});\r\n\r\n disabled = false;\r\n\r\n value: number = 0;\r\n\r\n onChange: (value: any) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: any): void {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n changeValue(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = typeof value === 'number' ? value : Number(value);\r\n this.onChange(value);\r\n }\r\n}\r\n","<input\r\n #rangeElement\r\n [ngStyle]=\"rangeStyle\"\r\n type=\"range\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [step]=\"step()\"\r\n [disabled]=\"disabled\"\r\n [value]=\"value\"\r\n (input)=\"changeValue($event)\"\r\n/>\r\n\r\n@if (showValue()) {\r\n <p class=\"s4y-ranger-value\">\r\n {{ rangeElement.value }}\r\n </p>\r\n}\r\n","import { Component, forwardRef, input } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n RadioControlValueAccessor,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-radio',\r\n imports: [],\r\n templateUrl: './radio.component.html',\r\n styleUrl: './radio.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RadioComponent implements ControlValueAccessor {\r\n label = input<string>();\r\n name = input<string>();\r\n id = input<string>();\r\n radioValue = input.required<string>();\r\n\r\n disabled: boolean = false;\r\n\r\n value: string | null = null;\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInput(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n}\r\n","<label class=\"s4y-radio\" [class.disabled]=\"disabled\">\r\n <input\r\n [value]=\"radioValue()\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"radio\"\r\n (input)=\"onInput($event)\"\r\n [checked]=\"value == radioValue()\"\r\n />\r\n @if (label()) {\r\n <span class=\"s4y-radio-label\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</label>\r\n","export enum TooltipPosition {\r\n ABOVE = 'above',\r\n BELOW = 'below',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n DYNAMIC = 'dynamic',\r\n DEFAULT = 'above',\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Component({\r\n selector: 's4y-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.scss'],\r\n standalone: false,\r\n})\r\nexport class TooltipComponent implements OnInit {\r\n position: TooltipPosition = TooltipPosition.DEFAULT;\r\n tooltip = '';\r\n left = 0;\r\n top = 0;\r\n visible = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div\r\n class=\"tooltip {{ 'tooltip--' + position }}\"\r\n [class.tooltip--visible]=\"visible\"\r\n [style.left]=\"left + 'px'\"\r\n [style.top]=\"top + 'px'\"\r\n>\r\n {{ tooltip }}\r\n</div>\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Directive({\r\n selector: '[s4yTooltip]',\r\n standalone: false,\r\n})\r\nexport class TooltipDirective {\r\n @Input('s4yTooltip') tooltip = '';\r\n @Input('s4yTooltipPosition') position: TooltipPosition =\r\n TooltipPosition.DEFAULT;\r\n @Input() showDelay = 0;\r\n @Input() hideDelay = 0;\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n private showTimeout?: number;\r\n private hideTimeout?: number;\r\n private touchTimeout?: number;\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private injector: Injector,\r\n ) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.initializeTooltip();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n onMouseMove($event: MouseEvent): void {\r\n if (\r\n this.componentRef !== null &&\r\n this.position === TooltipPosition.DYNAMIC\r\n ) {\r\n this.componentRef.instance.left = $event.clientX;\r\n this.componentRef.instance.top = $event.clientY;\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n }\r\n }\r\n\r\n @HostListener('touchstart', ['$event'])\r\n onTouchStart($event: TouchEvent): void {\r\n $event.preventDefault();\r\n window.clearTimeout(this.touchTimeout);\r\n this.touchTimeout = window.setTimeout(\r\n this.initializeTooltip.bind(this),\r\n 500,\r\n );\r\n }\r\n\r\n @HostListener('touchend')\r\n onTouchEnd(): void {\r\n window.clearTimeout(this.touchTimeout);\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n private initializeTooltip() {\r\n if (this.componentRef === null) {\r\n window.clearInterval(this.hideDelay);\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const [tooltipDOMElement] = (\r\n this.componentRef.hostView as EmbeddedViewRef<any>\r\n ).rootNodes;\r\n\r\n this.setTooltipComponentProperties();\r\n\r\n document.body.appendChild(tooltipDOMElement);\r\n this.showTimeout = window.setTimeout(\r\n this.showTooltip.bind(this),\r\n this.showDelay,\r\n );\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n this.componentRef.instance.position = this.position;\r\n\r\n const { left, right, top, bottom } =\r\n this.elementRef.nativeElement.getBoundingClientRect();\r\n\r\n switch (this.position) {\r\n case TooltipPosition.BELOW: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(bottom);\r\n break;\r\n }\r\n case TooltipPosition.ABOVE: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(top);\r\n break;\r\n }\r\n case TooltipPosition.RIGHT: {\r\n this.componentRef.instance.left = Math.round(right);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n case TooltipPosition.LEFT: {\r\n this.componentRef.instance.left = Math.round(left);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private showTooltip() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.visible = true;\r\n }\r\n }\r\n\r\n private setHideTooltipTimeout() {\r\n this.hideTimeout = window.setTimeout(\r\n this.destroy.bind(this),\r\n this.hideDelay,\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n window.clearInterval(this.showTimeout);\r\n window.clearInterval(this.hideDelay);\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { CommonModule, NgClass } from '@angular/common';\r\nimport { TooltipDirective } from './tooltip.directive';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\n\r\n@NgModule({\r\n declarations: [TooltipComponent, TooltipDirective],\r\n imports: [CommonModule, NgClass],\r\n exports: [TooltipDirective],\r\n})\r\nexport class TooltipModule {}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * This directive is used to customize the breadcrumb label behavior\r\n * *s4yBreadcrumbItem directive can be used in the child element of s4yBreadcrumbItem\r\n * Usage: refer to the demo - app.component.html\r\n */\r\n@Directive({\r\n selector: '[s4yBreadcrumbItem]',\r\n standalone: true,\r\n})\r\nexport class BreadcrumbItemDirective {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n GuardsCheckEnd,\r\n Router,\r\n} from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport {\r\n BreadcrumbDefinition,\r\n Breadcrumb,\r\n BreadcrumbConfig,\r\n BreadcrumbObject,\r\n} from './types';\r\n\r\ntype StoreMatcherKey = 'routeLink' | 'routeRegex' | 'alias';\r\n\r\nconst PATH_PARAM = {\r\n PREFIX: ':',\r\n REGEX_IDENTIFIER: '/:[^/]+',\r\n REGEX_REPLACER: '/[^/]+',\r\n};\r\nconst ALIAS_PREFIX = '@';\r\nconst isNonEmpty = (obj: unknown): boolean => {\r\n return !!obj && Object.keys(obj).length > 0;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreadcrumbService {\r\n private baseHref = '/';\r\n\r\n /**\r\n * dynamicBreadcrumbStore holds information about dynamically updated breadcrumbs.\r\n * Breadcrumbs can be set from anywhere (component, service) in the app.\r\n * On every breadcrumb update check this store and use the info if available.\r\n */\r\n private dynamicBreadcrumbStore: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * breadcrumbList for the current route\r\n * When breadcrumb info is changed dynamically, check if the currentBreadcrumbs is effected\r\n * If effected, update the change and emit a new stream\r\n */\r\n private currentBreadcrumbs: BreadcrumbDefinition[] = [];\r\n private previousBreadcrumbs: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * Breadcrumbs observable to be subscribed by BreadcrumbComponent\r\n * Emits on every route change OR dynamic update of breadcrumb\r\n */\r\n private breadcrumbs = new BehaviorSubject<BreadcrumbDefinition[]>([]);\r\n public breadcrumbs$ = this.breadcrumbs.asObservable();\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n ) {\r\n this.detectRouteChanges();\r\n }\r\n\r\n /**\r\n * Whenever route changes build breadcrumb list again\r\n */\r\n private detectRouteChanges() {\r\n // Special case where breadcrumb service & component instantiates after a route is navigated.\r\n // Ex: put breadcrumbs within *ngIf and this.router.events would be empty\r\n // This check is also required where { initialNavigation: 'enabledBlocking' } is applied to routes\r\n this.setupBreadcrumbs(this.activatedRoute.snapshot);\r\n\r\n this.router.events\r\n .pipe(\r\n filter(\r\n (event): event is GuardsCheckEnd => event instanceof GuardsCheckEnd,\r\n ),\r\n )\r\n .subscribe((event) => {\r\n // activatedRoute doesn't carry data when shouldReuseRoute returns false\r\n // use the event data with GuardsCheckEnd as workaround\r\n // Check for shouldActivate in case where the authGuard returns false the breadcrumbs shouldn't be changed\r\n if (event.shouldActivate) {\r\n this.setupBreadcrumbs(event.state.root);\r\n }\r\n });\r\n }\r\n\r\n private setupBreadcrumbs(activatedRouteSnapshot: ActivatedRouteSnapshot) {\r\n this.previousBreadcrumbs = this.currentBreadcrumbs;\r\n // breadcrumb label for base OR root path. Usually, this can be set as 'Home'\r\n const rootBreadcrumb = this.getRootBreadcrumb();\r\n this.currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];\r\n this.prepareBreadcrumbList(activatedRouteSnapshot, this.baseHref);\r\n }\r\n\r\n private getRootBreadcrumb(): Breadcrumb | void {\r\n const rootConfig = this.router.config.find((config) => config.path === '');\r\n const rootBreadcrumb = this.extractObject(rootConfig?.data?.['breadcrumb']);\r\n const storeItem = this.getFromStore(rootBreadcrumb.alias!, '/');\r\n\r\n if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem)) {\r\n return {\r\n ...storeItem,\r\n ...rootBreadcrumb,\r\n routeLink: this.baseHref,\r\n ...this.getQueryParamsFromPreviousList('/'),\r\n };\r\n }\r\n }\r\n\r\n private prepareBreadcrumbItem(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): BreadcrumbDefinition {\r\n const { path, breadcrumb } = this.parseRouteData(\r\n activatedRouteSnapshot.routeConfig,\r\n );\r\n const resolvedSegment = this.resolvePathSegment(\r\n path,\r\n activatedRouteSnapshot,\r\n );\r\n const routeLink = `${routeLinkPrefix}${resolvedSegment}`;\r\n const storeItem = this.getFromStore(breadcrumb.alias!, routeLink);\r\n\r\n const label = this.extractLabel(\r\n storeItem?.label! || breadcrumb?.label!,\r\n resolvedSegment,\r\n );\r\n let isAutoGeneratedLabel = false;\r\n let autoGeneratedLabel = '';\r\n if (!label) {\r\n isAutoGeneratedLabel = true;\r\n autoGeneratedLabel = resolvedSegment;\r\n }\r\n\r\n return {\r\n ...storeItem,\r\n ...breadcrumb,\r\n label: isAutoGeneratedLabel ? autoGeneratedLabel : label,\r\n routeLink,\r\n isAutoGeneratedLabel,\r\n ...this.getQueryParamsFromPreviousList(routeLink),\r\n };\r\n }\r\n\r\n private prepareBreadcrumbList(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): Breadcrumb[] | void {\r\n if (activatedRouteSnapshot.routeConfig?.path) {\r\n const breadcrumbItem = this.prepareBreadcrumbItem(\r\n activatedRouteSnapshot,\r\n routeLinkPrefix,\r\n );\r\n this.currentBreadcrumbs.push(breadcrumbItem);\r\n\r\n if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n breadcrumbItem.routeLink + '/',\r\n );\r\n }\r\n } else if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n routeLinkPrefix,\r\n );\r\n }\r\n const lastCrumb =\r\n this.currentBreadcrumbs[this.currentBreadcrumbs.length - 1];\r\n this.setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);\r\n\r\n // remove breadcrumb items that needs to be hidden\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n\r\n this.breadcrumbs.next(breadcrumbsToShow);\r\n }\r\n\r\n private getFromStore(\r\n alias: string,\r\n routeLink: string,\r\n ): BreadcrumbDefinition | undefined {\r\n return this.dynamicBreadcrumbStore.find((item) => {\r\n return (\r\n (alias && alias === item.alias) ||\r\n (routeLink && routeLink === item.routeLink) ||\r\n this.matchRegex(routeLink, item.routeRegex!)\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * use exact match instead of regexp.test\r\n * for /mentor/[^/]+ we should match '/mentor/12' but not '/mentor/12/abc'\r\n */\r\n private matchRegex(routeLink: string, routeRegex: string) {\r\n const match = routeLink.match(new RegExp(routeRegex));\r\n return match?.[0] === routeLink;\r\n }\r\n\r\n /**\r\n * if the path segment has route params, read the param value from url\r\n * for each segment of route this gets called\r\n *\r\n * for mentor/:id/view - it gets called with mentor, :id, view 3 times\r\n */\r\n private resolvePathSegment(\r\n segment: string,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n //quirk -segment can be defined as view/:id in route config in which case you need to make it view/<resolved-param>\r\n if (segment.includes(PATH_PARAM.PREFIX)) {\r\n Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {\r\n segment = segment.replace(`:${key}`, `${value}`);\r\n });\r\n }\r\n return segment;\r\n }\r\n\r\n /**\r\n * queryParams & fragments for previous breadcrumb path are copied over to new list\r\n */\r\n private getQueryParamsFromPreviousList(routeLink: string): Breadcrumb {\r\n const { queryParams, fragment } =\r\n this.previousBreadcrumbs.find((item) => item.routeLink === routeLink) ||\r\n {};\r\n return { queryParams, fragment };\r\n }\r\n\r\n /**\r\n * set current activated route query params to the last breadcrumb item\r\n */\r\n private setQueryParamsForActiveBreadcrumb(\r\n lastItem: Breadcrumb,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n if (lastItem) {\r\n const { queryParams, fragment } = activatedRouteSnapshot;\r\n lastItem.queryParams = queryParams ? { ...queryParams } : undefined;\r\n lastItem.fragment = fragment!;\r\n }\r\n }\r\n\r\n /**\r\n * For a specific route, breadcrumb can be defined either on parent OR it's child(which has empty path)\r\n * When both are defined, child takes precedence\r\n *\r\n * Ex: Below we are setting breadcrumb on both parent and child.\r\n * So, child takes precedence and \"Defined On Child\" is displayed for the route 'home'\r\n * { path: 'home', loadChildren: () => import('./home/home.module').then((m) => m.HomeModule) , data: {breadcrumb: \"Defined On Module\"}}\r\n * AND\r\n * children: [\r\n * { path: '', component: ShowUserComponent, data: {breadcrumb: \"Defined On Child\" }\r\n * ]\r\n */\r\n private parseRouteData(routeConfig: any) {\r\n const { path, data } = routeConfig;\r\n const breadcrumb = this.mergeWithBaseChildData(\r\n routeConfig,\r\n data?.breadcrumb,\r\n );\r\n\r\n return { path, breadcrumb };\r\n }\r\n\r\n /**\r\n * get empty children of a module or Component. Empty child is the one with path: ''\r\n * When parent and it's children (that has empty route path) define data merge them both with child taking precedence\r\n */\r\n private mergeWithBaseChildData(\r\n routeConfig: any, // TODO: add proper type\r\n config: BreadcrumbConfig,\r\n ): BreadcrumbObject {\r\n if (!routeConfig) {\r\n return this.extractObject(config);\r\n }\r\n\r\n let baseChild;\r\n if (routeConfig.loadChildren) {\r\n // To handle a module with empty child route\r\n baseChild = routeConfig._loadedRoutes.find(\r\n (route: any) => route.path === '',\r\n );\r\n } else if (routeConfig.children) {\r\n // To handle a component with empty child route\r\n baseChild = routeConfig.children.find((route: any) => route.path === '');\r\n }\r\n\r\n const childConfig = baseChild?.data?.breadcrumb;\r\n return childConfig\r\n ? this.mergeWithBaseChildData(baseChild, {\r\n ...this.extractObject(config),\r\n ...this.extractObject(childConfig),\r\n })\r\n : this.extractObject(config);\r\n }\r\n\r\n /**\r\n * Update breadcrumb dynamically\r\n *\r\n * key can be a path | alias\r\n *\r\n * 1) Using complete route path. route can be passed the same way you define angular routes\r\n * - path can be passed as 'exact path(routeLink)' or 'path with params(routeRegex)'\r\n * - update label Ex: set('/mentor', 'Mentor'), set('/mentor/:id', 'Mentor Details')\r\n * - change visibility Ex: set('/mentor/:id/edit', { skip: true })\r\n * ------------------------------------------ OR ------------------------------------------\r\n * 2) Using route alias (prefixed with '@'). alias should be unique for a route\r\n * - update label Ex: set('@mentor', 'Enabler')\r\n * - change visibility Ex: set('@mentorEdit', { skip: true })\r\n *\r\n *\r\n * value can be string | BreadcrumbObject | BreadcrumbFunction\r\n */\r\n set(key: string, breadcrumb: string | BreadcrumbObject) {\r\n const breadcrumbObject = this.extractObject(breadcrumb);\r\n let updateArgs: [StoreMatcherKey, BreadcrumbDefinition];\r\n\r\n if (key.startsWith(ALIAS_PREFIX)) {\r\n updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];\r\n } else if (key.includes(PATH_PARAM.PREFIX)) {\r\n updateArgs = [\r\n 'routeRegex',\r\n { ...breadcrumbObject, routeRegex: this.buildRegex(key) },\r\n ];\r\n } else {\r\n updateArgs = [\r\n 'routeLink',\r\n { ...breadcrumbObject, routeLink: this.ensureLeadingSlash(key) },\r\n ];\r\n }\r\n\r\n // For this route if previously a breadcrumb is not defined that sets isAutoGeneratedLabel: true\r\n // change it to false since this is user supplied value\r\n updateArgs[1].isAutoGeneratedLabel = false;\r\n\r\n this.updateStore(...updateArgs);\r\n this.updateCurrentBreadcrumbs(...updateArgs);\r\n }\r\n\r\n /**\r\n * Update the store to reuse for dynamic declarations\r\n * If the store already has this route definition update it, else add\r\n */\r\n private updateStore(key: string, breadcrumb: BreadcrumbDefinition) {\r\n const storeItemIndex = this.dynamicBreadcrumbStore.findIndex((item) => {\r\n return (\r\n breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition]\r\n );\r\n });\r\n if (storeItemIndex > -1) {\r\n this.dynamicBreadcrumbStore[storeItemIndex] = {\r\n ...this.dynamicBreadcrumbStore[storeItemIndex],\r\n ...breadcrumb,\r\n };\r\n } else {\r\n this.dynamicBreadcrumbStore.push({ ...breadcrumb });\r\n }\r\n }\r\n\r\n /**\r\n * If breadcrumb is present in current breadcrumbs update it and emit new stream\r\n */\r\n private updateCurrentBreadcrumbs(\r\n key: string,\r\n breadcrumb: BreadcrumbDefinition,\r\n ) {\r\n const itemIndex = this.currentBreadcrumbs.findIndex((item) => {\r\n return key === 'routeRegex'\r\n ? this.matchRegex(item.routeLink!, breadcrumb[key]!)\r\n : breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition];\r\n });\r\n if (itemIndex > -1) {\r\n this.currentBreadcrumbs[itemIndex] = {\r\n ...this.currentBreadcrumbs[itemIndex],\r\n ...breadcrumb,\r\n };\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n this.breadcrumbs.next([...breadcrumbsToShow]);\r\n }\r\n }\r\n\r\n /**\r\n * For a route with path param, we create regex dynamically from angular route syntax\r\n * '/mentor/:id' becomes '/mentor/[^/]',\r\n * breadcrumbService.set('/mentor/:id', 'Uday') should update 'Uday' as label for '/mentor/2' OR 'mentor/ada'\r\n */\r\n private buildRegex(path: string) {\r\n return this.ensureLeadingSlash(path).replace(\r\n new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'),\r\n PATH_PARAM.REGEX_REPLACER,\r\n );\r\n }\r\n\r\n private ensureLeadingSlash(path: string) {\r\n return path.startsWith('/') ? path : `/${path}`;\r\n }\r\n\r\n /**\r\n * In App's RouteConfig, breadcrumb can be defined as a string OR a function OR an object\r\n *\r\n * string: simple static breadcrumb label for a path\r\n * function: callback that gets invoked with resolved path param\r\n * object: additional data defined along with breadcrumb label that gets passed to *s4yBreadcrumbItem directive\r\n */\r\n private extractLabel(config: BreadcrumbConfig, resolvedParam?: string) {\r\n const label = typeof config === 'object' ? config.label : config;\r\n if (typeof label === 'function') {\r\n return label(resolvedParam);\r\n }\r\n return label;\r\n }\r\n\r\n private extractObject(config: BreadcrumbConfig): BreadcrumbObject {\r\n // don't include {label} if config is undefined. This is important since we merge the configs\r\n if (\r\n config &&\r\n (typeof config === 'string' || typeof config === 'function')\r\n ) {\r\n return { label: config };\r\n }\r\n return (config as BreadcrumbObject) || {};\r\n }\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ActivatedRoute, RouterModule } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\r\nimport { BreadcrumbService } from './breadcrumb.service';\r\nimport { BreadcrumbDefinition } from './types';\r\n\r\n@Component({\r\n selector: 's4y-breadcrumb',\r\n imports: [CommonModule, RouterModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class BreadcrumbComponent implements OnInit {\r\n breadcrumbs$!: Observable<BreadcrumbDefinition[]>;\r\n separatorTemplate: TemplateRef<void> | undefined;\r\n private _separator: string = '/';\r\n\r\n /**\r\n * Breadcrumb item can be customized with this template\r\n * Template context is provided label, additional info, first and last indexes\r\n * Use cases:\r\n * 1) Add an icon along with label\r\n * 2) i18n. {{breadcrumb | translate}} or {{breadcrumb | transloco}}\r\n * 3) Change text case {{breadcrumb | titlecase}}\r\n */\r\n @ContentChild(BreadcrumbItemDirective, { static: false, read: TemplateRef })\r\n itemTemplate: any;\r\n\r\n /**\r\n * If true, breadcrumb is auto generated even without any mapping label\r\n * Default label is same as route segment\r\n */\r\n @Input() autoGenerate = true;\r\n\r\n /**\r\n * By default query params will be preserved with breadcrumbs\r\n */\r\n @Input() preserveQueryParams = true;\r\n\r\n /**\r\n * By default query fragments will be preserved with breadcrumbs\r\n */\r\n @Input() preserveFragment = true;\r\n\r\n /**\r\n * custom class provided by consumer to increase specificity\r\n * This will benefit to override styles that are conflicting\r\n */\r\n @Input() class = '';\r\n\r\n /**\r\n * anchorTarget = \"_blank\" makes the breadcrumb link open in a new tab\r\n */\r\n @Input() anchorTarget: '_blank' | undefined;\r\n\r\n /**\r\n * separator between breadcrumbs, defaults to '/'.\r\n * User can customize separator either by passing a String or Template\r\n *\r\n * String --> Ex: <s4y-breadcrumb separator=\"-\"> </s4y-breadcrumb>\r\n *\r\n * Template --> Ex: <s4y-breadcrumb [separator]=\"separatorTemplate\"> </s4y-breadcrumb>\r\n * <ng-template #separatorTemplate><mat-icon>arrow_right</mat-icon></ng-template>\r\n */\r\n @Input()\r\n set separator(value: string | TemplateRef<void>) {\r\n if (value instanceof TemplateRef) {\r\n this.separatorTemplate = value;\r\n this._separator = '/';\r\n } else {\r\n this.separatorTemplate = undefined;\r\n this._separator = value || '/';\r\n }\r\n }\r\n get separator() {\r\n return this._separator;\r\n }\r\n\r\n setupMessage = 'not set up yet';\r\n someParameterValue = null;\r\n\r\n constructor(\r\n private breadcrumbService: BreadcrumbService,\r\n activateRoute: ActivatedRoute,\r\n ) {\r\n // breadcrumb inside ngIf works only this way\r\n activateRoute.params.subscribe((params) => {\r\n this.setupComponent(params['someParam']);\r\n });\r\n }\r\n\r\n setupComponent(someParam: any) {\r\n this.setupMessage = 'set up at ' + new Date();\r\n this.someParameterValue = someParam;\r\n }\r\n\r\n ngOnInit() {\r\n this.breadcrumbs$ = this.breadcrumbService.breadcrumbs$.pipe(\r\n map((breadcrumbs: BreadcrumbDefinition[]) => {\r\n return breadcrumbs\r\n .filter((breadcrumb: BreadcrumbDefinition) => {\r\n // Usually, breadcrumb list can contain a combination of auto generated and user specified labels\r\n // this filters autogenerated labels in case of \"[autoGenerate]: false\"\r\n if (this.autoGenerate) {\r\n return true;\r\n }\r\n return !breadcrumb.isAutoGeneratedLabel;\r\n })\r\n .map((breadcrumb: BreadcrumbDefinition) => {\r\n // Do not mutate breadcrumb as its source of truth.\r\n // There can be scenarios where we can have multiple s4y-breadcrumb instances in page\r\n const { routeInterceptor, routeLink } = breadcrumb;\r\n return {\r\n ...breadcrumb,\r\n routeLink:\r\n routeInterceptor?.(routeLink!, breadcrumb) || routeLink,\r\n };\r\n });\r\n }),\r\n );\r\n }\r\n}\r\n","<nav aria-label=\"breadcrumb\" class=\"s4y-breadcrumb-root\" [ngClass]=\"class\">\r\n <ol class=\"s4y-breadcrumb-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let breadcrumb of breadcrumbs$ | async;\r\n last as isLast;\r\n first as isFirst;\r\n index as index;\r\n count as count\r\n \"\r\n >\r\n <li class=\"s4y-breadcrumb-item\">\r\n <a\r\n *ngIf=\"!isLast\"\r\n class=\"s4y-breadcrumb-link\"\r\n [ngClass]=\"{ 's4y-breadcrumb-link-disabled': breadcrumb.disable }\"\r\n [attr.aria-disabled]=\"breadcrumb.disable\"\r\n [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor(breadcrumb.routeLink!, breadcrumb)\r\n : breadcrumb.routeLink\r\n \"\r\n [queryParams]=\"\r\n preserveQueryParams ? breadcrumb.queryParams : undefined\r\n \"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </a>\r\n\r\n <span *ngIf=\"isLast\" class=\"s4y-breadcrumb-trail\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </span>\r\n </li>\r\n\r\n <li *ngIf=\"!isLast\" class=\"s4y-breadcrumb-separator\" aria-hidden=\"true\">\r\n @if (separatorTemplate) {\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n }\r\n\r\n <ng-container *ngIf=\"!separatorTemplate\">{{ separator }}</ng-container>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n","/*\r\n * Public API Surface of s4y-components\r\n */\r\n\r\n// Exporta tudo do index.ts de cada pasta\r\nexport * from './lib/components/dashboard';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/forms-kit';\r\nexport * from './lib/directives';\r\nexport * from './lib/components/toast';\r\nexport * from './lib/components/svg';\r\nexport * from './lib/components/drawer/drawer.component';\r\nexport * from './lib/components/avatar/avatar.component';\r\nexport * from './lib/components/table';\r\nexport * from './lib/components/spinner/spinner.component';\r\nexport * from './lib/components/modal/modal.component';\r\nexport * from './lib/components/modal-confirmation';\r\nexport * from './lib/components/search-bar';\r\nexport * from './lib/components/toggle/toggle.component';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/pagination';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/slider/slider.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/tooltip';\r\nexport * from './lib/components/breadcrumb';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SvgService","i2","i3.AvatarComponent","i4.SvgComponent","COMPONENTS","i2.InputComponent","i3.LabelComponent","i4.InputSufixComponent","i1.ToastService","map","i1.BreadcrumbService","i3"],"mappings":";;;;;;;;;;;;;;MAaa,wBAAwB,CAAA;AACJ,IAAA,aAAa;AACf,IAAA,WAAW;uGAF7B,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,0RCbrC,2hBAeA,EAAA,MAAA,EAAA,CAAA,+HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDFa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,2hBAAA,EAAA,MAAA,EAAA,CAAA,+HAAA,CAAA,EAAA;8BAGc,aAAa,EAAA,CAAA;sBAA3C,YAAY;uBAAC,eAAe;gBACA,WAAW,EAAA,CAAA;sBAAvC,YAAY;uBAAC,aAAa;;;MEVhB,YAAY,CAAA;AACf,IAAA,SAAS,GAAG,MAAM,CAAU,IAAI,CAAC;IAEzC,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IAE3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;;uGAN/B,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCKY,eAAe,CAAA;AAChB,IAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AAG9C,IAAA,eAAe;uGAJJ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,uLCT5B,ywBAyBA,EAAA,MAAA,EAAA,CAAA,wjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDhBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,KAAK,EAAA,QAAA,EAAA,ywBAAA,EAAA,MAAA,EAAA,CAAA,wjBAAA,CAAA,EAAA;8BAMjB,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,iBAAiB;;;MEIpB,eAAe,CAAA;AAC1B,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;AAC3C,IAAA,GAAG,GAAG,KAAK,CAAS,QAAQ,CAAC,CAAC;AAC9B,IAAA,IAAI,GAAG,KAAK,CAA4B,IAAI,CAAC,CAAC;AAC9C,IAAA,OAAO,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AAC/B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;AAE/B,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAE1B,IAAA,IACI,WAAW,GAAA;QACb,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;gBAC7B;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;gBAC7B;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;gBAC7B;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;gBAC7B;AACF,YAAA;AACE,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;;AAGjC,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEzE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;;AAGnC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG1B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;;IAG5B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;uGA9ChB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB5B,khBAUA,EAAA,MAAA,EAAA,CAAA,oeAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAIX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,oeAAA,CAAA,EAAA;8BAenB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;;;AE1BtB;MAQa,UAAU,CAAA;AACb,IAAA,QAAQ,GAAG,IAAI,GAAG,EAA2B;AAErD,IAAA,aAAa,CAAC,GAAW,EAAA;QACvB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAEpC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,QAAQ,CAAC,UAAU,CAAE,CAAA,CAAC;;AAEjE,gBAAA,OAAO,QAAQ,CAAC,IAAI,EAAE;AACxB,aAAC,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;;AAGjC,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACpC,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;AAC7C,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;SAC/B,CAAC,CACH;;uGAtBQ,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPD;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;MAuBa,YAAY,CAAA;AAQb,IAAA,SAAA;AACA,IAAA,UAAA;IANV,IAAI,GAAa,SAAS;AAEnB,IAAA,UAAU;IAEjB,WACU,CAAA,SAAuB,EACvB,UAAsB,EAAA;QADtB,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAU,CAAA,UAAA,GAAV,UAAU;;IAGpB,IACI,GAAG,CAAC,KAAgC,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAGnB,IAAA,aAAa,CAAC,GAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACpB,aAAa,CAAC,GAAG;AACjB,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;;uGAtBjE,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EChEzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yjBA0BA,EDmCY,MAAA,EAAA,CAAA,0ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,yCAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGlB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;+BACE,SAAS,EAAA,OAAA,EAGV,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAA,eAAA,EACb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yjBAAA,EAAA,MAAA,EAAA,CAAA,0ZAAA,CAAA,EAAA;yGAK/C,IAAI,EAAA,CAAA;sBAFH;;sBACA,WAAW;uBAAC,OAAO;gBAWhB,GAAG,EAAA,CAAA;sBADN;;;ME9CU,cAAc,CAAA;AACf,IAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AACtC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAC9B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAE7C,IAAA,KAAK,GAAG,KAAK,CAAc,EAAE,CAAC;AAE9B,IAAA,cAAc,GAAG,KAAK,CACpB,2GAA2G,CAC5G;AACD,IAAA,YAAY,GAAG,KAAK,CAAS,cAAc,CAAC;AAC5C,IAAA,kBAAkB,GAAG,KAAK,CAAS,YAAY,CAAC;AAEhD,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC;AAE7B,IAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;AAER,IAAA,YAAY;AACV,IAAA,cAAc;AACd,IAAA,cAAc;AAE9C,IAAA,QAAQ,CAAC,IAAe,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;;AAG/B,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;;aACrB;YACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;AAIrC,IAAA,eAAe,CAAC,cAAyB,EAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC5B,YAAA,IAAI,IAAI,KAAK,cAAc,EAAE;AAC3B,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAEvB,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;;IAGzD,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;uGAnDnB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,83CC9B3B,4hIA+GA,EAAA,MAAA,EAAA,CAAA,onMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDjFa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;+BACE,WAAW,EAAA,UAAA,EAGT,KAAK,EACX,IAAA,EAAA;AACJ,wBAAA,oBAAoB,EAAE,YAAY;AACnC,qBAAA,EAAA,QAAA,EAAA,4hIAAA,EAAA,MAAA,EAAA,CAAA,onMAAA,CAAA,EAAA;8BAsB6B,YAAY,EAAA,CAAA;sBAAzC,YAAY;uBAAC,cAAc;gBACI,cAAc,EAAA,CAAA;sBAA7C,YAAY;uBAAC,gBAAgB;gBACE,cAAc,EAAA,CAAA;sBAA7C,YAAY;uBAAC,gBAAgB;;;ME5CnB,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,iFCRrC,+BACA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA,CAAA;;2FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA;;;MEEN,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,oFCRxC,+BACA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,CAAA;;2FDOa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA;;;AEMnB,MAAMC,YAAU,GAAG;IACjB,wBAAwB;IACxB,cAAc;IACd,eAAe;IACf,wBAAwB;IACxB,2BAA2B;CAC5B;MAOY,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAZ1B,wBAAwB;YACxB,cAAc;YACd,eAAe;YACf,wBAAwB;YACxB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAMjB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAVnE,wBAAwB;YACxB,cAAc;YACd,eAAe;YACf,wBAAwB;YACxB,2BAA2B,CAAA,EAAA,CAAA;AAQhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAFhB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,eAAe,CAAA,EAAA,CAAA;;2FAE1C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAACA,YAAU,CAAC;oBAC1B,OAAO,EAAE,CAACA,YAAU,CAAC;oBACrB,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,CAAC;AACrE,iBAAA;;;ACxBD;;MCiCa,eAAe,CAAA;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;IACvB,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACxD,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AACtB,IAAA,IAAI,GAAG,KAAK,CAAc,QAAQ,CAAC;AAEnC,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,CAAC;AAE1C,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AAEjC,IAAA,eAAe;AAEf,IAAA,IACY,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAGlC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,eAAe;AACxB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,UAAU;AACnB,YAAA;AACE,gBAAA,OAAO,aAAa;;AAE1B,KAAC,CAAC;uGAhCS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EApBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4/JAAA,CAAA,EAAA,CAAA;;2FAcU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,SAAS;+BACE,iCAAiC,EAAA,OAAA,EAClC,EAAE,EACD,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EACV,IAAA,EAAA;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,eAAe,EAAE,6BAA6B;AAC9C,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,SAAS,EAAE,gBAAgB;AAC5B,qBAAA,EAAA,MAAA,EAAA,CAAA,4/JAAA,CAAA,EAAA;8BAeW,UAAU,EAAA,CAAA;sBADrB,WAAW;uBAAC,UAAU;;;MCrCZ,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2ECR/B,kZASA,EAAA,MAAA,EAAA,CAAA,yhCAAA,CAAA,EAAA,CAAA;;2FDDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,kZAAA,EAAA,MAAA,EAAA,CAAA,yhCAAA,CAAA,EAAA;;;MEEN,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kGCR3B,yBACA,EAAA,MAAA,EAAA,CAAA,iPAAA,CAAA,EAAA,CAAA;;2FDOa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,cAGrC,KAAK,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,iPAAA,CAAA,EAAA;;;MEEN,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,sECR3B,+BACA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,CAAA;;2FDOa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA;;;MEEN,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,qECR1B,+BACA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA,CAAA;;2FDOa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA;;;MEEN,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8ECRlC,+BACA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,CAAA;;2FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA;;;MEEN,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,6ECRjC,+BACA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA,CAAA;;2FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA;;;MEEN,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,4ECRhC,+BACA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA,CAAA;;2FDOa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA;;;MEUN,0BAA0B,CAAA;IACrC,IAAI,GAAwB,UAAU;AAEtC,IAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC/B,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;IAC7B,WAAW,GAAG,KAAK,CAAS,IAAI,CAAC,KAAK,EAAE,CAAC;IAE/B,KAAK,GAAW,EAAE;IAClB,QAAQ,GAAY,KAAK;IAEzB,wBAAwB,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,UAAU,GAAG,MAAM;;AAGxD,IAAA,OAAO,CAAC,CAAQ,EAAA;AACd,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AAElD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE;;AAGlB,IAAA,SAAS,GAAG,CAAC,KAAa,KAAI,GAAG;AACjC,IAAA,SAAS,GAAG,MAAK,GAAG;AAEpB,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;;AAG1B,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;uGAvCjB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAR1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AAC1D,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdH,syGA0DA,EAAA,MAAA,EAAA,CAAA,iwBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA;;2FD1Ca,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EAGvB,KAAK,EACN,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AAC1D,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,syGAAA,EAAA,MAAA,EAAA,CAAA,iwBAAA,CAAA,EAAA;;;AEHH,MAAM,UAAU,GAAG;IACjB,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,aAAa;IACb,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,0BAA0B;CAC3B;MAOY,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAfzB,kBAAkB;YAClB,cAAc;YACd,cAAc;YACd,aAAa;YACb,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAMhB,YAAY,CAAA,EAAA,OAAA,EAAA,CAbtB,kBAAkB;YAClB,cAAc;YACd,cAAc;YACd,aAAa;YACb,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,0BAA0B,CAAA,EAAA,CAAA;AAQf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAFf,YAAY,CAAA,EAAA,CAAA;;2FAEX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,UAAU;AACxB,oBAAA,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AC1BD;;MCwBa,aAAa,CAAA;AAKJ,IAAA,EAAA;IAJpB,IAAI,GAAG,KAAK,CAAoB,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChE,IAAA,YAAY,GAAG,KAAK,CAAU,KAAK,CAAC;IAE5B,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvD,IAAA,WAAA,CAAoB,EAAgC,EAAA;QAAhC,IAAE,CAAA,EAAA,GAAF,EAAE;;IAEtB,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,IAAI,CAAC,qBAAqB,EAAE;;;IAIxB,qBAAqB,GAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAEnC,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACvC;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACvC;AACF,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC3C;AACF,YAAA,KAAK,aAAa;gBAChB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC1C;AACF,YAAA,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC9C;AACF,YAAA,KAAK,eAAe;gBAClB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;gBAChD;;;IAMN,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AAEzB,QAAA,MAAM,SAAS,GAA0B;AACvC,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,eAAe,EAAE,gBAAgB;SAClC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC;;QAGxC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;;;AAK1C,IAAA,OAAO,CAAC,CAAa,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AAEzB,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,MAAM,EAAE;gBACX,MAAM,QAAQ,GAAG,YAAY;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,gBAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC9C;;YAGF,KAAK,KAAK,EAAE;gBACV,MAAM,QAAQ,GAAG,gBAAgB;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,gBAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC9C;;YAGF,KAAK,MAAM,EAAE;gBACX,MAAM,QAAQ,GAAG,oBAAoB;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,gBAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC9C;;YAGF,KAAK,KAAK,EAAE;gBACV,MAAM,QAAQ,GAAG,WAAW;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,gBAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC9C;;YAGF,KAAK,UAAU,EAAE;gBACf,MAAM,QAAQ,GAAG,iBAAiB;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACzC,gBAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC9C;;YAEF,KAAK,eAAe,EAAE;gBACpB,MAAM,QAAQ,GAAG,gBAAgB;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3C,gBAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC9C;;YAGF,KAAK,OAAO,EAAE;gBACZ,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBACrC;;YAGF,KAAK,aAAa,EAAE;gBAClB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACpC;;;QAIJ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;AAI5D,IAAA,OAAO,GAAG,CAAC,KAAa,KAC9B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC;AAEtC,IAAA,MAAM,GAAG,CAAC,KAAa,KAC7B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAE1C,IAAA,OAAO,GAAG,CAAC,KAAa,KAC9B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC;AAE9C,IAAA,MAAM,GAAG,CAAC,KAAa,KAC7B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC;AAErC,IAAA,cAAc,GAAG,CAAC,KAAa,KACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,CAAC;AAE3C,IAAA,gBAAgB,GAAG,CAAC,KAAa,KACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAE1C,IAAA,WAAW,GAAG,CAAC,KAAa,KAAI;;QAEtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;AAGxC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,SAAS;QAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG;AAExC,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AACpC,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC;AACJ,KAAC;AAEO,IAAA,UAAU,GAAG,CAAC,KAAa,KAAI;;QAErC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;QAGxC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;QAGnC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG;;AAG/C,QAAA,QACE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,YAAA,qBAAqB,EAAE,CAAC;AACxB,YAAA,qBAAqB,EAAE,CAAC;SACzB,CAAC,GAAG,GAAG;AAEZ,KAAC;IAEO,kBAAkB,CAAC,KAAa,EAAE,QAAgB,EAAA;QACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC;AAET,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,CAAC,EAAE;AAC3D,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;AAAE,gBAAA,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;;AAG5C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;IAGhB,kBAAkB,CAAC,QAAgB,EAAE,WAAmB,EAAA;QAC9D,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAAE,gBAAA,KAAK,EAAE;YACvC,IAAI,KAAK,IAAI,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC;;QAExC,OAAO,QAAQ,CAAC,MAAM;;IAGhB,wBAAwB,CAAC,QAAgB,EAAE,KAAa,EAAA;AAC9D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AAChE,QAAA,UAAU,CAAC,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;uGAvNlD,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;+EA+CC,cAAc,EAAA,CAAA;sBAFb,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,OAAO;gBAyBb,OAAO,EAAA,CAAA;sBADd,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MChFtB,qBAAqB,CAAA;AAIZ,IAAA,UAAA;AAHV,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;IACxC,SAAS,GAAY,KAAK;AAEnC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;;AAG9B,IAAA,WAAW,CAAC,aAA0B,EAAA;AACpC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC3E,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;;uGAVjB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;+EAEW,YAAY,EAAA,CAAA;sBAArB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAKD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC;;;ACX5C,MAAM,cAAc,GAA6B,OAAO,CAC7D,gBAAgB,EAChB;;IAEE,UAAU,CAAC,qCAAqC,EAAE;AAChD,QAAA,OAAO,CACL,eAAe,EACf,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CACtD;KACF,CAAC;IACF,UAAU,CAAC,qCAAqC,EAAE;QAChD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;AACrD,QAAA,OAAO,CACL,gBAAgB,EAChB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAClD;KACF,CAAC;;IAGF,UAAU,CAAC,2CAA2C,EAAE;AACtD,QAAA,OAAO,CACL,eAAe,EACf,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CACrD;KACF,CAAC;IACF,UAAU,CAAC,2CAA2C,EAAE;QACtD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;AACpD,QAAA,OAAO,CACL,gBAAgB,EAChB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAClD;KACF,CAAC;AACH,CAAA,CACF;;MCnCY,YAAY,CAAA;AACf,IAAA,OAAO,GAAG,MAAM,CAAW,EAAE,CAAC;IAEtC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAEvC,IAAA,GAAG,CAAC,KAAa,EAAA;AACf,QAAA,MAAM,UAAU,GACd,OAAO,MAAM,EAAE,UAAU,KAAK;AAC5B,cAAE,MAAM,CAAC,UAAU;AACnB,cAAE,IAAI,CAAC,YAAY,EAAE;QAEzB,MAAM,WAAW,GAAW,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE;AAElE,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;YACxC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACrC,aAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;;;AAItB,IAAA,MAAM,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAExD,YAAA,OAAO,SAAS;AAClB,SAAC,CAAC;;AAGJ,IAAA,kBAAkB,CAAC,EAAU,EAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KACvB,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAClD;;IAGH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;;IAGd,YAAY,GAAA;QAClB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AACnE,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AAClC,YAAA,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;AACzC,YAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvB,SAAC,CAAC;;uGA7CO,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCQY,cAAc,CAAA;AAGH,IAAA,aAAA;AAFtB,IAAA,QAAQ,GAAG,KAAK,CAAgB,UAAU,CAAC;AAE3C,IAAA,WAAA,CAAsB,aAA2B,EAAA;QAA3B,IAAa,CAAA,aAAA,GAAb,aAAa;;AAEzB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAE9D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;uGAP5D,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kNCb3B,8gCAuBA,EAAA,MAAA,EAAA,CAAA,kxEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfY,OAAO,EAGL,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,cAAc,CAAC,EAAA,CAAA;;2FAEjB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,OAAO,CAAC,EAGN,UAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,8gCAAA,EAAA,MAAA,EAAA,CAAA,kxEAAA,CAAA,EAAA;;;AEFvB,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE;IACxD,UAAU,CACR,QAAQ,EACR;AACE,QAAA,KAAK,CAAC;YACJ,KAAK,CAAC,OAAO,EAAE;AACb,gBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aACjD,CAAC;YACF,KAAK,CACH,uBAAuB,EACvB;AACE,gBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;gBACzC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACnE,aAAA,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;SACF,CAAC;KACH,EACD,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,CAClD;IACD,UAAU,CACR,QAAQ,EACR;AACE,QAAA,KAAK,CAAC;YACJ,KAAK,CAAC,OAAO,EAAE;AACb,gBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aAChD,CAAC;YACF,KAAK,CACH,uBAAuB,EACvB;AACE,gBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;gBACvC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAClE,aAAA,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;SACF,CAAC;KACH,EACD,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,CAChD;AACF,CAAA,CAAC;;MCzBW,eAAe,CAAA;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAY,OAAO,CAAC;AACpC,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAQ,QAAQ,CAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,CAAC;AAC/B,IAAA,oBAAoB,GAAG,KAAK,CAAU,IAAI,CAAC;AAC3C,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,CAAC;AAErC,IAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC;IAEpB,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAEnB,IAAA,cAAc;AAChB,IAAA,YAAY;AACV,IAAA,cAAc;AAE9C,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;AAER,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEhC,QAAA,IAAI,KAAa;QAEjB,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;gBACV,KAAK,GAAG,OAAO;gBACf;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,GAAG,OAAO;gBACf;AACF,YAAA,KAAK,OAAO;gBACV,KAAK,GAAG,OAAO;gBACf;AACF,YAAA;gBACE,KAAK,GAAG,IAAI;;QAGhB,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;;aAChC;YACL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;;AAEzC,KAAC,CAAC;AAEF,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;AAC1C,KAAC,CAAC;AAEF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ;AAC1C,KAAC,CAAC;AAEF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,kBAAkB;AAC3B,YAAA;gBACE,OAAO,kBAAkB,CAAC;;AAEhC,KAAC,CAAC;AAEF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,kBAAkB;AAC3B,YAAA;gBACE,OAAO,kBAAkB,CAAC;;AAEhC,KAAC,CAAC;AAGF,IAAA,qBAAqB,CAAC,KAAoB,EAAA;QACxC,IAAI,CAAC,KAAK,EAAE;;AAGd,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAE1C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YAC5C,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AAChD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;;IAK5B,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAI1B,IAAA,eAAe,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;uGA9Gf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB5B,28CA+CA,ED3BY,MAAA,EAAA,CAAA,0sCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAGvB,CAAC,eAAe,CAAC,EAAA,CAAA;;2FAElB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAA,UAAA,EAGxB,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,28CAAA,EAAA,MAAA,EAAA,CAAA,0sCAAA,CAAA,EAAA;wDAcG,cAAc,EAAA,CAAA;sBAA7C,YAAY;uBAAC,gBAAgB;gBACA,YAAY,EAAA,CAAA;sBAAzC,YAAY;uBAAC,cAAc;gBACI,cAAc,EAAA,CAAA;sBAA7C,YAAY;uBAAC,gBAAgB;gBA0E9B,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;;MEpGxC,gBAAgB,CAAA;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAc,OAAO,CAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAe,SAAS,CAAC;AAEtC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;uGANG,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0YCZ7B,IACA,EAAA,MAAA,EAAA,CAAA,0wBAAA,CAAA,EAAA,CAAA;;2FDWa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAGjB,IAAA,EAAA;AACJ,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,cAAc,EAAE,SAAS;AAC1B,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0wBAAA,CAAA,EAAA;;;MEWU,cAAc,CAAA;AACzB,IAAA,OAAO,GAAG,KAAK,CAAQ,EAAE,CAAC;AAC1B,IAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,CAAC;AAEvB,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEH,IAAA,WAAW;AACV,IAAA,YAAY;AACX,IAAA,aAAa;AACb,IAAA,aAAa;AAE5C,IAAA,mBAAmB,GAAG,KAAK,CAAS,qCAAqC,CAAC;AAC1E,IAAA,mBAAmB,GAAG,KAAK,CAAS,qCAAqC,CAAC;uGAb/D,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,ECrB3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0oEAoEA,EDpDY,MAAA,EAAA,CAAA,m/CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,sMAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAK7B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAG1B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0oEAAA,EAAA,MAAA,EAAA,CAAA,m/CAAA,CAAA,EAAA;8BASR,WAAW,EAAA,CAAA;sBAAvC,YAAY;uBAAC,aAAa;gBACG,YAAY,EAAA,CAAA;sBAAzC,YAAY;uBAAC,cAAc;gBACG,aAAa,EAAA,CAAA;sBAA3C,YAAY;uBAAC,eAAe;gBACE,aAAa,EAAA,CAAA;sBAA3C,YAAY;uBAAC,eAAe;;;MEnBlB,kBAAkB,CAAA;AAOnB,IAAA,EAAA;AACA,IAAA,QAAA;AAPV,IAAA,aAAa,GAAG,KAAK,CAAqB,SAAS,CAAC;AACpD,IAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,CAAC;IACf,WAAW,GAAG,IAAI;AAClB,IAAA,IAAI;IAEZ,WACU,CAAA,EAAc,EACd,QAAmB,EAAA;QADnB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAGlB,IAAA,QAAQ;IAER,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAE7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACrC,IAAI,CAAC,eAAe,EAAE;;;IAIlB,iBAAiB,GAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAoB;AACnE,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;QAEpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;QAEjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAEzC,QAAA,OAAO,IAAI;;IAGL,eAAe,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACvC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE;AACrD,QAAA,SAAS,CAAC,WAAW,GAAG,EAAE;;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAmB;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAErC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;AAEjD,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;AAEzC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;IAGtD,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW;QACpC,IAAI,CAAC,cAAc,EAAE;QAErB,IAAI,CAAC,cAAc,EAAE;;IAGf,UAAU,GAAA;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAqB;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC;AAE7D,QAAA,OAAO,IAAI;;IAGL,cAAc,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;AAC3B,gBAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC;AAC7B,gBAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC;AAE7B,gBAAA,IAAI,OAAO,GAAG,OAAO,EAAE;AACrB,oBAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC;;AAElC,gBAAA,IAAI,OAAO,GAAG,OAAO,EAAE;AACrB,oBAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;;AAElC,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;YAEF,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;;aACjC;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC;;;IAIrD,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;aACxB,OAAO,CAAC,OAAO;aACf,gBAAgB,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;aACxB,OAAO,CAAC,OAAO;aACf,gBAAgB,CAAC,IAAI,CAAC;AAEzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACvC,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAE9D,IAAI,eAAe,EAAE;AACnB,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,EAAe,KAAI;gBACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;AACzC,aAAC,CAAC;AACF,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,EAAe,KAAI;gBACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;AACzC,aAAC,CAAC;YACF;;AAGF,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,EAAe,KAAI;YACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;AACzC,SAAC,CAAC;AACF,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,EAAe,KAAI;YACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;AACzC,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;AAE3C,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;AAE7D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;aACxB,OAAO,CAAC,OAAO;aACf,gBAAgB,CAAC,IAAI,CAAC;AACzB,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,EAAe,KAAI;YACrC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACnC,IAAI,EAAE,EAAE;gBACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;;AAExC,SAAC,CAAC;;AAGI,IAAA,uBAAuB,CAAC,WAA2B,EAAA;QACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC;;IAGtD,cAAc,GAAA;AACpB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW;AAEnE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC;;AAGpD,IAAA,UAAU,GAAG,CAAA;;;;;;;;;;SAUd;AAEC,IAAA,WAAW,GAAG,CAAA;;;;uSAI+Q;uGApK1R,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA;;;ACDM,MAAM,iBAAiB,GAA6B,OAAO,CAChE,mBAAmB,EACnB;IACE,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CAAC;YACJ,KAAK,CAAC,eAAe,EAAE;AACrB,gBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aACjD,CAAC;YACF,KAAK,CAAC,sBAAsB,EAAE;gBAC5B,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;AACpD,gBAAA,OAAO,CACL,gBAAgB,EAChB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAClD;aACF,CAAC;SACH,CAAC;KACH,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CAAC;YACJ,KAAK,CAAC,eAAe,EAAE;gBACrB,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aAChD,CAAC;YACF,KAAK,CAAC,sBAAsB,EAAE;AAC5B,gBAAA,OAAO,CACL,eAAe,EACf,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CACrD;aACF,CAAC;SACH,CAAC;KACH,CAAC;AACH,CAAA,CACF;;MCxBY,cAAc,CAAA;AACY,IAAA,mBAAmB;AACnB,IAAA,mBAAmB;AAExD,IAAA,KAAK,GAAG,KAAK,CAAS,QAAQ,CAAC;IAE/B,UAAU,GAAG,KAAK,EAA6B;IAE/C,UAAU,GAAG,MAAM,EAAE;AAErB,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;AAC/B,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,CAAC;IAEjC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;uGAdd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,25BClB3B,q9BA2BA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,YAAY,EAGV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,iBAAiB,CAAC,EAAA,CAAA;;2FAEpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,YAAY,CAAC,EAGX,UAAA,EAAA,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,q9BAAA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA;8BAGM,mBAAmB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,qBAAqB;gBACE,mBAAmB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,qBAAqB;;;MEfxB,wBAAwB,CAAA;IAC3B,kBAAkB,GAAG,MAAM,CAA0B;AAC3D,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,OAAO,EAAE,mCAAmC;AAC7C,KAAA,CAAC;AAEM,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAEhC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC7D,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE3C,IAAA,IAAI,CAAC,WAAoC,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGzB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,IAAI;QACrC,IAAI,CAAC,KAAK,EAAE;;IAGd,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,IAAI;QACpC,IAAI,CAAC,KAAK,EAAE;;IAGd,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;;uGA3Bf,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAxB,wBAAwB,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MCiBY,0BAA0B,CAAA;AAC3B,IAAA,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACvC,IAAA,YAAY;AAEhC,IAAA,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB;AAExE,IAAA,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS;IAEjD,UAAU,GAAG,KAAK,EAA6B;AAE/C,IAAA,iBAAiB,GAAG,QAAQ,CAC1B,MACE,IAAI,CAAC,YAAY,EAAE,CAAC,iBAAiB,IAAI;AACvC,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CACJ;AACD,IAAA,kBAAkB,GAAG,QAAQ,CAC3B,MACE,IAAI,CAAC,YAAY,EAAE,CAAC,kBAAkB,IAAI;AACxC,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA,CACJ;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE;;IAG3C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;;IAG1C,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;;uGAlC5B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBvC,iyCAuCA,EDvBY,MAAA,EAAA,CAAA,23CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2RAAE,eAAe,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAG3B,CAAC,iBAAiB,CAAC,EAAA,CAAA;;2FAEpB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;+BACE,wBAAwB,EAAA,OAAA,EACzB,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,UAAA,EAG5B,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,iyCAAA,EAAA,MAAA,EAAA,CAAA,23CAAA,CAAA,EAAA;8BAID,YAAY,EAAA,CAAA;sBAAzC,YAAY;uBAAC,cAAc;;;MEbjB,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/B,62BAkBA,EAAA,MAAA,EAAA,CAAA,q0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAKf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,gBAAgB,CAAC,EAGZ,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,62BAAA,EAAA,MAAA,EAAA,CAAA,q0BAAA,CAAA,EAAA;;;MEc1B,eAAe,CAAA;AAC1B,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAChC,IAAA,IAAI,GAAG,KAAK,CAAc,QAAQ,CAAC;IAEzB,qBAAqB,GAAY,KAAK;AAEhD,IAAA,QAAQ,GAAG,CAAC,KAAc,KAAI,GAAG;AACjC,IAAA,SAAS,GAAG,MAAK,GAAG;AAEpB,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGvB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAErB,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU;;IAGzC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,qBAAqB;YAAE;AAEnD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;uGA9BlB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,eAAe;AAC5B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,ECpBH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6QASA,24DDEY,WAAW,EAAA,CAAA,EAAA,CAAA;;2FAWV,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,CAAC,WAAW,CAAC,EAGX,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAiB,eAAA;AAC5B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,6QAAA,EAAA,MAAA,EAAA,CAAA,o1DAAA,CAAA,EAAA;;;MEAU,iBAAiB,CAAA;AAC5B,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAE7B,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC7B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;IAE/B,KAAK,GAAG,KAAK,EAAU;IAEvB,UAAU,GAAY,KAAK;AAE3B,IAAA,QAAQ,GAAG,CAAC,KAAc,KAAI,GAAG;AACjC,IAAA,SAAS,GAAG,MAAK,GAAG;AAEpB,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGvB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;;IAG9B,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;uGAlClB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,iBAAiB;AAC9B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EClBH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8nBA0BA,qzDDjBY,WAAW,EAAA,CAAA,EAAA,CAAA;;2FAWV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACf,OAAA,EAAA,CAAC,WAAW,CAAC,EAGX,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAmB,iBAAA;AAC9B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,8nBAAA,EAAA,MAAA,EAAA,CAAA,8vDAAA,CAAA,EAAA;;;MEAU,mBAAmB,CAAA;AAC9B,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,CAAC;AAC9B,IAAA,YAAY,GAAG,KAAK,CAAS,CAAC,CAAC;AAC/B,IAAA,kBAAkB,GAAG,KAAK,CAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;IAEvB,QAAQ,GAAG,MAAM,EAAe;IAEhC,UAAU,GAAG,QAAQ,CAAC,MACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CACpD;;AAID,IAAA,MAAM,GAAG,QAAQ,CAAC,MAChB,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAC5E;AAED,IAAA,KAAK,GAAG,QAAQ,CAAC,MACf,IAAI,CAAC,GAAG,CACN,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAC7C,IAAI,CAAC,YAAY,EAAE,CACpB,CACF;AAED,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,MAAM,UAAU,GAAG,CAAC;QACpB,MAAM,KAAK,GAAuB,EAAE;AAEpC,QAAA,IAAI,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,YAAA,OAAO,KAAK;;AAGd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;AAE5C,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEd,IAAI,KAAK,GAAG,CAAC;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGf,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEtC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAEtB,QAAA,OAAO,KAAK;AACd,KAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CQ,IAAA,UAAU,CAAC,YAAoB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;QAElC,IAAI,CAAC,eAAe,EAAE;;AAGxB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAA,kBAAkB,GAAG,QAAQ,CAC3B,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAClD;;;;;IAOD,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YAAE;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,CAAC,CAAC;QAErD,IAAI,CAAC,eAAe,EAAE;;IAGxB,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,CAAC,CAAC;QAErD,IAAI,CAAC,eAAe,EAAE;;AAGxB,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAA2B;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,iBAAiB,EAAE;;IAGlB,iBAAiB,GAAA;;;;;QAMvB,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;;QAGhC,IAAI,CAAC,eAAe,EAAE;;IAGhB,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAChC,SAAA,CAAC;;uGA/JO,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ilBClBhC,qhJA8JA,EAAA,MAAA,EAAA,CAAA,0oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhJY,gBAAgB,EAAE,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,kIAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI1C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,qhJAAA,EAAA,MAAA,EAAA,CAAA,0oEAAA,CAAA,EAAA;;;AELjD,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE;IACxD,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CACH,qBAAqB,EACrB,KAAK,CAAC;AACJ,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,SAAS,EAAE,QAAQ;aACpB,CAAC;AACF,YAAA,OAAO,CACL,GAAG,EACH,KAAK,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,MAAM,EAAE,GAAG;AACZ,aAAA,CAAC,CACH;AACF,SAAA,CAAC,EACF;AACE,YAAA,QAAQ,EAAE,IAAI;SACf,CACF;KACF,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CACH,qBAAqB,EACrB,KAAK,CAAC;AACJ,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,UAAU,EAAE,KAAK;aAClB,CAAC;AACF,YAAA,OAAO,CACL,GAAG,EACH,KAAK,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,MAAM,EAAE,CAAC;AACV,aAAA,CAAC,CACH;AACF,SAAA,CAAC,EACF;AACE,YAAA,QAAQ,EAAE,IAAI;SACf,CACF;KACF,CAAC;AACH,CAAA,CAAC;;MCvBW,eAAe,CAAA;AAC1B,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;IAChC,KAAK,GAAG,KAAK,EAAU;AAEvB,IAAA,mBAAmB,GAAG,KAAK,CACzB,yDAAyD,CAC1D;AACD,IAAA,mBAAmB,GAAG,KAAK,CAAS,0BAA0B,CAAC;IAC/D,cAAc,GAAQ,IAAI;IAE1B,QAAQ,GAAG,MAAM,EAAU;AAC3B,IAAA,OAAO,GAAG,KAAK,CAAQ,EAAE,CAAC;AAE1B,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC5B,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QAC9B,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;KACrD,CAAC,CAAC,CACJ;AAED,IAAA,aAAa,GAAG,MAAM,CAAM,IAAI,CAAC;AAED,IAAA,cAAc;AACf,IAAA,aAAa;AACb,IAAA,aAAa;AAE5C,IAAA,sBAAsB;IAEtB,QAAQ,GAAY,KAAK;IACzB,UAAU,GAAY,KAAK;IAE3B,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAElE,IAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,GAAG;AAC7B,IAAA,SAAS,GAAG,MAAK,GAAG;IAEpB,QAAQ,GAAA;;;AAIR,IAAA,UAAU,CAAC,KAAU,EAAA;;AAEnB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,iBAAiB,EAAE;QAExB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAChC;QAED,IAAI,aAAa,EAAE;AACjB,YAAA,aAAa,CAAC,QAAQ,GAAG,IAAI;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa;;aAC9B;YACL,IAAI,CAAC,cAAc,GAAG;AACpB,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,QAAQ,EAAE,IAAI;aACf;;;AAIL,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;;AAG9B,IAAA,iBAAiB,CAAC,cAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;QAEpC,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,cAAc,IAAI,OAAO,cAAc,IAAI,QAAQ,EAAE;AACvD,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI;;AAGxC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,MAAM,cAAc,GAAG,cAAc,EAAE,MAAM,IAAI,cAAc;AAE/D,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;;AAG/B,IAAA,YAAY,CAAC,CAAQ,EAAA;AACnB,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AAElD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGnB,uBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACrC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC,CAAC;;IAGG,iBAAiB,GAAA;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC;;IAGrE,OAAO,CAAC,IAAS,EAAE,IAAS,EAAA;QAClC,OAAO,IAAI,EAAE,EAAE,KAAK,SAAS,IAAI,IAAI,EAAE,EAAE,KAAK;AAC5C,cAAE,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;AACnB,cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;uGAhHzC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC/C,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,8qKAgKA,EAAA,MAAA,EAAA,CAAA,otEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5IY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAGzD,CAAC,eAAe,CAAC,EAAA,CAAA;;2FASlB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAd3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,EAAA,UAAA,EAG1D,CAAC,eAAe,CAAC,EAClB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC/C,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,8qKAAA,EAAA,MAAA,EAAA,CAAA,otEAAA,CAAA,EAAA;8BA2B+B,cAAc,EAAA,CAAA;sBAA7C,YAAY;uBAAC,gBAAgB;gBACC,aAAa,EAAA,CAAA;sBAA3C,YAAY;uBAAC,eAAe;gBACE,aAAa,EAAA,CAAA;sBAA3C,YAAY;uBAAC,eAAe;gBAE7B,sBAAsB,EAAA,CAAA;sBADrB,YAAY;uBAAC,wBAAwB;;;ME3C3B,eAAe,CAAA;AAC1B,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AACvB,IAAA,GAAG,GAAG,KAAK,CAAS,GAAG,CAAC;AACxB,IAAA,GAAG,GAAG,KAAK,CAAS,KAAK,CAAC;AAC1B,IAAA,IAAI,GAAG,KAAK,CAAS,GAAG,CAAC;AACzB,IAAA,UAAU,GAAG,KAAK,CAA4B,EAAE,CAAC;IAEjD,QAAQ,GAAG,KAAK;IAEhB,KAAK,GAAW,CAAC;AAEjB,IAAA,QAAQ,GAAyB,MAAK,GAAG;AACzC,IAAA,SAAS,GAAe,MAAK,GAAG;AAEhC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAItB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,WAAW,CAAC,CAAQ,EAAA;AAClB,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AAElD,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;uGApCX,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,ECfH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+VAiBA,ipHDXY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAWN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,CAAC,OAAO,CAAC,EAGP,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+VAAA,EAAA,MAAA,EAAA,CAAA,ylHAAA,CAAA,EAAA;;;MEKU,cAAc,CAAA;IACzB,KAAK,GAAG,KAAK,EAAU;IACvB,IAAI,GAAG,KAAK,EAAU;IACtB,EAAE,GAAG,KAAK,EAAU;AACpB,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAU;IAErC,QAAQ,GAAY,KAAK;IAEzB,KAAK,GAAkB,IAAI;AAE3B,IAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,GAAG;AAC7B,IAAA,SAAS,GAAG,MAAK,GAAG;AAEpB,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGpB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAEpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAErB,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG5B,IAAA,OAAO,CAAC,CAAQ,EAAA;AACd,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AAElD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;;uGAjCP,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EARd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,0ZAgBA,EAAA,MAAA,EAAA,CAAA,m4BAAA,CAAA,EAAA,CAAA;;2FDIa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,EAAE,EAGA,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,0ZAAA,EAAA,MAAA,EAAA,CAAA,m4BAAA,CAAA,EAAA;;;IElBS;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,OAAiB;AACnB,CAAC,EAPW,eAAe,KAAf,eAAe,GAO1B,EAAA,CAAA,CAAA;;MCEY,gBAAgB,CAAA;AAC3B,IAAA,QAAQ,GAAoB,eAAe,CAAC,OAAO;IACnD,OAAO,GAAG,EAAE;IACZ,IAAI,GAAG,CAAC;IACR,GAAG,GAAG,CAAC;IACP,OAAO,GAAG,KAAK;AAEf,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;uGATG,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,wECT7B,4MAQA,EAAA,MAAA,EAAA,CAAA,g4CAAA,CAAA,EAAA,CAAA;;2FDCa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,4MAAA,EAAA,MAAA,EAAA,CAAA,g4CAAA,CAAA,EAAA;;;MEWN,gBAAgB,CAAA;AAajB,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,wBAAA;AACA,IAAA,QAAA;IAfW,OAAO,GAAG,EAAE;AACJ,IAAA,QAAQ,GACnC,eAAe,CAAC,OAAO;IAChB,SAAS,GAAG,CAAC;IACb,SAAS,GAAG,CAAC;IAEd,YAAY,GAA6B,IAAI;AAC7C,IAAA,WAAW;AACX,IAAA,WAAW;AACX,IAAA,YAAY;AAEpB,IAAA,WAAA,CACU,UAAsB,EACtB,MAAsB,EACtB,wBAAkD,EAClD,QAAkB,EAAA;QAHlB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAIlB,YAAY,GAAA;QACV,IAAI,CAAC,iBAAiB,EAAE;;IAI1B,YAAY,GAAA;QACV,IAAI,CAAC,qBAAqB,EAAE;;AAI9B,IAAA,WAAW,CAAC,MAAkB,EAAA;AAC5B,QAAA,IACE,IAAI,CAAC,YAAY,KAAK,IAAI;AAC1B,YAAA,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,OAAO,EACzC;YACA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;YAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO;YAC/C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;;AAKrD,IAAA,YAAY,CAAC,MAAkB,EAAA;QAC7B,MAAM,CAAC,cAAc,EAAE;AACvB,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,GAAG,CACJ;;IAIH,UAAU,GAAA;AACR,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,qBAAqB,EAAE;;IAGtB,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;YACpC,MAAM,gBAAgB,GACpB,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;YACzE,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAE1D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAClD,MAAM,CAAC,iBAAiB,CAAC,GACvB,IAAI,CAAC,YAAY,CAAC,QACnB,CAAC,SAAS;YAEX,IAAI,CAAC,6BAA6B,EAAE;AAEpC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,IAAI,CAAC,SAAS,CACf;;;IAIG,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAEnD,YAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAChC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAEvD,YAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,gBAAA,KAAK,eAAe,CAAC,KAAK,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAC1C,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAC1B;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBACnD;;AAEF,gBAAA,KAAK,eAAe,CAAC,KAAK,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAC1C,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAC1B;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBAChD;;AAEF,gBAAA,KAAK,eAAe,CAAC,KAAK,EAAE;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;oBACrE;;AAEF,gBAAA,KAAK,eAAe,CAAC,IAAI,EAAE;AACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAClD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;oBACrE;;gBAEF,SAAS;oBACP;;;;;IAMA,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI;;;IAIrC,qBAAqB,GAAA;QAC3B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,SAAS,CACf;;IAGH,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;IAGhB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;uGA9IjB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;0KAEsB,OAAO,EAAA,CAAA;sBAA3B,KAAK;uBAAC,YAAY;gBACU,QAAQ,EAAA,CAAA;sBAApC,KAAK;uBAAC,oBAAoB;gBAElB,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAeD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBAM1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBAM1B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAarC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;gBAWtC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU;;;MC3Db,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAb,aAAa,EAAA,YAAA,EAAA,CAJT,gBAAgB,EAAE,gBAAgB,aACvC,YAAY,EAAE,OAAO,CAAA,EAAA,OAAA,EAAA,CACrB,gBAAgB,CAAA,EAAA,CAAA;AAEf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAHd,YAAY,CAAA,EAAA,CAAA;;2FAGX,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAClD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;oBAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;ACPD;;;;AAIG;MAKU,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACQD,MAAM,UAAU,GAAG;AACjB,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,cAAc,EAAE,QAAQ;CACzB;AACD,MAAM,YAAY,GAAG,GAAG;AACxB,MAAM,UAAU,GAAG,CAAC,GAAY,KAAa;AAC3C,IAAA,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;AAC7C,CAAC;MAKY,iBAAiB,CAAA;AA0BlB,IAAA,cAAA;AACA,IAAA,MAAA;IA1BF,QAAQ,GAAG,GAAG;AAEtB;;;;AAIG;IACK,sBAAsB,GAA2B,EAAE;AAE3D;;;;AAIG;IACK,kBAAkB,GAA2B,EAAE;IAC/C,mBAAmB,GAA2B,EAAE;AAExD;;;AAGG;AACK,IAAA,WAAW,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;AAC9D,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;IAErD,WACU,CAAA,cAA8B,EAC9B,MAAc,EAAA;QADd,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAM,CAAA,MAAA,GAAN,MAAM;QAEd,IAAI,CAAC,kBAAkB,EAAE;;AAG3B;;AAEG;IACK,kBAAkB,GAAA;;;;QAIxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CACJ,CAAC,KAAK,KAA8B,KAAK,YAAY,cAAc,CACpE;AAEF,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;;;;AAInB,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;;AAE3C,SAAC,CAAC;;AAGE,IAAA,gBAAgB,CAAC,sBAA8C,EAAA;AACrE,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB;;AAElD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC/C,QAAA,IAAI,CAAC,kBAAkB,GAAG,cAAc,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE;QAChE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAG3D,iBAAiB,GAAA;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;AAC1E,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;AAC3E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAM,EAAE,GAAG,CAAC;QAE/D,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;YACvD,OAAO;AACL,gBAAA,GAAG,SAAS;AACZ,gBAAA,GAAG,cAAc;gBACjB,SAAS,EAAE,IAAI,CAAC,QAAQ;AACxB,gBAAA,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC;aAC5C;;;IAIG,qBAAqB,CAC3B,sBAA8C,EAC9C,eAAuB,EAAA;AAEvB,QAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,cAAc,CAC9C,sBAAsB,CAAC,WAAW,CACnC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAC7C,IAAI,EACJ,sBAAsB,CACvB;AACD,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,eAAe,CAAG,EAAA,eAAe,EAAE;AACxD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAM,EAAE,SAAS,CAAC;AAEjE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAC7B,SAAS,EAAE,KAAM,IAAI,UAAU,EAAE,KAAM,EACvC,eAAe,CAChB;QACD,IAAI,oBAAoB,GAAG,KAAK;QAChC,IAAI,kBAAkB,GAAG,EAAE;QAC3B,IAAI,CAAC,KAAK,EAAE;YACV,oBAAoB,GAAG,IAAI;YAC3B,kBAAkB,GAAG,eAAe;;QAGtC,OAAO;AACL,YAAA,GAAG,SAAS;AACZ,YAAA,GAAG,UAAU;YACb,KAAK,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,KAAK;YACxD,SAAS;YACT,oBAAoB;AACpB,YAAA,GAAG,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC;SAClD;;IAGK,qBAAqB,CAC3B,sBAA8C,EAC9C,eAAuB,EAAA;AAEvB,QAAA,IAAI,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE;YAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAC/C,sBAAsB,EACtB,eAAe,CAChB;AACD,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;AAE5C,YAAA,IAAI,sBAAsB,CAAC,UAAU,EAAE;AACrC,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,sBAAsB,CAAC,UAAU,EACjC,cAAc,CAAC,SAAS,GAAG,GAAG,CAC/B;;;AAEE,aAAA,IAAI,sBAAsB,CAAC,UAAU,EAAE;YAC5C,OAAO,IAAI,CAAC,qBAAqB,CAC/B,sBAAsB,CAAC,UAAU,EACjC,eAAe,CAChB;;AAEH,QAAA,MAAM,SAAS,GACb,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,iCAAiC,CAAC,SAAS,EAAE,sBAAsB,CAAC;;AAGzE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACtD,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC;;IAGlC,YAAY,CAClB,KAAa,EACb,SAAiB,EAAA;QAEjB,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;YAC/C,QACE,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;AAC9B,iBAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,UAAW,CAAC;AAEhD,SAAC,CAAC;;AAGJ;;;AAGG;IACK,UAAU,CAAC,SAAiB,EAAE,UAAkB,EAAA;AACtD,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,QAAA,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK,SAAS;;AAGjC;;;;;AAKG;IACK,kBAAkB,CACxB,OAAe,EACf,sBAA8C,EAAA;;QAG9C,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACvC,YAAA,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACrE,gBAAA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,EAAE,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;AAClD,aAAC,CAAC;;AAEJ,QAAA,OAAO,OAAO;;AAGhB;;AAEG;AACK,IAAA,8BAA8B,CAAC,SAAiB,EAAA;QACtD,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AACrE,YAAA,EAAE;AACJ,QAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;;AAGlC;;AAEG;IACK,iCAAiC,CACvC,QAAoB,EACpB,sBAA8C,EAAA;QAE9C,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,sBAAsB;AACxD,YAAA,QAAQ,CAAC,WAAW,GAAG,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,SAAS;AACnE,YAAA,QAAQ,CAAC,QAAQ,GAAG,QAAS;;;AAIjC;;;;;;;;;;;AAWG;AACK,IAAA,cAAc,CAAC,WAAgB,EAAA;AACrC,QAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,WAAW;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAC5C,WAAW,EACX,IAAI,EAAE,UAAU,CACjB;AAED,QAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;;AAG7B;;;AAGG;IACK,sBAAsB,CAC5B,WAAgB;IAChB,MAAwB,EAAA;QAExB,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;AAGnC,QAAA,IAAI,SAAS;AACb,QAAA,IAAI,WAAW,CAAC,YAAY,EAAE;;AAE5B,YAAA,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CACxC,CAAC,KAAU,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,CAClC;;AACI,aAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;;AAE/B,YAAA,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;;AAG1E,QAAA,MAAM,WAAW,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU;AAC/C,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE;AACrC,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7B,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;aACnC;AACH,cAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;AAGhC;;;;;;;;;;;;;;;;AAgBG;IACH,GAAG,CAAC,GAAW,EAAE,UAAqC,EAAA;QACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACvD,QAAA,IAAI,UAAmD;AAEvD,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,UAAU,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;;aAC/D,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1C,YAAA,UAAU,GAAG;gBACX,YAAY;gBACZ,EAAE,GAAG,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;aAC1D;;aACI;AACL,YAAA,UAAU,GAAG;gBACX,WAAW;gBACX,EAAE,GAAG,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;aACjE;;;;AAKH,QAAA,UAAU,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAG,KAAK;AAE1C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;AAC/B,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,UAAU,CAAC;;AAG9C;;;AAGG;IACK,WAAW,CAAC,GAAW,EAAE,UAAgC,EAAA;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACpE,YAAA,QACE,UAAU,CAAC,GAAiC,CAAC;AAC7C,gBAAA,IAAI,CAAC,GAAiC,CAAC;AAE3C,SAAC,CAAC;AACF,QAAA,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,GAAG;AAC5C,gBAAA,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;AAC9C,gBAAA,GAAG,UAAU;aACd;;aACI;YACL,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;;;AAIvD;;AAEG;IACK,wBAAwB,CAC9B,GAAW,EACX,UAAgC,EAAA;QAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC3D,OAAO,GAAG,KAAK;AACb,kBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAU,EAAE,UAAU,CAAC,GAAG,CAAE;AACnD,kBAAE,UAAU,CAAC,GAAiC,CAAC;oBAC3C,IAAI,CAAC,GAAiC,CAAC;AAC/C,SAAC,CAAC;AACF,QAAA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG;AACnC,gBAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACrC,gBAAA,GAAG,UAAU;aACd;AACD,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACtD,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC;;;AAIjD;;;;AAIG;AACK,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAC1C,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAC5C,UAAU,CAAC,cAAc,CAC1B;;AAGK,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAI,CAAA,EAAA,IAAI,EAAE;;AAGjD;;;;;;AAMG;IACK,YAAY,CAAC,MAAwB,EAAE,aAAsB,EAAA;AACnE,QAAA,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;AAChE,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/B,YAAA,OAAO,KAAK,CAAC,aAAa,CAAC;;AAE7B,QAAA,OAAO,KAAK;;AAGN,IAAA,aAAa,CAAC,MAAwB,EAAA;;AAE5C,QAAA,IACE,MAAM;aACL,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,EAC5D;AACA,YAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;;QAE1B,OAAQ,MAA2B,IAAI,EAAE;;uGA7YhC,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCRY,mBAAmB,CAAA;AAsEpB,IAAA,iBAAA;AArEV,IAAA,YAAY;AACZ,IAAA,iBAAiB;IACT,UAAU,GAAW,GAAG;AAEhC;;;;;;;AAOG;AAEH,IAAA,YAAY;AAEZ;;;AAGG;IACM,YAAY,GAAG,IAAI;AAE5B;;AAEG;IACM,mBAAmB,GAAG,IAAI;AAEnC;;AAEG;IACM,gBAAgB,GAAG,IAAI;AAEhC;;;AAGG;IACM,KAAK,GAAG,EAAE;AAEnB;;AAEG;AACM,IAAA,YAAY;AAErB;;;;;;;;AAQG;IACH,IACI,SAAS,CAAC,KAAiC,EAAA;AAC7C,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;;aAChB;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,GAAG;;;AAGlC,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAGxB,YAAY,GAAG,gBAAgB;IAC/B,kBAAkB,GAAG,IAAI;IAEzB,WACU,CAAA,iBAAoC,EAC5C,aAA6B,EAAA;QADrB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;QAIzB,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC1C,SAAC,CAAC;;AAGJ,IAAA,cAAc,CAAC,SAAc,EAAA;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,IAAI,IAAI,EAAE;AAC7C,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;;IAGrC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAC1DU,KAAG,CAAC,CAAC,WAAmC,KAAI;AAC1C,YAAA,OAAO;AACJ,iBAAA,MAAM,CAAC,CAAC,UAAgC,KAAI;;;AAG3C,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,oBAAA,OAAO,IAAI;;AAEb,gBAAA,OAAO,CAAC,UAAU,CAAC,oBAAoB;AACzC,aAAC;AACA,iBAAA,GAAG,CAAC,CAAC,UAAgC,KAAI;;;AAGxC,gBAAA,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,UAAU;gBAClD,OAAO;AACL,oBAAA,GAAG,UAAU;oBACb,SAAS,EACP,gBAAgB,GAAG,SAAU,EAAE,UAAU,CAAC,IAAI,SAAS;iBAC1D;AACH,aAAC,CAAC;SACL,CAAC,CACH;;uGA3GQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAahB,uBAAuB,EAAyB,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,6BCnC3E,ssFA8EA,EAAA,MAAA,EAAA,CAAA,unBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7DY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAKzB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,aAAA,EAGtB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,ssFAAA,EAAA,MAAA,EAAA,CAAA,unBAAA,CAAA,EAAA;kHAgBrC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;gBAOlE,YAAY,EAAA,CAAA;sBAApB;gBAKQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAYG,SAAS,EAAA,CAAA;sBADZ;;;AE1EH;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
|