@seniorsistemas/angular-components 19.5.3 → 19.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +2 -0
- package/accordion/lib/accordion/models/accordion-button-settings.d.ts +5 -0
- package/button/lib/button/button.component.d.ts +5 -1
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +11 -3
- package/esm2022/accordion/lib/accordion/models/accordion-button-settings.mjs +1 -1
- package/esm2022/button/lib/button/button.component.mjs +9 -3
- package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +1 -1
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +2 -2
- package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +1 -1
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +1 -1
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +2 -2
- package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -1
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +1 -1
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
- package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
- package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +1 -1
- package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +1 -1
- package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
- package/esm2022/picklist/lib/picklist/picklist.component.mjs +2 -2
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +1 -1
- package/esm2022/select/lib/select/select.component.mjs +93 -7
- package/esm2022/shared/lib/accessibility/datepicker-no-period-tab.directive.mjs +541 -0
- package/esm2022/shared/public-api.mjs +2 -1
- package/esm2022/spotlight/lib/spotlight/spotlight.component.mjs +2 -2
- package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +10 -2
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +8 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +9 -9
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +92 -6
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +541 -3
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-spotlight.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-spotlight.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/package.json +1 -1
- package/select/lib/select/select.component.d.ts +40 -2
- package/shared/lib/accessibility/datepicker-no-period-tab.directive.d.ts +177 -0
- package/shared/public-api.d.ts +1 -0
|
@@ -184,10 +184,10 @@ export class SpotlightComponent {
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpotlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
187
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpotlightComponent, isStandalone: true, selector: "s-spotlight", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, currentStep: { classPropertyName: "currentStep", publicName: "currentStep", isSignal: true, isRequired: false, transformFunction: null }, totalSteps: { classPropertyName: "totalSteps", publicName: "totalSteps", isSignal: true, isRequired: false, transformFunction: null }, showDoNotShowAgain: { classPropertyName: "showDoNotShowAgain", publicName: "showDoNotShowAgain", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, arrowOffsetPx: { classPropertyName: "arrowOffsetPx", publicName: "arrowOffsetPx", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", next: "next", previous: "previous", understand: "understand" }, ngImport: i0, template: "<div\n [attr.role]=\"totalSteps() > 1 ? 'dialog' : 'tooltip'\"\n [attr.aria-modal]=\"totalSteps() > 1 ? 'true' : null\"\n [attr.aria-labelledby]=\"titleId\"\n [attr.aria-describedby]=\"descId\"\n class=\"flex max-w-[342px]\"\n [ngClass]=\"isArrowLeft || isArrowRight ? 'flex-row' : 'flex-col'\"\n>\n @if (isArrowTop) {\n <ng-container *ngTemplateOutlet=\"arrowTopTemplate\"></ng-container>\n }\n\n @if (isArrowLeft) {\n <ng-container *ngTemplateOutlet=\"arrowLeftTemplate\"></ng-container>\n }\n\n <div\n class=\"relative flex w-full flex-col overflow-hidden rounded-[4px] bg-grayscale-0\"\n style=\"\n box-shadow:\n 0 3px 5px rgba(0, 0, 0, 0.2),\n 0 1px 18px rgba(0, 0, 0, 0.12),\n 0 6px 10px rgba(0, 0, 0, 0.14);\n \"\n >\n <!-- Regi\u00E3o aria-live para anuncia\u00E7\u00E3o de mudan\u00E7a de passo para leitores de tela -->\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n @if (totalSteps() > 1) {\n {{\n 'platform.angular_components.step_progress'\n | translate: { current: currentStep(), total: totalSteps() }\n }}\n }\n </span>\n <div class=\"flex h-[40px] w-full items-center justify-between p-[12px]\">\n <div class=\"flex min-w-0 flex-1 items-center gap-[8px]\">\n <h2\n [id]=\"titleId\"\n class=\"flex-1 overflow-hidden overflow-ellipsis whitespace-nowrap font-open-sans text-[14px] font-bold leading-[1.5] text-grayscale-90\"\n >\n @if (titleTemplate) {\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n } @else {\n {{ titleString }}\n }\n </h2>\n </div>\n <button\n (click)=\"onClose()\"\n class=\"flex h-[16px] w-[16px] flex-none items-center justify-center text-grayscale-90 transition-colors hover:text-grayscale-100\"\n [attr.aria-label]=\"'platform.angular_components.close' | translate\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n\n @if (content()) {\n <ng-container *ngTemplateOutlet=\"content()\"></ng-container>\n }\n\n <div class=\"flex w-full flex-col items-start gap-[20px] bg-grayscale-0 p-[12px]\">\n <div\n [id]=\"descId\"\n class=\"w-full whitespace-pre-wrap font-open-sans text-[14px] font-normal leading-[1.5] text-grayscale-90\"\n >\n @if (messageTemplate) {\n <ng-container *ngTemplateOutlet=\"messageTemplate\"></ng-container>\n } @else {\n {{ messageString }}\n }\n </div>\n\n <div class=\"flex w-full flex-wrap gap-3\">\n @if (totalSteps() > 1) {\n <p class=\"font-open-sans text-[14px] font-normal leading-[1.5] text-grayscale-90\">\n {{\n 'platform.angular_components.step_counter'\n | translate: { current: currentStep(), total: totalSteps() }\n }}\n </p>\n }\n\n @if (totalSteps() === 1 && showDoNotShowAgain()) {\n <s-checkbox\n [checked]=\"isDoNotShowAgainChecked()\"\n (checkedChange)=\"toggleDoNotShowAgain()\"\n [label]=\"'platform.angular_components.dont_show_again' | translate\"\n ></s-checkbox>\n }\n\n <div\n class=\"flex flex-wrap items-start justify-end gap-[8px]\"\n [ngClass]=\"totalSteps() > 1 ? 'w-full' : ''\"\n >\n @for (action of actions(); track action.label) {\n <s-button\n [label]=\"action.label\"\n (clicked)=\"action.handler()\"\n priority=\"default\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n }\n\n @if (totalSteps() > 1 && currentStep() > 1) {\n <s-button\n [label]=\"'platform.angular_components.back' | translate\"\n (clicked)=\"onPrevious()\"\n priority=\"default\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n }\n\n <s-button\n [label]=\"\n totalSteps() <= 1\n ? ('platform.angular_components.understood' | translate)\n : currentStep() < totalSteps()\n ? ('platform.angular_components.next' | translate)\n : ('platform.angular_components.complete' | translate)\n \"\n (clicked)=\"totalSteps() > 1 ? onNext() : onUnderstand()\"\n priority=\"secondary\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n </div>\n </div>\n </div>\n </div>\n\n @if (isArrowBottom) {\n <ng-container *ngTemplateOutlet=\"arrowBottomTemplate\"></ng-container>\n }\n\n @if (isArrowRight) {\n <ng-container *ngTemplateOutlet=\"arrowRightTemplate\"></ng-container>\n }\n</div>\n\n<!-- Arrow Templates -->\n<ng-template #arrowTopTemplate>\n <div\n class=\"relative z-10 flex h-[8px] w-full px-[12px] py-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowBottomTemplate>\n <div\n class=\"relative z-10 flex h-[8px] w-full px-[12px] py-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowLeftTemplate>\n <div\n class=\"relative z-10 flex w-[8px] flex-col items-center self-stretch px-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowRightTemplate>\n <div\n class=\"relative z-10 flex w-[8px] flex-col items-center self-stretch px-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }, { kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "checkedChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
187
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpotlightComponent, isStandalone: true, selector: "s-spotlight", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, currentStep: { classPropertyName: "currentStep", publicName: "currentStep", isSignal: true, isRequired: false, transformFunction: null }, totalSteps: { classPropertyName: "totalSteps", publicName: "totalSteps", isSignal: true, isRequired: false, transformFunction: null }, showDoNotShowAgain: { classPropertyName: "showDoNotShowAgain", publicName: "showDoNotShowAgain", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, arrowOffsetPx: { classPropertyName: "arrowOffsetPx", publicName: "arrowOffsetPx", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", next: "next", previous: "previous", understand: "understand" }, ngImport: i0, template: "<div\n [attr.role]=\"totalSteps() > 1 ? 'dialog' : 'tooltip'\"\n [attr.aria-modal]=\"totalSteps() > 1 ? 'true' : null\"\n [attr.aria-labelledby]=\"titleId\"\n [attr.aria-describedby]=\"descId\"\n class=\"flex max-w-[342px]\"\n [ngClass]=\"isArrowLeft || isArrowRight ? 'flex-row' : 'flex-col'\"\n>\n @if (isArrowTop) {\n <ng-container *ngTemplateOutlet=\"arrowTopTemplate\"></ng-container>\n }\n\n @if (isArrowLeft) {\n <ng-container *ngTemplateOutlet=\"arrowLeftTemplate\"></ng-container>\n }\n\n <div\n class=\"relative flex w-full flex-col overflow-hidden rounded-[4px] bg-grayscale-0\"\n style=\"\n box-shadow:\n 0 3px 5px rgba(0, 0, 0, 0.2),\n 0 1px 18px rgba(0, 0, 0, 0.12),\n 0 6px 10px rgba(0, 0, 0, 0.14);\n \"\n >\n <!-- Regi\u00E3o aria-live para anuncia\u00E7\u00E3o de mudan\u00E7a de passo para leitores de tela -->\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n @if (totalSteps() > 1) {\n {{\n 'platform.angular_components.step_progress'\n | translate: { current: currentStep(), total: totalSteps() }\n }}\n }\n </span>\n <div class=\"flex h-[40px] w-full items-center justify-between p-[12px]\">\n <div class=\"flex min-w-0 flex-1 items-center gap-[8px]\">\n <h2\n [id]=\"titleId\"\n class=\"flex-1 overflow-hidden overflow-ellipsis whitespace-nowrap font-open-sans text-[14px] font-bold leading-[1.5] text-grayscale-90\"\n >\n @if (titleTemplate) {\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n } @else {\n {{ titleString }}\n }\n </h2>\n </div>\n <button\n (click)=\"onClose()\"\n class=\"flex h-[16px] w-[16px] flex-none items-center justify-center text-grayscale-90 transition-colors hover:text-grayscale-100\"\n [attr.aria-label]=\"'platform.angular_components.close' | translate\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n\n @if (content()) {\n <ng-container *ngTemplateOutlet=\"content()\"></ng-container>\n }\n\n <div class=\"flex w-full flex-col items-start gap-[20px] bg-grayscale-0 p-[12px]\">\n <div\n [id]=\"descId\"\n class=\"w-full whitespace-pre-wrap font-open-sans text-[14px] font-normal leading-[1.5] text-grayscale-90\"\n >\n @if (messageTemplate) {\n <ng-container *ngTemplateOutlet=\"messageTemplate\"></ng-container>\n } @else {\n {{ messageString }}\n }\n </div>\n\n <div class=\"flex w-full flex-wrap gap-3\">\n @if (totalSteps() > 1) {\n <p class=\"font-open-sans text-[14px] font-normal leading-[1.5] text-grayscale-90\">\n {{\n 'platform.angular_components.step_counter'\n | translate: { current: currentStep(), total: totalSteps() }\n }}\n </p>\n }\n\n @if (totalSteps() === 1 && showDoNotShowAgain()) {\n <s-checkbox\n [checked]=\"isDoNotShowAgainChecked()\"\n (checkedChange)=\"toggleDoNotShowAgain()\"\n [label]=\"'platform.angular_components.dont_show_again' | translate\"\n ></s-checkbox>\n }\n\n <div\n class=\"flex flex-wrap items-start justify-end gap-[8px]\"\n [ngClass]=\"totalSteps() > 1 ? 'w-full' : ''\"\n >\n @for (action of actions(); track action.label) {\n <s-button\n [label]=\"action.label\"\n (clicked)=\"action.handler()\"\n priority=\"default\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n }\n\n @if (totalSteps() > 1 && currentStep() > 1) {\n <s-button\n [label]=\"'platform.angular_components.back' | translate\"\n (clicked)=\"onPrevious()\"\n priority=\"default\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n }\n\n <s-button\n [label]=\"\n totalSteps() <= 1\n ? ('platform.angular_components.understood' | translate)\n : currentStep() < totalSteps()\n ? ('platform.angular_components.next' | translate)\n : ('platform.angular_components.complete' | translate)\n \"\n (clicked)=\"totalSteps() > 1 ? onNext() : onUnderstand()\"\n priority=\"secondary\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n </div>\n </div>\n </div>\n </div>\n\n @if (isArrowBottom) {\n <ng-container *ngTemplateOutlet=\"arrowBottomTemplate\"></ng-container>\n }\n\n @if (isArrowRight) {\n <ng-container *ngTemplateOutlet=\"arrowRightTemplate\"></ng-container>\n }\n</div>\n\n<!-- Arrow Templates -->\n<ng-template #arrowTopTemplate>\n <div\n class=\"relative z-10 flex h-[8px] w-full px-[12px] py-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowBottomTemplate>\n <div\n class=\"relative z-10 flex h-[8px] w-full px-[12px] py-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowLeftTemplate>\n <div\n class=\"relative z-10 flex w-[8px] flex-col items-center self-stretch px-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowRightTemplate>\n <div\n class=\"relative z-10 flex w-[8px] flex-col items-center self-stretch px-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel", "ariaLabel"], outputs: ["clicked"] }, { kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "checkedChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
188
188
|
}
|
|
189
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpotlightComponent, decorators: [{
|
|
190
190
|
type: Component,
|
|
191
191
|
args: [{ selector: 's-spotlight', standalone: true, imports: [CommonModule, ButtonModule, CheckboxComponent, TranslateModule], template: "<div\n [attr.role]=\"totalSteps() > 1 ? 'dialog' : 'tooltip'\"\n [attr.aria-modal]=\"totalSteps() > 1 ? 'true' : null\"\n [attr.aria-labelledby]=\"titleId\"\n [attr.aria-describedby]=\"descId\"\n class=\"flex max-w-[342px]\"\n [ngClass]=\"isArrowLeft || isArrowRight ? 'flex-row' : 'flex-col'\"\n>\n @if (isArrowTop) {\n <ng-container *ngTemplateOutlet=\"arrowTopTemplate\"></ng-container>\n }\n\n @if (isArrowLeft) {\n <ng-container *ngTemplateOutlet=\"arrowLeftTemplate\"></ng-container>\n }\n\n <div\n class=\"relative flex w-full flex-col overflow-hidden rounded-[4px] bg-grayscale-0\"\n style=\"\n box-shadow:\n 0 3px 5px rgba(0, 0, 0, 0.2),\n 0 1px 18px rgba(0, 0, 0, 0.12),\n 0 6px 10px rgba(0, 0, 0, 0.14);\n \"\n >\n <!-- Regi\u00E3o aria-live para anuncia\u00E7\u00E3o de mudan\u00E7a de passo para leitores de tela -->\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n @if (totalSteps() > 1) {\n {{\n 'platform.angular_components.step_progress'\n | translate: { current: currentStep(), total: totalSteps() }\n }}\n }\n </span>\n <div class=\"flex h-[40px] w-full items-center justify-between p-[12px]\">\n <div class=\"flex min-w-0 flex-1 items-center gap-[8px]\">\n <h2\n [id]=\"titleId\"\n class=\"flex-1 overflow-hidden overflow-ellipsis whitespace-nowrap font-open-sans text-[14px] font-bold leading-[1.5] text-grayscale-90\"\n >\n @if (titleTemplate) {\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n } @else {\n {{ titleString }}\n }\n </h2>\n </div>\n <button\n (click)=\"onClose()\"\n class=\"flex h-[16px] w-[16px] flex-none items-center justify-center text-grayscale-90 transition-colors hover:text-grayscale-100\"\n [attr.aria-label]=\"'platform.angular_components.close' | translate\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n\n @if (content()) {\n <ng-container *ngTemplateOutlet=\"content()\"></ng-container>\n }\n\n <div class=\"flex w-full flex-col items-start gap-[20px] bg-grayscale-0 p-[12px]\">\n <div\n [id]=\"descId\"\n class=\"w-full whitespace-pre-wrap font-open-sans text-[14px] font-normal leading-[1.5] text-grayscale-90\"\n >\n @if (messageTemplate) {\n <ng-container *ngTemplateOutlet=\"messageTemplate\"></ng-container>\n } @else {\n {{ messageString }}\n }\n </div>\n\n <div class=\"flex w-full flex-wrap gap-3\">\n @if (totalSteps() > 1) {\n <p class=\"font-open-sans text-[14px] font-normal leading-[1.5] text-grayscale-90\">\n {{\n 'platform.angular_components.step_counter'\n | translate: { current: currentStep(), total: totalSteps() }\n }}\n </p>\n }\n\n @if (totalSteps() === 1 && showDoNotShowAgain()) {\n <s-checkbox\n [checked]=\"isDoNotShowAgainChecked()\"\n (checkedChange)=\"toggleDoNotShowAgain()\"\n [label]=\"'platform.angular_components.dont_show_again' | translate\"\n ></s-checkbox>\n }\n\n <div\n class=\"flex flex-wrap items-start justify-end gap-[8px]\"\n [ngClass]=\"totalSteps() > 1 ? 'w-full' : ''\"\n >\n @for (action of actions(); track action.label) {\n <s-button\n [label]=\"action.label\"\n (clicked)=\"action.handler()\"\n priority=\"default\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n }\n\n @if (totalSteps() > 1 && currentStep() > 1) {\n <s-button\n [label]=\"'platform.angular_components.back' | translate\"\n (clicked)=\"onPrevious()\"\n priority=\"default\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n }\n\n <s-button\n [label]=\"\n totalSteps() <= 1\n ? ('platform.angular_components.understood' | translate)\n : currentStep() < totalSteps()\n ? ('platform.angular_components.next' | translate)\n : ('platform.angular_components.complete' | translate)\n \"\n (clicked)=\"totalSteps() > 1 ? onNext() : onUnderstand()\"\n priority=\"secondary\"\n size=\"small\"\n class=\"flex-none\"\n ></s-button>\n </div>\n </div>\n </div>\n </div>\n\n @if (isArrowBottom) {\n <ng-container *ngTemplateOutlet=\"arrowBottomTemplate\"></ng-container>\n }\n\n @if (isArrowRight) {\n <ng-container *ngTemplateOutlet=\"arrowRightTemplate\"></ng-container>\n }\n</div>\n\n<!-- Arrow Templates -->\n<ng-template #arrowTopTemplate>\n <div\n class=\"relative z-10 flex h-[8px] w-full px-[12px] py-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowBottomTemplate>\n <div\n class=\"relative z-10 flex h-[8px] w-full px-[12px] py-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowLeftTemplate>\n <div\n class=\"relative z-10 flex w-[8px] flex-col items-center self-stretch px-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n<ng-template #arrowRightTemplate>\n <div\n class=\"relative z-10 flex w-[8px] flex-col items-center self-stretch px-0\"\n [ngClass]=\"arrowAlignmentClass\"\n [ngStyle]=\"arrowPaddingStyle\"\n >\n <svg\n width=\"16\"\n height=\"8\"\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-grayscale-0\"\n [ngClass]=\"arrowRotation\"\n >\n <path\n d=\"M0 8L8 0L16 8\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n</ng-template>\n\n" }]
|
|
192
192
|
}] });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGxpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcG90bGlnaHQvc3JjL2xpYi9zcG90bGlnaHQvc3BvdGxpZ2h0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcG90bGlnaHQvc3JjL2xpYi9zcG90bGlnaHQvc3BvdGxpZ2h0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUtoRjs7Ozs7Ozs7R0FRRztBQU9ILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsZ0ZBQWdGO0lBQ2hGLEtBQUssR0FBRyxLQUFLLENBQTRCLEVBQUUsQ0FBQyxDQUFDO0lBRTdDLDRGQUE0RjtJQUM1RixPQUFPLEdBQUcsS0FBSyxFQUE2QixDQUFDO0lBRTdDLG1GQUFtRjtJQUNuRixPQUFPLEdBQUcsS0FBSyxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUUvQywrRUFBK0U7SUFDL0UsUUFBUSxHQUFHLEtBQUssQ0FBb0IsZUFBZSxDQUFDLENBQUM7SUFFckQsc0VBQXNFO0lBQ3RFLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkIsdUZBQXVGO0lBQ3ZGLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFD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QUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBaUI7UUFDMUMsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNoQixLQUFLLEtBQUs7Z0JBQ04sT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxRQUFRO2dCQUNULE9BQU8sS0FBSyxDQUFDO1lBQ2pCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxNQUFNLENBQUM7WUFDbEI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7d0dBL01RLGtCQUFrQjs0RkFBbEIsa0JBQWtCLG0yQ0N6Qi9CLHk1UUE4T0EsMkNEdk5jLFlBQVksd1hBQUUsWUFBWSx3WEFBRSxpQkFBaUIsOExBQUUsZUFBZTs7NEZBRS9ELGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxhQUFhLGNBRVgsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NoZWNrYm94JztcblxuaW1wb3J0IHsgU3BvdGxpZ2h0UG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL3Nwb3RsaWdodC1wb3NpdGlvbic7XG5pbXBvcnQgeyBTcG90bGlnaHRTdGVwQWN0aW9uIH0gZnJvbSAnLi90eXBlcy9zcG90bGlnaHQtc3RlcCc7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBkZSBwb3BvdmVyIGRvIFNwb3RsaWdodC5cbiAqXG4gKiBFeGliZSBvIGNhcmQgZGUgZGVzdGFxdWUgY29tIHTDrXR1bG8sIG1lbnNhZ2VtLCBzZXRhIGRpcmVjaW9uYWwsIGNvbnRhZG9yIGRlIHBhc3NvcyxcbiAqIGJvdMO1ZXMgZGUgbmF2ZWdhw6fDo28gZSwgZW0gbW9kbyBzaW1wbGVzIChwYXNzbyDDum5pY28pLCBvIGNoZWNrYm94IFwibsOjbyBtb3N0cmFyIG5vdmFtZW50ZVwiLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSDDqSBpbnN0YW5jaWFkbyBwcm9ncmFtYXRpY2FtZW50ZSBwZWxvIGBTcG90bGlnaHRPdmVybGF5Q29tcG9uZW50YFxuICogdmlhIENESyBPdmVybGF5LiBOb3JtYWxtZW50ZSBuw6NvIMOpIHVzYWRvIGRpcmV0YW1lbnRlIG5vIHRlbXBsYXRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Mtc3BvdGxpZ2h0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BvdGxpZ2h0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSwgQ2hlY2tib3hDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNwb3RsaWdodENvbXBvbmVudCB7XG4gICAgLyoqIFTDrXR1bG8gZG8gcG9wb3Zlci4gQWNlaXRhIHN0cmluZyBvdSBgVGVtcGxhdGVSZWZgIHBhcmEgY29udGXDumRvIGRpbsOibWljby4gKi9cbiAgICB0aXRsZSA9IGlucHV0PHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4+KCcnKTtcblxuICAgIC8qKiBNZW5zYWdlbSBwcmluY2lwYWwgZG8gcG9wb3Zlci4gQWNlaXRhIHN0cmluZyBvdSBgVGVtcGxhdGVSZWZgIHBhcmEgY29udGXDumRvIGRpbsOibWljby4gKi9cbiAgICBtZXNzYWdlID0gaW5wdXQ8c3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICAgIC8qKiBUZW1wbGF0ZSBvcGNpb25hbCBwYXJhIMOhcmVhIGRlIG3DrWRpYS9jb250ZcO6ZG8gY3VzdG9taXphZG8gYWNpbWEgZGEgbWVuc2FnZW0uICovXG4gICAgY29udGVudCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBQb3Npw6fDo28gZG8gcG9wb3ZlciBlbSByZWxhw6fDo28gYW8gZWxlbWVudG8gYWx2by4gQGRlZmF1bHQgJ2JvdHRvbS1jZW50ZXInICovXG4gICAgcG9zaXRpb24gPSBpbnB1dDxTcG90bGlnaHRQb3NpdGlvbj4oJ2JvdHRvbS1jZW50ZXInKTtcblxuICAgIC8qKiBOw7ptZXJvIGRvIHBhc3NvIGF0dWFsICgxLWJhc2VkKSBleGliaWRvIG5vIGNvbnRhZG9yLiBAZGVmYXVsdCAxICovXG4gICAgY3VycmVudFN0ZXAgPSBpbnB1dCgxKTtcblxuICAgIC8qKiBUb3RhbCBkZSBwYXNzb3MgZG8gdG91ciwgdXNhZG8gbm8gY29udGFkb3IgZSBwYXJhIGNvbnRyb2xlIGRlIGJvdMO1ZXMuIEBkZWZhdWx0IDEgKi9cbiAgICB0b3RhbFN0ZXBzID0gaW5wdXQoMSk7XG5cbiAgICAvKipcbiAgICAgKiBFeGliZSBvIGNoZWNrYm94IFwibsOjbyBtb3N0cmFyIG5vdmFtZW50ZVwiIChhcGVuYXMgZW0gcGFzc28gw7puaWNvKS5cbiAgICAgKiBQYXNzZSBgZmFsc2VgIHBhcmEgc3VwcmltaXIgbyBjaGVja2JveCBxdWFuZG8gbsOjbyBmb3IgbmVjZXNzw6FyaW8gcGVyc2lzdGlyIGEgcHJlZmVyw6puY2lhLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBzaG93RG9Ob3RTaG93QWdhaW4gPSBpbnB1dCh0cnVlKTtcblxuICAgIC8qKiBMaXN0YSBkZSBib3TDtWVzIGRlIGHDp8OjbyBhZGljaW9uYWlzIGV4aWJpZG9zIG5hIMOhcmVhIGRlIHJvZGFww6kuICovXG4gICAgYWN0aW9ucyA9IGlucHV0PFNwb3RsaWdodFN0ZXBBY3Rpb25bXT4oW10pO1xuXG4gICAgLyoqXG4gICAgICogRGVzbG9jYW1lbnRvIGVtIHBpeGVscyBwYXJhIHBvc2ljaW9uYXIgYSBzZXRhIG1hbnVhbG1lbnRlIG5vIGVpeG8gcHJpbmNpcGFsLlxuICAgICAqIFF1YW5kbyBgbnVsbGAsIG8gYWxpbmhhbWVudG8gw6kgY29udHJvbGFkbyBwZWxhIGBwb3NpdGlvbmAuIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBhcnJvd09mZnNldFB4ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKiogRW1pdGlkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIGZlY2hhciAoWCkuICovXG4gICAgY2xvc2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdGlkbyBhbyBjbGljYXIgZW0gXCJQcsOzeGltb1wiLiAqL1xuICAgIG5leHQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0aWRvIGFvIGNsaWNhciBlbSBcIlZvbHRhclwiLiAqL1xuICAgIHByZXZpb3VzID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdGlkbyBhbyBjbGljYXIgZW0gXCJFbnRlbmRpZG9cIiAobW9kbyBzaW1wbGVzLCBwYXNzbyDDum5pY28pLiAqL1xuICAgIHVuZGVyc3RhbmQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIC8qKiBFc3RhZG8gYXR1YWwgZG8gY2hlY2tib3ggXCJuw6NvIG1vc3RyYXIgbm92YW1lbnRlXCIuICovXG4gICAgaXNEb05vdFNob3dBZ2FpbkNoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VDb3VudCA9IDA7XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGluc3RhbmNlSWQgPSBgc3BvdGxpZ2h0LSR7KytTcG90bGlnaHRDb21wb25lbnQuaW5zdGFuY2VDb3VudH1gO1xuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHJlYWRvbmx5IHRpdGxlSWQgPSBgJHt0aGlzLmluc3RhbmNlSWR9LXRpdGxlYDtcblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICByZWFkb25seSBkZXNjSWQgPSBgJHt0aGlzLmluc3RhbmNlSWR9LWRlc2NgO1xuXG4gICAgZ2V0IHRpdGxlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwge1xuICAgICAgICBjb25zdCB2ID0gdGhpcy50aXRsZSgpO1xuICAgICAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdiA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IHRpdGxlU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnRpdGxlKCk7XG4gICAgICAgIHJldHVybiB2IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyAnJyA6ICh2ID8/ICcnKTtcbiAgICB9XG5cbiAgICBnZXQgbWVzc2FnZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMubWVzc2FnZSgpO1xuICAgICAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdiA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG1lc3NhZ2VTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMubWVzc2FnZSgpO1xuICAgICAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gJycgOiAodiA/PyAnJyk7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93UG9zaXRpb24oKTogU3BvdGxpZ2h0UG9zaXRpb24ge1xuICAgICAgICBjb25zdCBbZGlyZWN0aW9uXSA9IHRoaXMucG9zaXRpb24oKS5zcGxpdCgnLScpIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gICAgICAgIGNvbnN0IFssIGFsaWdubWVudF0gPSB0aGlzLnBvc2l0aW9uKCkuc3BsaXQoJy0nKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgICBjb25zdCBvcHBvc2l0ZURpcmVjdGlvbiA9IHRoaXMuZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oZGlyZWN0aW9uKTtcblxuICAgICAgICByZXR1cm4gYCR7b3Bwb3NpdGVEaXJlY3Rpb259LSR7YWxpZ25tZW50fWAgYXMgU3BvdGxpZ2h0UG9zaXRpb247XG4gICAgfVxuXG4gICAgZ2V0IGlzQXJyb3dUb3AoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycm93UG9zaXRpb24uc3RhcnRzV2l0aCgndG9wLScpO1xuICAgIH1cblxuICAgIGdldCBpc0Fycm93Qm90dG9tKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJvd1Bvc2l0aW9uLnN0YXJ0c1dpdGgoJ2JvdHRvbS0nKTtcbiAgICB9XG5cbiAgICBnZXQgaXNBcnJvd0xlZnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycm93UG9zaXRpb24uc3RhcnRzV2l0aCgnbGVmdC0nKTtcbiAgICB9XG5cbiAgICBnZXQgaXNBcnJvd1JpZ2h0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJvd1Bvc2l0aW9uLnN0YXJ0c1dpdGgoJ3JpZ2h0LScpO1xuICAgIH1cblxuICAgIGdldCBhcnJvd1JvdGF0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuYXJyb3dQb3NpdGlvbi5zcGxpdCgnLScpWzBdO1xuXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3RhdGUtMTgwJztcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnLXJvdGF0ZS05MCc7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3RhdGUtOTAnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgYXJyb3dBbGlnbm1lbnRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmFycm93T2Zmc2V0UHgoKTtcblxuICAgICAgICBpZiAob2Zmc2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2p1c3RpZnktc3RhcnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gdGhpcy5hcnJvd1Bvc2l0aW9uLnNwbGl0KCctJylbMV07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNBcnJvd1RvcCB8fCB0aGlzLmlzQXJyb3dCb3R0b20pIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2p1c3RpZnktc3RhcnQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnanVzdGlmeS1jZW50ZXInO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnanVzdGlmeS1lbmQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zLXN0YXJ0IGp1c3RpZnktc3RhcnQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJztcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zLWVuZCBqdXN0aWZ5LWVuZCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGFycm93UGFkZGluZ1N0eWxlKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmFycm93T2Zmc2V0UHgoKTtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNBcnJvd1RvcCB8fCB0aGlzLmlzQXJyb3dCb3R0b20pIHtcbiAgICAgICAgICAgIHJldHVybiB7ICdwYWRkaW5nLWxlZnQnOiBgJHtvZmZzZXR9cHhgLCAncGFkZGluZy1yaWdodCc6ICcwJyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgJ3BhZGRpbmctdG9wJzogYCR7b2Zmc2V0fXB4YCwgJ3BhZGRpbmctYm90dG9tJzogJzAnIH07XG4gICAgfVxuXG4gICAgLyoqIEVtaXRlIG8gZXZlbnRvIGBjbG9zZWRgLiBDaGFtYWRvIHBlbG8gYm90w6NvIGRlIGZlY2hhciBubyB0ZW1wbGF0ZS4gKi9cbiAgICBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRlIG8gZXZlbnRvIGBuZXh0YC4gQ2hhbWFkbyBwZWxvIGJvdMOjbyBcIlByw7N4aW1vXCIgbm8gdGVtcGxhdGUuICovXG4gICAgb25OZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5leHQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBFbWl0ZSBvIGV2ZW50byBgcHJldmlvdXNgLiBDaGFtYWRvIHBlbG8gYm90w6NvIFwiVm9sdGFyXCIgbm8gdGVtcGxhdGUuICovXG4gICAgb25QcmV2aW91cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91cy5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRlIG8gZXZlbnRvIGB1bmRlcnN0YW5kYC4gQ2hhbWFkbyBwZWxvIGJvdMOjbyBcIkVudGVuZGlkb1wiIG5vIHRlbXBsYXRlLiAqL1xuICAgIG9uVW5kZXJzdGFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bmRlcnN0YW5kLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQWx0ZXJuYSBvIGVzdGFkbyBkZSBgaXNEb05vdFNob3dBZ2FpbkNoZWNrZWRgLiAqL1xuICAgIHRvZ2dsZURvTm90U2hvd0FnYWluKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRG9Ob3RTaG93QWdhaW5DaGVja2VkLnVwZGF0ZSgodikgPT4gIXYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oZGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICBbYXR0ci5yb2xlXT1cInRvdGFsU3RlcHMoKSA+IDEgPyAnZGlhbG9nJyA6ICd0b29sdGlwJ1wiXG4gICAgW2F0dHIuYXJpYS1tb2RhbF09XCJ0b3RhbFN0ZXBzKCkgPiAxID8gJ3RydWUnIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRpdGxlSWRcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZGVzY0lkXCJcbiAgICBjbGFzcz1cImZsZXggbWF4LXctWzM0MnB4XVwiXG4gICAgW25nQ2xhc3NdPVwiaXNBcnJvd0xlZnQgfHwgaXNBcnJvd1JpZ2h0ID8gJ2ZsZXgtcm93JyA6ICdmbGV4LWNvbCdcIlxuPlxuICAgIEBpZiAoaXNBcnJvd1RvcCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXJyb3dUb3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIEBpZiAoaXNBcnJvd0xlZnQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93TGVmdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGZsZXggdy1mdWxsIGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs0cHhdIGJnLWdyYXlzY2FsZS0wXCJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAgICAgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgICAwIDFweCAxOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksXG4gICAgICAgICAgICAgICAgMCA2cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMTQpO1xuICAgICAgICBcIlxuICAgID5cbiAgICAgICAgPCEtLSBSZWdpw6NvIGFyaWEtbGl2ZSBwYXJhIGFudW5jaWHDp8OjbyBkZSBtdWRhbsOnYSBkZSBwYXNzbyBwYXJhIGxlaXRvcmVzIGRlIHRlbGEgLS0+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAodG90YWxTdGVwcygpID4gMSkge1xuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuc3RlcF9wcm9ncmVzcydcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IGN1cnJlbnRTdGVwKCksIHRvdGFsOiB0b3RhbFN0ZXBzKCkgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC1bNDBweF0gdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC1bMTJweF1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1pbi13LTAgZmxleC0xIGl0ZW1zLWNlbnRlciBnYXAtWzhweF1cIj5cbiAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRpdGxlSWRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtMSBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1vcGVuLXNhbnMgdGV4dC1bMTRweF0gZm9udC1ib2xkIGxlYWRpbmctWzEuNV0gdGV4dC1ncmF5c2NhbGUtOTBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0aXRsZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRpdGxlU3RyaW5nIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtWzE2cHhdIHctWzE2cHhdIGZsZXgtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ncmF5c2NhbGUtOTAgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6dGV4dC1ncmF5c2NhbGUtMTAwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2xvc2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGNvbnRlbnQoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC1bMjBweF0gYmctZ3JheXNjYWxlLTAgcC1bMTJweF1cIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbaWRdPVwiZGVzY0lkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCB3aGl0ZXNwYWNlLXByZS13cmFwIGZvbnQtb3Blbi1zYW5zIHRleHQtWzE0cHhdIGZvbnQtbm9ybWFsIGxlYWRpbmctWzEuNV0gdGV4dC1ncmF5c2NhbGUtOTBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAobWVzc2FnZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZVN0cmluZyB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC13cmFwIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgQGlmICh0b3RhbFN0ZXBzKCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1vcGVuLXNhbnMgdGV4dC1bMTRweF0gZm9udC1ub3JtYWwgbGVhZGluZy1bMS41XSB0ZXh0LWdyYXlzY2FsZS05MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnN0ZXBfY291bnRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgY3VycmVudDogY3VycmVudFN0ZXAoKSwgdG90YWw6IHRvdGFsU3RlcHMoKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmICh0b3RhbFN0ZXBzKCkgPT09IDEgJiYgc2hvd0RvTm90U2hvd0FnYWluKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHMtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzRG9Ob3RTaG93QWdhaW5DaGVja2VkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwidG9nZ2xlRG9Ob3RTaG93QWdhaW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kb250X3Nob3dfYWdhaW4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtc3RhcnQganVzdGlmeS1lbmQgZ2FwLVs4cHhdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidG90YWxTdGVwcygpID4gMSA/ICd3LWZ1bGwnIDogJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJhY3Rpb24uaGFuZGxlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRvdGFsU3RlcHMoKSA+IDEgJiYgY3VycmVudFN0ZXAoKSA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmJhY2snIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblByZXZpb3VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsU3RlcHMoKSA8PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudW5kZXJzdG9vZCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFN0ZXAoKSA8IHRvdGFsU3RlcHMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMubmV4dCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb21wbGV0ZScgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwidG90YWxTdGVwcygpID4gMSA/IG9uTmV4dCgpIDogb25VbmRlcnN0YW5kKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzQXJyb3dCb3R0b20pIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93Qm90dG9tVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICBAaWYgKGlzQXJyb3dSaWdodCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXJyb3dSaWdodFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuPC9kaXY+XG5cbjwhLS0gQXJyb3cgVGVtcGxhdGVzIC0tPlxuPG5nLXRlbXBsYXRlICNhcnJvd1RvcFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIGZsZXggaC1bOHB4XSB3LWZ1bGwgcHgtWzEycHhdIHB5LTBcIlxuICAgICAgICBbbmdDbGFzc109XCJhcnJvd0FsaWdubWVudENsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiYXJyb3dQYWRkaW5nU3R5bGVcIlxuICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgOFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcnJvd1JvdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgOEw4IDBMMTYgOFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXJyb3dCb3R0b21UZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmUgei0xMCBmbGV4IGgtWzhweF0gdy1mdWxsIHB4LVsxMnB4XSBweS0wXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiYXJyb3dBbGlnbm1lbnRDbGFzc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cImFycm93UGFkZGluZ1N0eWxlXCJcbiAgICA+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDhcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheXNjYWxlLTBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYXJyb3dSb3RhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0wIDhMOCAwTDE2IDhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Fycm93TGVmdFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIGZsZXggdy1bOHB4XSBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHB4LTBcIlxuICAgICAgICBbbmdDbGFzc109XCJhcnJvd0FsaWdubWVudENsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiYXJyb3dQYWRkaW5nU3R5bGVcIlxuICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgOFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcnJvd1JvdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgOEw4IDBMMTYgOFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXJyb3dSaWdodFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIGZsZXggdy1bOHB4XSBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHB4LTBcIlxuICAgICAgICBbbmdDbGFzc109XCJhcnJvd0FsaWdubWVudENsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiYXJyb3dQYWRkaW5nU3R5bGVcIlxuICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgOFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcnJvd1JvdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgOEw4IDBMMTYgOFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGxpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcG90bGlnaHQvc3JjL2xpYi9zcG90bGlnaHQvc3BvdGxpZ2h0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcG90bGlnaHQvc3JjL2xpYi9zcG90bGlnaHQvc3BvdGxpZ2h0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUtoRjs7Ozs7Ozs7R0FRRztBQU9ILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsZ0ZBQWdGO0lBQ2hGLEtBQUssR0FBRyxLQUFLLENBQTRCLEVBQUUsQ0FBQyxDQUFDO0lBRTdDLDRGQUE0RjtJQUM1RixPQUFPLEdBQUcsS0FBSyxFQUE2QixDQUFDO0lBRTdDLG1GQUFtRjtJQUNuRixPQUFPLEdBQUcsS0FBSyxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUUvQywrRUFBK0U7SUFDL0UsUUFBUSxHQUFHLEtBQUssQ0FBb0IsZUFBZSxDQUFDLENBQUM7SUFFckQsc0VBQXNFO0lBQ3RFLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkIsdUZBQXVGO0lBQ3ZGLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFD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QUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBaUI7UUFDMUMsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNoQixLQUFLLEtBQUs7Z0JBQ04sT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxRQUFRO2dCQUNULE9BQU8sS0FBSyxDQUFDO1lBQ2pCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxNQUFNLENBQUM7WUFDbEI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7d0dBL01RLGtCQUFrQjs0RkFBbEIsa0JBQWtCLG0yQ0N6Qi9CLHk1UUE4T0EsMkNEdk5jLFlBQVksd1hBQUUsWUFBWSxxWUFBRSxpQkFBaUIsOExBQUUsZUFBZTs7NEZBRS9ELGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxhQUFhLGNBRVgsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NoZWNrYm94JztcblxuaW1wb3J0IHsgU3BvdGxpZ2h0UG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL3Nwb3RsaWdodC1wb3NpdGlvbic7XG5pbXBvcnQgeyBTcG90bGlnaHRTdGVwQWN0aW9uIH0gZnJvbSAnLi90eXBlcy9zcG90bGlnaHQtc3RlcCc7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBkZSBwb3BvdmVyIGRvIFNwb3RsaWdodC5cbiAqXG4gKiBFeGliZSBvIGNhcmQgZGUgZGVzdGFxdWUgY29tIHTDrXR1bG8sIG1lbnNhZ2VtLCBzZXRhIGRpcmVjaW9uYWwsIGNvbnRhZG9yIGRlIHBhc3NvcyxcbiAqIGJvdMO1ZXMgZGUgbmF2ZWdhw6fDo28gZSwgZW0gbW9kbyBzaW1wbGVzIChwYXNzbyDDum5pY28pLCBvIGNoZWNrYm94IFwibsOjbyBtb3N0cmFyIG5vdmFtZW50ZVwiLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSDDqSBpbnN0YW5jaWFkbyBwcm9ncmFtYXRpY2FtZW50ZSBwZWxvIGBTcG90bGlnaHRPdmVybGF5Q29tcG9uZW50YFxuICogdmlhIENESyBPdmVybGF5LiBOb3JtYWxtZW50ZSBuw6NvIMOpIHVzYWRvIGRpcmV0YW1lbnRlIG5vIHRlbXBsYXRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Mtc3BvdGxpZ2h0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BvdGxpZ2h0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSwgQ2hlY2tib3hDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNwb3RsaWdodENvbXBvbmVudCB7XG4gICAgLyoqIFTDrXR1bG8gZG8gcG9wb3Zlci4gQWNlaXRhIHN0cmluZyBvdSBgVGVtcGxhdGVSZWZgIHBhcmEgY29udGXDumRvIGRpbsOibWljby4gKi9cbiAgICB0aXRsZSA9IGlucHV0PHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4+KCcnKTtcblxuICAgIC8qKiBNZW5zYWdlbSBwcmluY2lwYWwgZG8gcG9wb3Zlci4gQWNlaXRhIHN0cmluZyBvdSBgVGVtcGxhdGVSZWZgIHBhcmEgY29udGXDumRvIGRpbsOibWljby4gKi9cbiAgICBtZXNzYWdlID0gaW5wdXQ8c3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICAgIC8qKiBUZW1wbGF0ZSBvcGNpb25hbCBwYXJhIMOhcmVhIGRlIG3DrWRpYS9jb250ZcO6ZG8gY3VzdG9taXphZG8gYWNpbWEgZGEgbWVuc2FnZW0uICovXG4gICAgY29udGVudCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBQb3Npw6fDo28gZG8gcG9wb3ZlciBlbSByZWxhw6fDo28gYW8gZWxlbWVudG8gYWx2by4gQGRlZmF1bHQgJ2JvdHRvbS1jZW50ZXInICovXG4gICAgcG9zaXRpb24gPSBpbnB1dDxTcG90bGlnaHRQb3NpdGlvbj4oJ2JvdHRvbS1jZW50ZXInKTtcblxuICAgIC8qKiBOw7ptZXJvIGRvIHBhc3NvIGF0dWFsICgxLWJhc2VkKSBleGliaWRvIG5vIGNvbnRhZG9yLiBAZGVmYXVsdCAxICovXG4gICAgY3VycmVudFN0ZXAgPSBpbnB1dCgxKTtcblxuICAgIC8qKiBUb3RhbCBkZSBwYXNzb3MgZG8gdG91ciwgdXNhZG8gbm8gY29udGFkb3IgZSBwYXJhIGNvbnRyb2xlIGRlIGJvdMO1ZXMuIEBkZWZhdWx0IDEgKi9cbiAgICB0b3RhbFN0ZXBzID0gaW5wdXQoMSk7XG5cbiAgICAvKipcbiAgICAgKiBFeGliZSBvIGNoZWNrYm94IFwibsOjbyBtb3N0cmFyIG5vdmFtZW50ZVwiIChhcGVuYXMgZW0gcGFzc28gw7puaWNvKS5cbiAgICAgKiBQYXNzZSBgZmFsc2VgIHBhcmEgc3VwcmltaXIgbyBjaGVja2JveCBxdWFuZG8gbsOjbyBmb3IgbmVjZXNzw6FyaW8gcGVyc2lzdGlyIGEgcHJlZmVyw6puY2lhLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBzaG93RG9Ob3RTaG93QWdhaW4gPSBpbnB1dCh0cnVlKTtcblxuICAgIC8qKiBMaXN0YSBkZSBib3TDtWVzIGRlIGHDp8OjbyBhZGljaW9uYWlzIGV4aWJpZG9zIG5hIMOhcmVhIGRlIHJvZGFww6kuICovXG4gICAgYWN0aW9ucyA9IGlucHV0PFNwb3RsaWdodFN0ZXBBY3Rpb25bXT4oW10pO1xuXG4gICAgLyoqXG4gICAgICogRGVzbG9jYW1lbnRvIGVtIHBpeGVscyBwYXJhIHBvc2ljaW9uYXIgYSBzZXRhIG1hbnVhbG1lbnRlIG5vIGVpeG8gcHJpbmNpcGFsLlxuICAgICAqIFF1YW5kbyBgbnVsbGAsIG8gYWxpbmhhbWVudG8gw6kgY29udHJvbGFkbyBwZWxhIGBwb3NpdGlvbmAuIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBhcnJvd09mZnNldFB4ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKiogRW1pdGlkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIGZlY2hhciAoWCkuICovXG4gICAgY2xvc2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdGlkbyBhbyBjbGljYXIgZW0gXCJQcsOzeGltb1wiLiAqL1xuICAgIG5leHQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0aWRvIGFvIGNsaWNhciBlbSBcIlZvbHRhclwiLiAqL1xuICAgIHByZXZpb3VzID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdGlkbyBhbyBjbGljYXIgZW0gXCJFbnRlbmRpZG9cIiAobW9kbyBzaW1wbGVzLCBwYXNzbyDDum5pY28pLiAqL1xuICAgIHVuZGVyc3RhbmQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIC8qKiBFc3RhZG8gYXR1YWwgZG8gY2hlY2tib3ggXCJuw6NvIG1vc3RyYXIgbm92YW1lbnRlXCIuICovXG4gICAgaXNEb05vdFNob3dBZ2FpbkNoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VDb3VudCA9IDA7XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGluc3RhbmNlSWQgPSBgc3BvdGxpZ2h0LSR7KytTcG90bGlnaHRDb21wb25lbnQuaW5zdGFuY2VDb3VudH1gO1xuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHJlYWRvbmx5IHRpdGxlSWQgPSBgJHt0aGlzLmluc3RhbmNlSWR9LXRpdGxlYDtcblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICByZWFkb25seSBkZXNjSWQgPSBgJHt0aGlzLmluc3RhbmNlSWR9LWRlc2NgO1xuXG4gICAgZ2V0IHRpdGxlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwge1xuICAgICAgICBjb25zdCB2ID0gdGhpcy50aXRsZSgpO1xuICAgICAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdiA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IHRpdGxlU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnRpdGxlKCk7XG4gICAgICAgIHJldHVybiB2IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyAnJyA6ICh2ID8/ICcnKTtcbiAgICB9XG5cbiAgICBnZXQgbWVzc2FnZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMubWVzc2FnZSgpO1xuICAgICAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdiA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG1lc3NhZ2VTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMubWVzc2FnZSgpO1xuICAgICAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gJycgOiAodiA/PyAnJyk7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93UG9zaXRpb24oKTogU3BvdGxpZ2h0UG9zaXRpb24ge1xuICAgICAgICBjb25zdCBbZGlyZWN0aW9uXSA9IHRoaXMucG9zaXRpb24oKS5zcGxpdCgnLScpIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gICAgICAgIGNvbnN0IFssIGFsaWdubWVudF0gPSB0aGlzLnBvc2l0aW9uKCkuc3BsaXQoJy0nKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgICBjb25zdCBvcHBvc2l0ZURpcmVjdGlvbiA9IHRoaXMuZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oZGlyZWN0aW9uKTtcblxuICAgICAgICByZXR1cm4gYCR7b3Bwb3NpdGVEaXJlY3Rpb259LSR7YWxpZ25tZW50fWAgYXMgU3BvdGxpZ2h0UG9zaXRpb247XG4gICAgfVxuXG4gICAgZ2V0IGlzQXJyb3dUb3AoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycm93UG9zaXRpb24uc3RhcnRzV2l0aCgndG9wLScpO1xuICAgIH1cblxuICAgIGdldCBpc0Fycm93Qm90dG9tKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJvd1Bvc2l0aW9uLnN0YXJ0c1dpdGgoJ2JvdHRvbS0nKTtcbiAgICB9XG5cbiAgICBnZXQgaXNBcnJvd0xlZnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycm93UG9zaXRpb24uc3RhcnRzV2l0aCgnbGVmdC0nKTtcbiAgICB9XG5cbiAgICBnZXQgaXNBcnJvd1JpZ2h0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJvd1Bvc2l0aW9uLnN0YXJ0c1dpdGgoJ3JpZ2h0LScpO1xuICAgIH1cblxuICAgIGdldCBhcnJvd1JvdGF0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuYXJyb3dQb3NpdGlvbi5zcGxpdCgnLScpWzBdO1xuXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3RhdGUtMTgwJztcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnLXJvdGF0ZS05MCc7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3RhdGUtOTAnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgYXJyb3dBbGlnbm1lbnRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmFycm93T2Zmc2V0UHgoKTtcblxuICAgICAgICBpZiAob2Zmc2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2p1c3RpZnktc3RhcnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gdGhpcy5hcnJvd1Bvc2l0aW9uLnNwbGl0KCctJylbMV07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNBcnJvd1RvcCB8fCB0aGlzLmlzQXJyb3dCb3R0b20pIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2p1c3RpZnktc3RhcnQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnanVzdGlmeS1jZW50ZXInO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnanVzdGlmeS1lbmQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zLXN0YXJ0IGp1c3RpZnktc3RhcnQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJztcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zLWVuZCBqdXN0aWZ5LWVuZCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGFycm93UGFkZGluZ1N0eWxlKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmFycm93T2Zmc2V0UHgoKTtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNBcnJvd1RvcCB8fCB0aGlzLmlzQXJyb3dCb3R0b20pIHtcbiAgICAgICAgICAgIHJldHVybiB7ICdwYWRkaW5nLWxlZnQnOiBgJHtvZmZzZXR9cHhgLCAncGFkZGluZy1yaWdodCc6ICcwJyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgJ3BhZGRpbmctdG9wJzogYCR7b2Zmc2V0fXB4YCwgJ3BhZGRpbmctYm90dG9tJzogJzAnIH07XG4gICAgfVxuXG4gICAgLyoqIEVtaXRlIG8gZXZlbnRvIGBjbG9zZWRgLiBDaGFtYWRvIHBlbG8gYm90w6NvIGRlIGZlY2hhciBubyB0ZW1wbGF0ZS4gKi9cbiAgICBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRlIG8gZXZlbnRvIGBuZXh0YC4gQ2hhbWFkbyBwZWxvIGJvdMOjbyBcIlByw7N4aW1vXCIgbm8gdGVtcGxhdGUuICovXG4gICAgb25OZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5leHQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBFbWl0ZSBvIGV2ZW50byBgcHJldmlvdXNgLiBDaGFtYWRvIHBlbG8gYm90w6NvIFwiVm9sdGFyXCIgbm8gdGVtcGxhdGUuICovXG4gICAgb25QcmV2aW91cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91cy5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRlIG8gZXZlbnRvIGB1bmRlcnN0YW5kYC4gQ2hhbWFkbyBwZWxvIGJvdMOjbyBcIkVudGVuZGlkb1wiIG5vIHRlbXBsYXRlLiAqL1xuICAgIG9uVW5kZXJzdGFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bmRlcnN0YW5kLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQWx0ZXJuYSBvIGVzdGFkbyBkZSBgaXNEb05vdFNob3dBZ2FpbkNoZWNrZWRgLiAqL1xuICAgIHRvZ2dsZURvTm90U2hvd0FnYWluKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRG9Ob3RTaG93QWdhaW5DaGVja2VkLnVwZGF0ZSgodikgPT4gIXYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oZGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICBbYXR0ci5yb2xlXT1cInRvdGFsU3RlcHMoKSA+IDEgPyAnZGlhbG9nJyA6ICd0b29sdGlwJ1wiXG4gICAgW2F0dHIuYXJpYS1tb2RhbF09XCJ0b3RhbFN0ZXBzKCkgPiAxID8gJ3RydWUnIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRpdGxlSWRcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZGVzY0lkXCJcbiAgICBjbGFzcz1cImZsZXggbWF4LXctWzM0MnB4XVwiXG4gICAgW25nQ2xhc3NdPVwiaXNBcnJvd0xlZnQgfHwgaXNBcnJvd1JpZ2h0ID8gJ2ZsZXgtcm93JyA6ICdmbGV4LWNvbCdcIlxuPlxuICAgIEBpZiAoaXNBcnJvd1RvcCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXJyb3dUb3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIEBpZiAoaXNBcnJvd0xlZnQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93TGVmdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGZsZXggdy1mdWxsIGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs0cHhdIGJnLWdyYXlzY2FsZS0wXCJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAgICAgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgICAwIDFweCAxOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksXG4gICAgICAgICAgICAgICAgMCA2cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMTQpO1xuICAgICAgICBcIlxuICAgID5cbiAgICAgICAgPCEtLSBSZWdpw6NvIGFyaWEtbGl2ZSBwYXJhIGFudW5jaWHDp8OjbyBkZSBtdWRhbsOnYSBkZSBwYXNzbyBwYXJhIGxlaXRvcmVzIGRlIHRlbGEgLS0+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAodG90YWxTdGVwcygpID4gMSkge1xuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuc3RlcF9wcm9ncmVzcydcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IGN1cnJlbnRTdGVwKCksIHRvdGFsOiB0b3RhbFN0ZXBzKCkgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC1bNDBweF0gdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC1bMTJweF1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1pbi13LTAgZmxleC0xIGl0ZW1zLWNlbnRlciBnYXAtWzhweF1cIj5cbiAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRpdGxlSWRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtMSBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1vcGVuLXNhbnMgdGV4dC1bMTRweF0gZm9udC1ib2xkIGxlYWRpbmctWzEuNV0gdGV4dC1ncmF5c2NhbGUtOTBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0aXRsZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRpdGxlU3RyaW5nIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtWzE2cHhdIHctWzE2cHhdIGZsZXgtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ncmF5c2NhbGUtOTAgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6dGV4dC1ncmF5c2NhbGUtMTAwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2xvc2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGNvbnRlbnQoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC1bMjBweF0gYmctZ3JheXNjYWxlLTAgcC1bMTJweF1cIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbaWRdPVwiZGVzY0lkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCB3aGl0ZXNwYWNlLXByZS13cmFwIGZvbnQtb3Blbi1zYW5zIHRleHQtWzE0cHhdIGZvbnQtbm9ybWFsIGxlYWRpbmctWzEuNV0gdGV4dC1ncmF5c2NhbGUtOTBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAobWVzc2FnZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZVN0cmluZyB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC13cmFwIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgQGlmICh0b3RhbFN0ZXBzKCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1vcGVuLXNhbnMgdGV4dC1bMTRweF0gZm9udC1ub3JtYWwgbGVhZGluZy1bMS41XSB0ZXh0LWdyYXlzY2FsZS05MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnN0ZXBfY291bnRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgY3VycmVudDogY3VycmVudFN0ZXAoKSwgdG90YWw6IHRvdGFsU3RlcHMoKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmICh0b3RhbFN0ZXBzKCkgPT09IDEgJiYgc2hvd0RvTm90U2hvd0FnYWluKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHMtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzRG9Ob3RTaG93QWdhaW5DaGVja2VkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwidG9nZ2xlRG9Ob3RTaG93QWdhaW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kb250X3Nob3dfYWdhaW4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtc3RhcnQganVzdGlmeS1lbmQgZ2FwLVs4cHhdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidG90YWxTdGVwcygpID4gMSA/ICd3LWZ1bGwnIDogJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJhY3Rpb24uaGFuZGxlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRvdGFsU3RlcHMoKSA+IDEgJiYgY3VycmVudFN0ZXAoKSA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmJhY2snIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblByZXZpb3VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsU3RlcHMoKSA8PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudW5kZXJzdG9vZCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFN0ZXAoKSA8IHRvdGFsU3RlcHMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMubmV4dCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb21wbGV0ZScgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwidG90YWxTdGVwcygpID4gMSA/IG9uTmV4dCgpIDogb25VbmRlcnN0YW5kKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzQXJyb3dCb3R0b20pIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFycm93Qm90dG9tVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICBAaWYgKGlzQXJyb3dSaWdodCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXJyb3dSaWdodFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuPC9kaXY+XG5cbjwhLS0gQXJyb3cgVGVtcGxhdGVzIC0tPlxuPG5nLXRlbXBsYXRlICNhcnJvd1RvcFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIGZsZXggaC1bOHB4XSB3LWZ1bGwgcHgtWzEycHhdIHB5LTBcIlxuICAgICAgICBbbmdDbGFzc109XCJhcnJvd0FsaWdubWVudENsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiYXJyb3dQYWRkaW5nU3R5bGVcIlxuICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgOFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcnJvd1JvdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgOEw4IDBMMTYgOFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXJyb3dCb3R0b21UZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmUgei0xMCBmbGV4IGgtWzhweF0gdy1mdWxsIHB4LVsxMnB4XSBweS0wXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiYXJyb3dBbGlnbm1lbnRDbGFzc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cImFycm93UGFkZGluZ1N0eWxlXCJcbiAgICA+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDhcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheXNjYWxlLTBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYXJyb3dSb3RhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0wIDhMOCAwTDE2IDhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Fycm93TGVmdFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIGZsZXggdy1bOHB4XSBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHB4LTBcIlxuICAgICAgICBbbmdDbGFzc109XCJhcnJvd0FsaWdubWVudENsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiYXJyb3dQYWRkaW5nU3R5bGVcIlxuICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgOFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcnJvd1JvdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgOEw4IDBMMTYgOFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXJyb3dSaWdodFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIGZsZXggdy1bOHB4XSBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHB4LTBcIlxuICAgICAgICBbbmdDbGFzc109XCJhcnJvd0FsaWdubWVudENsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwiYXJyb3dQYWRkaW5nU3R5bGVcIlxuICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgOFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhcnJvd1JvdGF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgOEw4IDBMMTYgOFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
|
|
@@ -291,7 +291,7 @@ export class TablePagingComponent {
|
|
|
291
291
|
return tableData;
|
|
292
292
|
}
|
|
293
293
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TablePagingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
294
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TablePagingComponent, selector: "s-table-paging", inputs: { totalRecords: "totalRecords", exportFileName: "exportFileName", table: "table", exportable: "exportable", enableExportSelectedRecords: "enableExportSelectedRecords", customActions: "customActions", loadAllRecords: "loadAllRecords", loadCurrentPageRecords: "loadCurrentPageRecords", loadSelectedRecords: "loadSelectedRecords" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"paging-container\">\n <span class=\"total-records\">\n {{ totalRecordsText }}\n </span>\n @if (exportable) {\n <s-button\n class=\"export-button\"\n priority=\"default\"\n iconClass=\"fa fa-fw fa-file-export\"\n [disabled]=\"false\"\n [auxiliary]=\"true\"\n [tooltip]=\"getTooltipText()\"\n [menuOptions]=\"getActions()\"\n >\n </s-button>\n }\n</div>\n", styles: [".paging-container{display:flex;align-items:center}.export-button{margin-left:6px}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }] });
|
|
294
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TablePagingComponent, selector: "s-table-paging", inputs: { totalRecords: "totalRecords", exportFileName: "exportFileName", table: "table", exportable: "exportable", enableExportSelectedRecords: "enableExportSelectedRecords", customActions: "customActions", loadAllRecords: "loadAllRecords", loadCurrentPageRecords: "loadCurrentPageRecords", loadSelectedRecords: "loadSelectedRecords" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"paging-container\">\n <span class=\"total-records\">\n {{ totalRecordsText }}\n </span>\n @if (exportable) {\n <s-button\n class=\"export-button\"\n priority=\"default\"\n iconClass=\"fa fa-fw fa-file-export\"\n [disabled]=\"false\"\n [auxiliary]=\"true\"\n [tooltip]=\"getTooltipText()\"\n [menuOptions]=\"getActions()\"\n >\n </s-button>\n }\n</div>\n", styles: [".paging-container{display:flex;align-items:center}.export-button{margin-left:6px}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel", "ariaLabel"], outputs: ["clicked"] }] });
|
|
295
295
|
}
|
|
296
296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TablePagingComponent, decorators: [{
|
|
297
297
|
type: Component,
|
|
@@ -14,6 +14,7 @@ import { BadgeModule } from '@seniorsistemas/angular-components/badge';
|
|
|
14
14
|
import { Subject } from 'rxjs';
|
|
15
15
|
import { takeUntil } from 'rxjs/operators';
|
|
16
16
|
|
|
17
|
+
let nextPanelId = 0;
|
|
17
18
|
/**
|
|
18
19
|
* @description Painel individual do {@link AccordionComponent}. Gerencia o estado de
|
|
19
20
|
* abertura/fechamento com animação, podendo conter um switch de controle via `switchControl`,
|
|
@@ -92,6 +93,7 @@ class AccordionPanelComponent {
|
|
|
92
93
|
panelClosed = new EventEmitter();
|
|
93
94
|
isAnimating = false;
|
|
94
95
|
isContentAnimationDisabled = true;
|
|
96
|
+
panelId = nextPanelId++;
|
|
95
97
|
_isOpen = false;
|
|
96
98
|
get isOpen() {
|
|
97
99
|
return this._isOpen;
|
|
@@ -132,6 +134,12 @@ class AccordionPanelComponent {
|
|
|
132
134
|
this.isOpen = !this.isOpen;
|
|
133
135
|
this._emitPanelEvent();
|
|
134
136
|
}
|
|
137
|
+
onHeaderKeydown(event) {
|
|
138
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
this.onTabClick();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
135
143
|
onContentAnimationStart() {
|
|
136
144
|
this.isAnimating = true;
|
|
137
145
|
}
|
|
@@ -148,7 +156,7 @@ class AccordionPanelComponent {
|
|
|
148
156
|
}
|
|
149
157
|
}
|
|
150
158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
151
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AccordionPanelComponent, selector: "s-accordion-panel", inputs: { header: "header", badgeConfig: "badgeConfig", buttons: "buttons", disabled: "disabled", switchControl: "switchControl", validationMessage: "validationMessage", cache: "cache", validationMessageIcon: "validationMessageIcon", validationMessageIconColor: "validationMessageIconColor" }, outputs: { panelOpened: "panelOpened", panelClosed: "panelClosed" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div\n class=\"
|
|
159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AccordionPanelComponent, selector: "s-accordion-panel", inputs: { header: "header", badgeConfig: "badgeConfig", buttons: "buttons", disabled: "disabled", switchControl: "switchControl", validationMessage: "validationMessage", cache: "cache", validationMessageIcon: "validationMessageIcon", validationMessageIconColor: "validationMessageIconColor" }, outputs: { panelOpened: "panelOpened", panelClosed: "panelClosed" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div class=\"header\">\n <div\n class=\"header__trigger\"\n role=\"button\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"'accordion-panel-content-' + panelId\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"onTabClick()\"\n (keydown)=\"onHeaderKeydown($event)\"\n >\n <span\n class=\"icon fas\"\n [class.fa-minus]=\"isOpen\"\n [class.fa-plus]=\"!isOpen\"\n aria-hidden=\"true\"\n >\n </span>\n @if (validationMessage) {\n <span\n class=\"exclamation-icon\"\n [class]=\"validationMessageIcon\"\n [sTooltip]=\"validationMessage\"\n [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n aria-hidden=\"true\"\n >\n </span>\n }\n <span class=\"title\" [id]=\"'accordion-panel-header-' + panelId\">{{ header }}</span>\n </div>\n <div class=\"header__controls\">\n @if (badgeConfig) {\n <s-badge\n [color]=\"badgeConfig.color\"\n [text]=\"badgeConfig.text\"\n ></s-badge>\n }\n\n @for (button of buttons; track button.icon) {\n <button\n class=\"icon-button\"\n [ngClass]=\"button.icon\"\n [attr.aria-label]=\"button.label\"\n (click)=\"onIconButtonsClick($event, button.onClick)\"\n ></button>\n }\n\n @if (switchControl) {\n <s-switch\n class=\"switch\"\n [formControl]=\"switchControl\"\n (click)=\"$event.stopPropagation()\"\n >\n </s-switch>\n }\n </div>\n </div>\n\n @if (cache) {\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion-panel-header-' + panelId\"\n [id]=\"'accordion-panel-content-' + panelId\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion-panel-header-' + panelId\"\n [id]=\"'accordion-panel-content-' + panelId\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #panelContent>\n <ng-content></ng-content>\n</ng-template>\n\n", styles: [".accordion-panel{border-bottom:1px solid #c1c1cc}.accordion-panel .header{align-items:center;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;padding:16px;-webkit-user-select:none;user-select:none}.accordion-panel .header .header__trigger{align-items:center;display:flex;flex:1;flex-wrap:nowrap;cursor:pointer}.accordion-panel .header .header__trigger:focus-visible{outline:2px solid #428bca;outline-offset:-2px}.accordion-panel .header .header__trigger .icon{color:#212533;font-size:1rem;margin-right:12px}.accordion-panel .header .header__trigger .exclamation-icon{font-size:1rem;margin-right:12px}.accordion-panel .header .header__trigger .exclamation-icon-red{color:#c13018}.accordion-panel .header .header__trigger .exclamation-icon-orange{color:#f8931f}.accordion-panel .header .header__trigger .exclamation-icon-yellow{color:#fcbf10}.accordion-panel .header .header__trigger .exclamation-icon-green{color:#0c9348}.accordion-panel .header .header__trigger .exclamation-icon-blue{color:#428bca}.accordion-panel .header .header__trigger .title{font-family:\"Open Sans\" sans-serif;font-size:.875rem;font-weight:700;line-height:150%;text-transform:uppercase}.accordion-panel .header .header__controls{align-items:center;display:flex;margin-left:16px}.accordion-panel .header .header__controls .icon-button{color:#212533;cursor:pointer;font-size:1rem;margin-left:12px;padding:4px;border:none;background:none}.accordion-panel .header .header__controls .switch{padding-left:16px}.accordion-panel .content{background-color:#fff;overflow:hidden}.accordion-panel .content .content-container{margin:20px}.accordion-panel--open .header{background-color:#eeebf2;border-bottom:1px solid #c1c1cc}.accordion-panel--disabled .header,.accordion-panel--disabled .header .header__trigger{cursor:auto}.accordion-panel--disabled .header .header__trigger .icon,.accordion-panel--disabled .header .header__trigger .title{color:#c1c1cc}.accordion-panel--disabled .header .header__controls .icon-button{color:#c1c1cc;cursor:auto}.accordion-panel--disabled .exclamation-icon{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i4.SwitchComponent, selector: "s-switch", inputs: ["readonly", "trueLabel", "falseLabel", "inputId", "label", "inputName", "disabled", "value", "showStatusLabel"], outputs: ["valueChanged"] }, { kind: "component", type: i5.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }], animations: [
|
|
152
160
|
trigger('cachelessAnimation', [
|
|
153
161
|
transition(':enter', [style({ height: '0' }), animate('200ms linear', style({ height: '*' }))]),
|
|
154
162
|
transition(':leave', [style({ height: '*' }), animate('200ms linear', style({ height: '0' }))]),
|
|
@@ -172,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
172
180
|
state('false', style({ height: '0px' })),
|
|
173
181
|
transition('* => *', animate('200ms')),
|
|
174
182
|
]),
|
|
175
|
-
], template: "<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div\n class=\"
|
|
183
|
+
], template: "<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div class=\"header\">\n <div\n class=\"header__trigger\"\n role=\"button\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"'accordion-panel-content-' + panelId\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"onTabClick()\"\n (keydown)=\"onHeaderKeydown($event)\"\n >\n <span\n class=\"icon fas\"\n [class.fa-minus]=\"isOpen\"\n [class.fa-plus]=\"!isOpen\"\n aria-hidden=\"true\"\n >\n </span>\n @if (validationMessage) {\n <span\n class=\"exclamation-icon\"\n [class]=\"validationMessageIcon\"\n [sTooltip]=\"validationMessage\"\n [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n aria-hidden=\"true\"\n >\n </span>\n }\n <span class=\"title\" [id]=\"'accordion-panel-header-' + panelId\">{{ header }}</span>\n </div>\n <div class=\"header__controls\">\n @if (badgeConfig) {\n <s-badge\n [color]=\"badgeConfig.color\"\n [text]=\"badgeConfig.text\"\n ></s-badge>\n }\n\n @for (button of buttons; track button.icon) {\n <button\n class=\"icon-button\"\n [ngClass]=\"button.icon\"\n [attr.aria-label]=\"button.label\"\n (click)=\"onIconButtonsClick($event, button.onClick)\"\n ></button>\n }\n\n @if (switchControl) {\n <s-switch\n class=\"switch\"\n [formControl]=\"switchControl\"\n (click)=\"$event.stopPropagation()\"\n >\n </s-switch>\n }\n </div>\n </div>\n\n @if (cache) {\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion-panel-header-' + panelId\"\n [id]=\"'accordion-panel-content-' + panelId\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion-panel-header-' + panelId\"\n [id]=\"'accordion-panel-content-' + panelId\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #panelContent>\n <ng-content></ng-content>\n</ng-template>\n\n", styles: [".accordion-panel{border-bottom:1px solid #c1c1cc}.accordion-panel .header{align-items:center;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;padding:16px;-webkit-user-select:none;user-select:none}.accordion-panel .header .header__trigger{align-items:center;display:flex;flex:1;flex-wrap:nowrap;cursor:pointer}.accordion-panel .header .header__trigger:focus-visible{outline:2px solid #428bca;outline-offset:-2px}.accordion-panel .header .header__trigger .icon{color:#212533;font-size:1rem;margin-right:12px}.accordion-panel .header .header__trigger .exclamation-icon{font-size:1rem;margin-right:12px}.accordion-panel .header .header__trigger .exclamation-icon-red{color:#c13018}.accordion-panel .header .header__trigger .exclamation-icon-orange{color:#f8931f}.accordion-panel .header .header__trigger .exclamation-icon-yellow{color:#fcbf10}.accordion-panel .header .header__trigger .exclamation-icon-green{color:#0c9348}.accordion-panel .header .header__trigger .exclamation-icon-blue{color:#428bca}.accordion-panel .header .header__trigger .title{font-family:\"Open Sans\" sans-serif;font-size:.875rem;font-weight:700;line-height:150%;text-transform:uppercase}.accordion-panel .header .header__controls{align-items:center;display:flex;margin-left:16px}.accordion-panel .header .header__controls .icon-button{color:#212533;cursor:pointer;font-size:1rem;margin-left:12px;padding:4px;border:none;background:none}.accordion-panel .header .header__controls .switch{padding-left:16px}.accordion-panel .content{background-color:#fff;overflow:hidden}.accordion-panel .content .content-container{margin:20px}.accordion-panel--open .header{background-color:#eeebf2;border-bottom:1px solid #c1c1cc}.accordion-panel--disabled .header,.accordion-panel--disabled .header .header__trigger{cursor:auto}.accordion-panel--disabled .header .header__trigger .icon,.accordion-panel--disabled .header .header__trigger .title{color:#c1c1cc}.accordion-panel--disabled .header .header__controls .icon-button{color:#c1c1cc;cursor:auto}.accordion-panel--disabled .exclamation-icon{opacity:.5}\n"] }]
|
|
176
184
|
}], propDecorators: { header: [{
|
|
177
185
|
type: Input,
|
|
178
186
|
args: [{ required: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-accordion.mjs","sources":["../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.ts","../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.ts","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.module.ts","../../projects/angular-components/accordion/src/seniorsistemas-angular-components-accordion.ts"],"sourcesContent":["import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { trigger, style, animate, transition, state } from '@angular/animations';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { AccordionButtonSettings, ValidationMessageIconColor } from '../../models/accordion-button-settings';\nimport { BadgeColors } from '@seniorsistemas/angular-components/badge';\n\n/**\n * @description Painel individual do {@link AccordionComponent}. Gerencia o estado de\n * abertura/fechamento com animação, podendo conter um switch de controle via `switchControl`,\n * botões de ação configuráveis e uma mensagem de validação com ícone.\n *\n * @example\n * ```html\n * <s-accordion-panel\n * header=\"Configurações\"\n * [disabled]=\"false\"\n * (panelOpened)=\"onOpen()\"\n * (panelClosed)=\"onClose()\">\n * <p>Conteúdo do painel</p>\n * </s-accordion-panel>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-accordion-panel',\n templateUrl: './accordion-panel.component.html',\n styleUrls: ['./accordion-panel.component.scss'],\n animations: [\n trigger('cachelessAnimation', [\n transition(':enter', [style({ height: '0' }), animate('200ms linear', style({ height: '*' }))]),\n transition(':leave', [style({ height: '*' }), animate('200ms linear', style({ height: '0' }))]),\n ]),\n trigger('cacheAnimation', [\n state('true', style({ height: '*' })),\n state('false', style({ height: '0px' })),\n transition('* => *', animate('200ms')),\n ]),\n ],\n})\nexport class AccordionPanelComponent implements OnChanges, AfterViewInit {\n /**\n * @description Título exibido no cabeçalho do painel. Campo obrigatório.\n */\n @Input({ required: true })\n public header!: string;\n\n /**\n * @description Cria um componente Badge ao lado dos botões de ação no cabeçalho do painel.\n * O objeto de configuração deve conter o texto e a cor do badge.\n */\n @Input()\n public badgeConfig?: { text: string; color: BadgeColors };\n\n /**\n * @description Lista de botões de ação exibidos no cabeçalho do painel,\n * à direita do título. Cada item define ícone, tooltip e callback de clique.\n */\n @Input()\n public buttons?: AccordionButtonSettings[];\n\n /**\n * @description Desabilita a interação do usuário com o painel, impedindo abertura e fechamento.\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description `FormControl` vinculado a um switch exibido no cabeçalho do painel.\n * Permite habilitar/desabilitar o conteúdo do painel via toggle.\n */\n @Input()\n public switchControl?: UntypedFormControl;\n\n /**\n * @description Mensagem de validação exibida abaixo do cabeçalho, acompanhada de um ícone.\n * Útil para indicar erros ou alertas relacionados ao conteúdo do painel.\n */\n @Input()\n public validationMessage?: string;\n\n /**\n * @description Mantém o conteúdo do painel no DOM mesmo quando fechado (modo cache).\n * Útil para preservar o estado de componentes internos ao reabrir o painel.\n *\n * @default false\n */\n @Input()\n public cache = false;\n\n /**\n * @description Classe do ícone exibido ao lado da mensagem de validação.\n *\n * @default 'fas fa-exclamation-circle'\n */\n @Input() validationMessageIcon = 'fas fa-exclamation-circle';\n\n /**\n * @description Cor do ícone da mensagem de validação.\n *\n * @default 'Red'\n */\n @Input() validationMessageIconColor: ValidationMessageIconColor = 'Red';\n\n /**\n * @description Emitido quando o painel é aberto pelo usuário.\n */\n @Output()\n public panelOpened = new EventEmitter<void>();\n\n /**\n * @description Emitido quando o painel é fechado pelo usuário.\n */\n @Output()\n public panelClosed = new EventEmitter<void>();\n\n public isAnimating = false;\n public isContentAnimationDisabled = true;\n\n private _isOpen = false;\n\n public get isOpen() {\n return this._isOpen;\n }\n\n public set isOpen(isOpen: boolean) {\n this._isOpen = isOpen;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('disabled' in changes && this.switchControl) {\n if (changes['disabled'].currentValue) {\n this.switchControl.disable({ emitEvent: false });\n } else {\n this.switchControl.enable({ emitEvent: false });\n }\n }\n\n if ('switch' in changes && 'switchControl' in changes) {\n throw new Error(\"You can't set switch and switchControl together.\");\n }\n }\n\n public ngAfterViewInit(): void {\n // to executed at a safe time prior to control returning to the browser's event loop\n queueMicrotask(() => {\n this.isContentAnimationDisabled = false;\n });\n }\n\n public onIconButtonsClick(event: Event, callback: VoidFunction) {\n if (this.disabled) {\n return;\n }\n\n event.stopPropagation();\n callback();\n }\n\n public onTabClick() {\n if (this.disabled || this.isAnimating) {\n return;\n }\n this.isOpen = !this.isOpen;\n this._emitPanelEvent();\n }\n\n public onContentAnimationStart() {\n this.isAnimating = true;\n }\n\n public onContentAnimationDone() {\n this.isAnimating = false;\n\n this._emitPanelEvent();\n }\n\n private _emitPanelEvent() {\n if (this.isOpen) {\n this.panelOpened.emit();\n } else {\n this.panelClosed.emit();\n }\n }\n}\n\n","<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div\n class=\"header\"\n (click)=\"onTabClick()\"\n >\n <div class=\"header__title\">\n <span\n class=\"icon fas\"\n [class.fa-minus]=\"isOpen\"\n [class.fa-plus]=\"!isOpen\"\n >\n </span>\n @if (validationMessage) {\n <span\n class=\"exclamation-icon\"\n [class]=\"validationMessageIcon\"\n [sTooltip]=\"validationMessage\"\n [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n >\n </span>\n }\n <span class=\"title\">{{ header }}</span>\n </div>\n <div class=\"header__controls\">\n @if (badgeConfig) {\n <s-badge\n [color]=\"badgeConfig.color\"\n [text]=\"badgeConfig.text\"\n ></s-badge>\n }\n\n @for (button of buttons; track button.icon) {\n <button\n class=\"icon-button\"\n [ngClass]=\"button.icon\"\n (click)=\"onIconButtonsClick($event, button.onClick)\"\n ></button>\n }\n\n @if (switchControl) {\n <s-switch\n class=\"switch\"\n [formControl]=\"switchControl\"\n (click)=\"$event.stopPropagation()\"\n >\n </s-switch>\n }\n </div>\n </div>\n\n @if (cache) {\n <div\n class=\"content\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #panelContent>\n <ng-content></ng-content>\n</ng-template>\n\n","import {\n AfterContentInit,\n OnChanges,\n Component,\n ContentChildren,\n Input,\n QueryList,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\n\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @description Componente de acordeão que gerencia a abertura e o fechamento de painéis\n * {@link AccordionPanelComponent}. Suporta modo de painel único (apenas um aberto por vez)\n * ou modo múltiplo (vários painéis abertos simultaneamente), configurável via input `multiple`.\n *\n * @example\n * ```html\n * <s-accordion [multiple]=\"false\" [activeIndex]=\"0\">\n * <s-accordion-panel header=\"Seção 1\">Conteúdo 1</s-accordion-panel>\n * <s-accordion-panel header=\"Seção 2\">Conteúdo 2</s-accordion-panel>\n * </s-accordion>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class AccordionComponent implements AfterContentInit, OnChanges, OnDestroy {\n /**\n * @description Índice (ou lista de índices) do(s) painel(is) que devem iniciar abertos.\n * Aceita um número para painel único ou um array de números para o modo múltiplo.\n */\n @Input()\n public activeIndex?: number | number[];\n\n /**\n * @description Permite que múltiplos painéis estejam abertos ao mesmo tempo.\n * Quando `false`, abrir um painel fecha automaticamente o anterior.\n *\n * @default false\n */\n @Input()\n public multiple = false;\n\n @ContentChildren(AccordionPanelComponent)\n public panelsComponents?: QueryList<AccordionPanelComponent>;\n\n private readonly _unsubscribe$ = new Subject<void>();\n private _panels: AccordionPanelComponent[] = [];\n private _openSubs: Subscription[] = [];\n\n public ngAfterContentInit(): void {\n if (this.panelsComponents) {\n this._panels = this.panelsComponents?.toArray();\n }\n\n this._openSubs = Array.from({ length: this._panels.length });\n\n this._setBehavior(this.multiple);\n this._setupTabs();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['multiple']) {\n this._setBehavior(changes['multiple'].currentValue);\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n private _setupTabs(): void {\n if (this._panels?.length) {\n if (this.activeIndex !== undefined && this.activeIndex !== null) {\n const activeTabs = Array.isArray(this.activeIndex)\n ? this._panels.filter((_, index) => (this.activeIndex as number[]).includes(index))\n : [this._panels[this.activeIndex]];\n\n if (activeTabs.length === 0) {\n throw new Error('activeIndex does not represent any panel.');\n }\n\n for (const activeTab of activeTabs) {\n if (!activeTab.disabled) {\n activeTab.isOpen = true;\n }\n }\n }\n }\n }\n\n private _closeOtherTabs(exception: number) {\n this._panels.forEach((panel, index) => {\n if (index !== exception) {\n panel.isOpen = false;\n }\n });\n }\n\n private _setBehavior(multiple: boolean): void {\n if (multiple) {\n this._enableMultiplePanelBehavior();\n } else {\n this._enableSinglePanelBehavior();\n }\n }\n\n private _enableSinglePanelBehavior() {\n this._panels.forEach((panel, index) => {\n this._openSubs[index] = panel.panelOpened.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\n this._closeOtherTabs(index);\n });\n });\n }\n\n private _enableMultiplePanelBehavior() {\n this._panels.forEach((_, index) => {\n if (this._openSubs[index]) {\n this._openSubs[index].unsubscribe();\n }\n });\n }\n}\n\n","<div class=\"accordion\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { SwitchModule } from '@seniorsistemas/angular-components/switch';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TooltipModule, SwitchModule, BadgeModule],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent],\n})\nexport class AccordionModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-accordion.mjs","sources":["../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.ts","../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.ts","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.module.ts","../../projects/angular-components/accordion/src/seniorsistemas-angular-components-accordion.ts"],"sourcesContent":["import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { trigger, style, animate, transition, state } from '@angular/animations';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { AccordionButtonSettings, ValidationMessageIconColor } from '../../models/accordion-button-settings';\nimport { BadgeColors } from '@seniorsistemas/angular-components/badge';\n\nlet nextPanelId = 0;\n\n/**\n * @description Painel individual do {@link AccordionComponent}. Gerencia o estado de\n * abertura/fechamento com animação, podendo conter um switch de controle via `switchControl`,\n * botões de ação configuráveis e uma mensagem de validação com ícone.\n *\n * @example\n * ```html\n * <s-accordion-panel\n * header=\"Configurações\"\n * [disabled]=\"false\"\n * (panelOpened)=\"onOpen()\"\n * (panelClosed)=\"onClose()\">\n * <p>Conteúdo do painel</p>\n * </s-accordion-panel>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-accordion-panel',\n templateUrl: './accordion-panel.component.html',\n styleUrls: ['./accordion-panel.component.scss'],\n animations: [\n trigger('cachelessAnimation', [\n transition(':enter', [style({ height: '0' }), animate('200ms linear', style({ height: '*' }))]),\n transition(':leave', [style({ height: '*' }), animate('200ms linear', style({ height: '0' }))]),\n ]),\n trigger('cacheAnimation', [\n state('true', style({ height: '*' })),\n state('false', style({ height: '0px' })),\n transition('* => *', animate('200ms')),\n ]),\n ],\n})\nexport class AccordionPanelComponent implements OnChanges, AfterViewInit {\n /**\n * @description Título exibido no cabeçalho do painel. Campo obrigatório.\n */\n @Input({ required: true })\n public header!: string;\n\n /**\n * @description Cria um componente Badge ao lado dos botões de ação no cabeçalho do painel.\n * O objeto de configuração deve conter o texto e a cor do badge.\n */\n @Input()\n public badgeConfig?: { text: string; color: BadgeColors };\n\n /**\n * @description Lista de botões de ação exibidos no cabeçalho do painel,\n * à direita do título. Cada item define ícone, tooltip e callback de clique.\n */\n @Input()\n public buttons?: AccordionButtonSettings[];\n\n /**\n * @description Desabilita a interação do usuário com o painel, impedindo abertura e fechamento.\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description `FormControl` vinculado a um switch exibido no cabeçalho do painel.\n * Permite habilitar/desabilitar o conteúdo do painel via toggle.\n */\n @Input()\n public switchControl?: UntypedFormControl;\n\n /**\n * @description Mensagem de validação exibida abaixo do cabeçalho, acompanhada de um ícone.\n * Útil para indicar erros ou alertas relacionados ao conteúdo do painel.\n */\n @Input()\n public validationMessage?: string;\n\n /**\n * @description Mantém o conteúdo do painel no DOM mesmo quando fechado (modo cache).\n * Útil para preservar o estado de componentes internos ao reabrir o painel.\n *\n * @default false\n */\n @Input()\n public cache = false;\n\n /**\n * @description Classe do ícone exibido ao lado da mensagem de validação.\n *\n * @default 'fas fa-exclamation-circle'\n */\n @Input() validationMessageIcon = 'fas fa-exclamation-circle';\n\n /**\n * @description Cor do ícone da mensagem de validação.\n *\n * @default 'Red'\n */\n @Input() validationMessageIconColor: ValidationMessageIconColor = 'Red';\n\n /**\n * @description Emitido quando o painel é aberto pelo usuário.\n */\n @Output()\n public panelOpened = new EventEmitter<void>();\n\n /**\n * @description Emitido quando o painel é fechado pelo usuário.\n */\n @Output()\n public panelClosed = new EventEmitter<void>();\n\n public isAnimating = false;\n public isContentAnimationDisabled = true;\n public readonly panelId = nextPanelId++;\n\n private _isOpen = false;\n\n public get isOpen() {\n return this._isOpen;\n }\n\n public set isOpen(isOpen: boolean) {\n this._isOpen = isOpen;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('disabled' in changes && this.switchControl) {\n if (changes['disabled'].currentValue) {\n this.switchControl.disable({ emitEvent: false });\n } else {\n this.switchControl.enable({ emitEvent: false });\n }\n }\n\n if ('switch' in changes && 'switchControl' in changes) {\n throw new Error(\"You can't set switch and switchControl together.\");\n }\n }\n\n public ngAfterViewInit(): void {\n // to executed at a safe time prior to control returning to the browser's event loop\n queueMicrotask(() => {\n this.isContentAnimationDisabled = false;\n });\n }\n\n public onIconButtonsClick(event: Event, callback: VoidFunction) {\n if (this.disabled) {\n return;\n }\n\n event.stopPropagation();\n callback();\n }\n\n public onTabClick() {\n if (this.disabled || this.isAnimating) {\n return;\n }\n this.isOpen = !this.isOpen;\n this._emitPanelEvent();\n }\n\n public onHeaderKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.onTabClick();\n }\n }\n\n public onContentAnimationStart() {\n this.isAnimating = true;\n }\n\n public onContentAnimationDone() {\n this.isAnimating = false;\n\n this._emitPanelEvent();\n }\n\n private _emitPanelEvent() {\n if (this.isOpen) {\n this.panelOpened.emit();\n } else {\n this.panelClosed.emit();\n }\n }\n}\n\n","<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div class=\"header\">\n <div\n class=\"header__trigger\"\n role=\"button\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"'accordion-panel-content-' + panelId\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"onTabClick()\"\n (keydown)=\"onHeaderKeydown($event)\"\n >\n <span\n class=\"icon fas\"\n [class.fa-minus]=\"isOpen\"\n [class.fa-plus]=\"!isOpen\"\n aria-hidden=\"true\"\n >\n </span>\n @if (validationMessage) {\n <span\n class=\"exclamation-icon\"\n [class]=\"validationMessageIcon\"\n [sTooltip]=\"validationMessage\"\n [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n aria-hidden=\"true\"\n >\n </span>\n }\n <span class=\"title\" [id]=\"'accordion-panel-header-' + panelId\">{{ header }}</span>\n </div>\n <div class=\"header__controls\">\n @if (badgeConfig) {\n <s-badge\n [color]=\"badgeConfig.color\"\n [text]=\"badgeConfig.text\"\n ></s-badge>\n }\n\n @for (button of buttons; track button.icon) {\n <button\n class=\"icon-button\"\n [ngClass]=\"button.icon\"\n [attr.aria-label]=\"button.label\"\n (click)=\"onIconButtonsClick($event, button.onClick)\"\n ></button>\n }\n\n @if (switchControl) {\n <s-switch\n class=\"switch\"\n [formControl]=\"switchControl\"\n (click)=\"$event.stopPropagation()\"\n >\n </s-switch>\n }\n </div>\n </div>\n\n @if (cache) {\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion-panel-header-' + panelId\"\n [id]=\"'accordion-panel-content-' + panelId\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion-panel-header-' + panelId\"\n [id]=\"'accordion-panel-content-' + panelId\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #panelContent>\n <ng-content></ng-content>\n</ng-template>\n\n","import {\n AfterContentInit,\n OnChanges,\n Component,\n ContentChildren,\n Input,\n QueryList,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\n\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @description Componente de acordeão que gerencia a abertura e o fechamento de painéis\n * {@link AccordionPanelComponent}. Suporta modo de painel único (apenas um aberto por vez)\n * ou modo múltiplo (vários painéis abertos simultaneamente), configurável via input `multiple`.\n *\n * @example\n * ```html\n * <s-accordion [multiple]=\"false\" [activeIndex]=\"0\">\n * <s-accordion-panel header=\"Seção 1\">Conteúdo 1</s-accordion-panel>\n * <s-accordion-panel header=\"Seção 2\">Conteúdo 2</s-accordion-panel>\n * </s-accordion>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class AccordionComponent implements AfterContentInit, OnChanges, OnDestroy {\n /**\n * @description Índice (ou lista de índices) do(s) painel(is) que devem iniciar abertos.\n * Aceita um número para painel único ou um array de números para o modo múltiplo.\n */\n @Input()\n public activeIndex?: number | number[];\n\n /**\n * @description Permite que múltiplos painéis estejam abertos ao mesmo tempo.\n * Quando `false`, abrir um painel fecha automaticamente o anterior.\n *\n * @default false\n */\n @Input()\n public multiple = false;\n\n @ContentChildren(AccordionPanelComponent)\n public panelsComponents?: QueryList<AccordionPanelComponent>;\n\n private readonly _unsubscribe$ = new Subject<void>();\n private _panels: AccordionPanelComponent[] = [];\n private _openSubs: Subscription[] = [];\n\n public ngAfterContentInit(): void {\n if (this.panelsComponents) {\n this._panels = this.panelsComponents?.toArray();\n }\n\n this._openSubs = Array.from({ length: this._panels.length });\n\n this._setBehavior(this.multiple);\n this._setupTabs();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['multiple']) {\n this._setBehavior(changes['multiple'].currentValue);\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n private _setupTabs(): void {\n if (this._panels?.length) {\n if (this.activeIndex !== undefined && this.activeIndex !== null) {\n const activeTabs = Array.isArray(this.activeIndex)\n ? this._panels.filter((_, index) => (this.activeIndex as number[]).includes(index))\n : [this._panels[this.activeIndex]];\n\n if (activeTabs.length === 0) {\n throw new Error('activeIndex does not represent any panel.');\n }\n\n for (const activeTab of activeTabs) {\n if (!activeTab.disabled) {\n activeTab.isOpen = true;\n }\n }\n }\n }\n }\n\n private _closeOtherTabs(exception: number) {\n this._panels.forEach((panel, index) => {\n if (index !== exception) {\n panel.isOpen = false;\n }\n });\n }\n\n private _setBehavior(multiple: boolean): void {\n if (multiple) {\n this._enableMultiplePanelBehavior();\n } else {\n this._enableSinglePanelBehavior();\n }\n }\n\n private _enableSinglePanelBehavior() {\n this._panels.forEach((panel, index) => {\n this._openSubs[index] = panel.panelOpened.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\n this._closeOtherTabs(index);\n });\n });\n }\n\n private _enableMultiplePanelBehavior() {\n this._panels.forEach((_, index) => {\n if (this._openSubs[index]) {\n this._openSubs[index].unsubscribe();\n }\n });\n }\n}\n\n","<div class=\"accordion\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { SwitchModule } from '@seniorsistemas/angular-components/switch';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TooltipModule, SwitchModule, BadgeModule],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent],\n})\nexport class AccordionModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|