@seniorsistemas/data-seniorx-core 2.1.0 → 2.2.0
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/core/constants/chips.const.d.ts +1 -0
- package/core/constants/combobox.const.d.ts +1 -1
- package/core/constants/fileupload.const.d.ts +9 -0
- package/core/constants/icon-picker.const.d.ts +1 -0
- package/core/constants/picklist.const.d.ts +1 -0
- package/core/constants/table.const.d.ts +43 -0
- package/core/types/button.type.d.ts +18 -2
- package/core/types/fileupload.type.d.ts +17 -0
- package/core/types/filters.type.d.ts +4 -0
- package/core/types/table-column.type.d.ts +31 -0
- package/core/types/table-options.type.d.ts +90 -0
- package/core/types/table-shared.type.d.ts +13 -0
- package/core/types/table-visual.type.d.ts +23 -0
- package/core/types/table.type.d.ts +4 -113
- package/core/utils/layout.util.d.ts +4 -0
- package/esm2022/core/constants/chips.const.mjs +2 -1
- package/esm2022/core/constants/combobox.const.mjs +2 -2
- package/esm2022/core/constants/fileupload.const.mjs +10 -0
- package/esm2022/core/constants/icon-picker.const.mjs +76 -1
- package/esm2022/core/constants/picklist.const.mjs +2 -1
- package/esm2022/core/constants/table.const.mjs +53 -6
- package/esm2022/core/types/button.type.mjs +1 -1
- package/esm2022/core/types/fileupload.type.mjs +2 -0
- package/esm2022/core/types/filters.type.mjs +1 -1
- package/esm2022/core/types/table-column.type.mjs +2 -0
- package/esm2022/core/types/table-options.type.mjs +2 -0
- package/esm2022/core/types/table-shared.type.mjs +2 -0
- package/esm2022/core/types/table-visual.type.mjs +2 -0
- package/esm2022/core/types/table.type.mjs +1 -1
- package/esm2022/core/utils/combobox.util.mjs +2 -2
- package/esm2022/core/utils/layout.util.mjs +21 -5
- package/esm2022/features/accordion/accordion-item.component.mjs +1 -1
- package/esm2022/features/badge/badge.component.mjs +1 -1
- package/esm2022/features/button/button.component.mjs +76 -11
- package/esm2022/features/button/components/button-menu.component.mjs +81 -0
- package/esm2022/features/card-list/card/card.component.mjs +3 -3
- package/esm2022/features/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/features/chips/chips.component.mjs +8 -5
- package/esm2022/features/color-picker/color-picker.component.mjs +1 -1
- package/esm2022/features/combobox/combobox.component.mjs +17 -4
- package/esm2022/features/fileupload/fileupload.component.mjs +311 -0
- package/esm2022/features/filters/filters.component.mjs +3 -3
- package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
- package/esm2022/features/icon-picker/icon-picker.component.mjs +34 -7
- package/esm2022/features/info-sign/info-sign.component.mjs +1 -1
- package/esm2022/features/mask/mask.component.mjs +1 -1
- package/esm2022/features/modal/modal.component.mjs +1 -1
- package/esm2022/features/number-input/number-input.component.mjs +1 -1
- package/esm2022/features/paginator/paginator.component.mjs +3 -3
- package/esm2022/features/picklist/picklist.component.mjs +33 -6
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
- package/esm2022/features/searchbox/searchbox.component.mjs +3 -3
- package/esm2022/features/stats-card/stats-card.component.mjs +1 -1
- package/esm2022/features/switch/switch.component.mjs +3 -2
- package/esm2022/features/table/components/table-actions-menu.component.mjs +86 -0
- package/esm2022/features/table/components/table-cell-content.component.mjs +124 -0
- package/esm2022/features/table/components/table-sort-indicator.component.mjs +65 -0
- package/esm2022/features/table/table.component.mjs +116 -319
- package/esm2022/features/table/utils/table-config.util.mjs +35 -0
- package/esm2022/features/table/utils/table-data.util.mjs +96 -0
- package/esm2022/features/table/utils/table-layout.util.mjs +25 -0
- package/esm2022/features/table/utils/table-truncate.pipe.mjs +19 -0
- package/esm2022/features/table/utils/table-visual.util.mjs +221 -0
- package/esm2022/features/textarea/textarea.component.mjs +1 -1
- package/esm2022/features/textbox/textbox.component.mjs +1 -1
- package/esm2022/features/tooltip/tooltip.component.mjs +12 -3
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2 -2
- package/esm2022/locales/en.json +194 -0
- package/esm2022/locales/es-CO.json +187 -1
- package/esm2022/locales/pt.json +194 -0
- package/esm2022/providers/features.provider.mjs +3 -1
- package/esm2022/public-api.mjs +3 -1
- package/features/button/button.component.d.ts +14 -7
- package/features/button/components/button-menu.component.d.ts +25 -0
- package/features/chips/chips.component.d.ts +1 -0
- package/features/combobox/combobox.component.d.ts +4 -1
- package/features/fileupload/fileupload.component.d.ts +66 -0
- package/features/icon-picker/icon-picker.component.d.ts +3 -0
- package/features/modal/modal.component.d.ts +1 -1
- package/features/picklist/picklist.component.d.ts +6 -1
- package/features/table/components/table-actions-menu.component.d.ts +12 -0
- package/features/table/components/table-cell-content.component.d.ts +41 -0
- package/features/table/components/table-sort-indicator.component.d.ts +11 -0
- package/features/table/table.component.d.ts +28 -44
- package/features/table/utils/table-config.util.d.ts +3 -0
- package/features/table/utils/table-data.util.d.ts +10 -0
- package/features/table/utils/table-layout.util.d.ts +4 -0
- package/features/table/utils/table-truncate.pipe.d.ts +12 -0
- package/features/table/utils/table-visual.util.d.ts +21 -0
- package/features/tooltip/tooltip.component.d.ts +3 -1
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +3525 -1848
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +5 -2
- package/src/locales/en.json +194 -0
- package/src/locales/es-CO.json +187 -1
- package/src/locales/pt.json +194 -0
|
@@ -92,11 +92,11 @@ export class HyperlinkComponent {
|
|
|
92
92
|
return typeof value === 'string' && value.trim().length > 0;
|
|
93
93
|
}
|
|
94
94
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HyperlinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: HyperlinkComponent, isStandalone: true, selector: "sdc-hyperlink", inputs: { href: "href", text: "text", ariaLabel: "ariaLabel", domainFilterToken: "domainFilterToken", icon: "icon", iconPosition: "iconPosition", color: "color", target: "target", rel: "rel", disabled: "disabled", underline: "underline", appearance: "appearance", hoverStyle: "hoverStyle" }, outputs: { clicked: "clicked", domainFilterClick: "domainFilterClick" }, ngImport: i0, template: "@if (isAnchor) {\n <a\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.href]=\"resolvedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [attr.aria-disabled]=\"disabled\"\n [attr.tabindex]=\"disabled ? -1 : null\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </a>\n} @else {\n <button\n type=\"button\"\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [disabled]=\"disabled\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </button>\n}", styles: [".hyperlink{--sdc-hyperlink-link-color: var(--sdc-hyperlink-current-color, var(--sdc-link-color, var(--s-color-primary-600, #2b7de9)));--sdc-hyperlink-neutral-color: var(--sdc-hyperlink-current-color, var(--s-color-neutral-900, #1f2937));--sdc-hyperlink-hover-button-bg-link: var(--s-color-primary-50, #eef6ff);--sdc-hyperlink-hover-button-bg-neutral: var(--s-color-neutral-100, #f3f4f6);display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:24px;min-height:24px;padding:0;border:none;background:transparent;font:inherit;line-height:1.25rem;text-decoration:none;cursor:pointer;border-radius:.375rem;color:var(--sdc-hyperlink-link-color);transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,opacity .2s ease}.hyperlink--button-element{appearance:none}.hyperlink--neutral{color:var(--sdc-hyperlink-neutral-color)}.hyperlink__icon{flex:0 0 auto;color:currentColor;line-height:1
|
|
95
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: HyperlinkComponent, isStandalone: true, selector: "sdc-hyperlink", inputs: { href: "href", text: "text", ariaLabel: "ariaLabel", domainFilterToken: "domainFilterToken", icon: "icon", iconPosition: "iconPosition", color: "color", target: "target", rel: "rel", disabled: "disabled", underline: "underline", appearance: "appearance", hoverStyle: "hoverStyle" }, outputs: { clicked: "clicked", domainFilterClick: "domainFilterClick" }, ngImport: i0, template: "@if (isAnchor) {\n <a\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.href]=\"resolvedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [attr.aria-disabled]=\"disabled\"\n [attr.tabindex]=\"disabled ? -1 : null\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </a>\n} @else {\n <button\n type=\"button\"\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [disabled]=\"disabled\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </button>\n}", styles: [".hyperlink{--sdc-hyperlink-link-color: var(--sdc-hyperlink-current-color, var(--sdc-link-color, var(--s-color-primary-600, #2b7de9)));--sdc-hyperlink-neutral-color: var(--sdc-hyperlink-current-color, var(--s-color-neutral-900, #1f2937));--sdc-hyperlink-hover-button-bg-link: var(--s-color-primary-50, #eef6ff);--sdc-hyperlink-hover-button-bg-neutral: var(--s-color-neutral-100, #f3f4f6);display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:24px;min-height:24px;padding:0;border:none;background:transparent;font:inherit;line-height:1.25rem;text-decoration:none;cursor:pointer;border-radius:.375rem;color:var(--sdc-hyperlink-link-color);transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,opacity .2s ease}.hyperlink--button-element{appearance:none}.hyperlink--neutral{color:var(--sdc-hyperlink-neutral-color)}.hyperlink__icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:currentColor;font-size:1em;line-height:1}.hyperlink__text{line-height:1;text-decoration:none;text-decoration-color:currentColor;text-underline-offset:.18em;text-decoration-thickness:1px}.hyperlink--underline .hyperlink__text{text-decoration-line:underline}.hyperlink--hover-underline:hover .hyperlink__text,.hyperlink--hover-underline:focus-visible .hyperlink__text{text-decoration-line:underline}.hyperlink--hover-button{padding:.375rem .625rem;border-radius:9999px}.hyperlink--hover-button:hover,.hyperlink--hover-button:focus-visible{background:var(--sdc-hyperlink-hover-button-bg-link);text-decoration:none}.hyperlink--hover-button.hyperlink--neutral:hover,.hyperlink--hover-button.hyperlink--neutral:focus-visible{background:var(--sdc-hyperlink-hover-button-bg-neutral)}.hyperlink--hover-none:hover .hyperlink__text,.hyperlink--hover-none:focus-visible .hyperlink__text{text-decoration:none}.hyperlink:visited{color:inherit}.hyperlink:focus-visible{outline:2px solid currentColor;outline-offset:2px}.hyperlink--disabled,.hyperlink:disabled{opacity:.56;cursor:not-allowed;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
96
96
|
}
|
|
97
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HyperlinkComponent, decorators: [{
|
|
98
98
|
type: Component,
|
|
99
|
-
args: [{ imports: [CommonModule, TranslateModule], standalone: true, selector: 'sdc-hyperlink', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "@if (isAnchor) {\n <a\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.href]=\"resolvedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [attr.aria-disabled]=\"disabled\"\n [attr.tabindex]=\"disabled ? -1 : null\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </a>\n} @else {\n <button\n type=\"button\"\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [disabled]=\"disabled\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </button>\n}", styles: [".hyperlink{--sdc-hyperlink-link-color: var(--sdc-hyperlink-current-color, var(--sdc-link-color, var(--s-color-primary-600, #2b7de9)));--sdc-hyperlink-neutral-color: var(--sdc-hyperlink-current-color, var(--s-color-neutral-900, #1f2937));--sdc-hyperlink-hover-button-bg-link: var(--s-color-primary-50, #eef6ff);--sdc-hyperlink-hover-button-bg-neutral: var(--s-color-neutral-100, #f3f4f6);display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:24px;min-height:24px;padding:0;border:none;background:transparent;font:inherit;line-height:1.25rem;text-decoration:none;cursor:pointer;border-radius:.375rem;color:var(--sdc-hyperlink-link-color);transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,opacity .2s ease}.hyperlink--button-element{appearance:none}.hyperlink--neutral{color:var(--sdc-hyperlink-neutral-color)}.hyperlink__icon{flex:0 0 auto;color:currentColor;line-height:1
|
|
99
|
+
args: [{ imports: [CommonModule, TranslateModule], standalone: true, selector: 'sdc-hyperlink', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "@if (isAnchor) {\n <a\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.href]=\"resolvedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [attr.aria-disabled]=\"disabled\"\n [attr.tabindex]=\"disabled ? -1 : null\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </a>\n} @else {\n <button\n type=\"button\"\n class=\"hyperlink\"\n [ngClass]=\"rootClasses\"\n [ngStyle]=\"customStyles\"\n [attr.aria-label]=\"resolvedAriaLabel | translate\"\n [disabled]=\"disabled\"\n (click)=\"handleInteraction($event)\"\n >\n @if (iconPosition === 'left' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n\n <span class=\"hyperlink__text\">{{ resolvedText | translate }}</span>\n\n @if (iconPosition === 'right' && showIcon) {\n <i [class]=\"iconClass\" class=\"hyperlink__icon\" aria-hidden=\"true\"></i>\n }\n </button>\n}", styles: [".hyperlink{--sdc-hyperlink-link-color: var(--sdc-hyperlink-current-color, var(--sdc-link-color, var(--s-color-primary-600, #2b7de9)));--sdc-hyperlink-neutral-color: var(--sdc-hyperlink-current-color, var(--s-color-neutral-900, #1f2937));--sdc-hyperlink-hover-button-bg-link: var(--s-color-primary-50, #eef6ff);--sdc-hyperlink-hover-button-bg-neutral: var(--s-color-neutral-100, #f3f4f6);display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:24px;min-height:24px;padding:0;border:none;background:transparent;font:inherit;line-height:1.25rem;text-decoration:none;cursor:pointer;border-radius:.375rem;color:var(--sdc-hyperlink-link-color);transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,opacity .2s ease}.hyperlink--button-element{appearance:none}.hyperlink--neutral{color:var(--sdc-hyperlink-neutral-color)}.hyperlink__icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:currentColor;font-size:1em;line-height:1}.hyperlink__text{line-height:1;text-decoration:none;text-decoration-color:currentColor;text-underline-offset:.18em;text-decoration-thickness:1px}.hyperlink--underline .hyperlink__text{text-decoration-line:underline}.hyperlink--hover-underline:hover .hyperlink__text,.hyperlink--hover-underline:focus-visible .hyperlink__text{text-decoration-line:underline}.hyperlink--hover-button{padding:.375rem .625rem;border-radius:9999px}.hyperlink--hover-button:hover,.hyperlink--hover-button:focus-visible{background:var(--sdc-hyperlink-hover-button-bg-link);text-decoration:none}.hyperlink--hover-button.hyperlink--neutral:hover,.hyperlink--hover-button.hyperlink--neutral:focus-visible{background:var(--sdc-hyperlink-hover-button-bg-neutral)}.hyperlink--hover-none:hover .hyperlink__text,.hyperlink--hover-none:focus-visible .hyperlink__text{text-decoration:none}.hyperlink:visited{color:inherit}.hyperlink:focus-visible{outline:2px solid currentColor;outline-offset:2px}.hyperlink--disabled,.hyperlink:disabled{opacity:.56;cursor:not-allowed;pointer-events:none}\n"] }]
|
|
100
100
|
}], propDecorators: { href: [{
|
|
101
101
|
type: Input
|
|
102
102
|
}], text: [{
|
|
@@ -128,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
128
128
|
}], domainFilterClick: [{
|
|
129
129
|
type: Output
|
|
130
130
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlwZXJsaW5rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvaHlwZXJsaW5rL2h5cGVybGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2h5cGVybGluay9oeXBlcmxpbmsuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIscUNBQXFDLEVBQ3JDLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUMvQixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDOzs7O0FBbUI5QyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLElBQUksR0FBbUIsc0JBQXNCLENBQUM7SUFDOUMsSUFBSSxHQUFtQixzQkFBc0IsQ0FBQztJQUM5QyxTQUFTLEdBQW1CLDRCQUE0QixDQUFDO0lBQ3pELGlCQUFpQixHQUFtQixxQ0FBcUMsQ0FBQztJQUMxRSxJQUFJLEdBQW1CLHNCQUFzQixDQUFDO0lBQzlDLFlBQVksR0FBMEIsK0JBQStCLENBQUM7SUFDdEUsS0FBSyxDQUFVO0lBQ2YsTUFBTSxH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QUUsZUFBZSxDQUFDLGNBQzVCLElBQUksWUFDTixlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLFFBQVE7OEJBR2hDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgU1FMX0hFTFBFUiB9IGZyb20gJy4uLy4uL2NvcmUvaGVscGVycy9zcWwtaGVscGVyJztcbmltcG9ydCB7XG4gIERFRkFVTFRfSFlQRVJMSU5LX0FQUEVBUkFOQ0UsXG4gIERFRkFVTFRfSFlQRVJMSU5LX0FSSUFfTEFCRUwsXG4gIERFRkFVTFRfSFlQRVJMSU5LX0RJU0FCTEVELFxuICBERUZBVUxUX0hZUEVSTElOS19ET01BSU5fRklMVEVSX1RPS0VOLFxuICBERUZBVUxUX0hZUEVSTElOS19IT1ZFUl9TVFlMRSxcbiAgREVGQVVMVF9IWVBFUkxJTktfSFJFRixcbiAgREVGQVVMVF9IWVBFUkxJTktfSUNPTixcbiAgREVGQVVMVF9IWVBFUkxJTktfSUNPTl9QT1NJVElPTixcbiAgREVGQVVMVF9IWVBFUkxJTktfUkVMLFxuICBERUZBVUxUX0hZUEVSTElOS19UQVJHRVQsXG4gIERFRkFVTFRfSFlQRVJMSU5LX1RFWFQsXG4gIERFRkFVTFRfSFlQRVJMSU5LX1VOREVSTElORSxcbiAgSFlQRVJMSU5LX0NPTE9SX1ZBUixcbiAgSFlQRVJMSU5LX1JFTF9OT09QRU5FUlxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9oeXBlcmxpbmsuY29uc3QnO1xuaW1wb3J0IHR5cGUge1xuICBIeXBlcmxpbmtBcHBlYXJhbmNlLFxuICBIeXBlcmxpbmtIb3ZlclN0eWxlLFxuICBIeXBlcmxpbmtJY29uUG9zaXRpb24sXG4gIEh5cGVybGlua1RhcmdldCxcbiAgSHlwZXJsaW5rVW5kZXJsaW5lLFxuICBIeXBlcmxpbmtWYWx1ZVxufSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2h5cGVybGluay50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2RjLWh5cGVybGluaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9oeXBlcmxpbmsuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaHlwZXJsaW5rLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEh5cGVybGlua0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGhyZWY6IEh5cGVybGlua1ZhbHVlID0gREVGQVVMVF9IWVBFUkxJTktfSFJFRjtcbiAgQElucHV0KCkgdGV4dDogSHlwZXJsaW5rVmFsdWUgPSBERUZBVUxUX0hZUEVSTElOS19URVhUO1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IEh5cGVybGlua1ZhbHVlID0gREVGQVVMVF9IWVBFUkxJTktfQVJJQV9MQUJFTDtcbiAgQElucHV0KCkgZG9tYWluRmlsdGVyVG9rZW46IEh5cGVybGlua1ZhbHVlID0gREVGQVVMVF9IWVBFUkxJTktfRE9NQUlOX0ZJTFRFUl9UT0tFTjtcbiAgQElucHV0KCkgaWNvbjogSHlwZXJsaW5rVmFsdWUgPSBERUZBVUxUX0hZUEVSTElOS19JQ09OO1xuICBASW5wdXQoKSBpY29uUG9zaXRpb246IEh5cGVybGlua0ljb25Qb3NpdGlvbiA9IERFRkFVTFRfSFlQRVJMSU5LX0lDT05fUE9TSVRJT047XG4gIEBJbnB1dCgpIGNvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSB0YXJnZXQ6IEh5cGVybGlua1RhcmdldCA9IERFRkFVTFRfSFlQRVJMSU5LX1RBUkdFVDtcbiAgQElucHV0KCkgcmVsID0gREVGQVVMVF9IWVBFUkxJTktfUkVMO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IERFRkFVTFRfSFlQRVJMSU5LX0RJU0FCTEVEO1xuICBASW5wdXQoKSB1bmRlcmxpbmU6IEh5cGVybGlua1VuZGVybGluZSA9IERFRkFVTFRfSFlQRVJMSU5LX1VOREVSTElORTtcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogSHlwZXJsaW5rQXBwZWFyYW5jZSA9IERFRkFVTFRfSFlQRVJMSU5LX0FQUEVBUkFOQ0U7XG4gIEBJbnB1dCgpIGhvdmVyU3R5bGU6IEh5cGVybGlua0hvdmVyU3R5bGUgPSBERUZBVUxUX0hZUEVSTElOS19IT1ZFUl9TVFlMRTtcblxuICBAT3V0cHV0KCkgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBkb21haW5GaWx0ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBpc0FuY2hvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNDb250ZW50KHRoaXMuaHJlZik7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRIcmVmKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmhhc0NvbnRlbnQodGhpcy5ocmVmKSA/ICh0aGlzLmhyZWYgYXMgc3RyaW5nKS50cmltKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhhc0NvbnRlbnQodGhpcy50ZXh0KSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRleHQgYXMgc3RyaW5nKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCh0aGlzLmRvbWFpbkZpbHRlclRva2VuKSkge1xuICAgICAgcmV0dXJuIFNRTF9IRUxQRVIuZm9ybWF0RG9tYWluRmlsdGVyVG9rZW4oKHRoaXMuZG9tYWluRmlsdGVyVG9rZW4gYXMgc3RyaW5nKS50cmltKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBERUZBVUxUX0hZUEVSTElOS19URVhUO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCh0aGlzLmFyaWFMYWJlbCkpIHtcbiAgICAgIHJldHVybiAodGhpcy5hcmlhTGFiZWwgYXMgc3RyaW5nKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCh0aGlzLnRleHQpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudGV4dCBhcyBzdHJpbmcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDb250ZW50KHRoaXMuZG9tYWluRmlsdGVyVG9rZW4pKSB7XG4gICAgICByZXR1cm4gU1FMX0hFTFBFUi5mb3JtYXREb21haW5GaWx0ZXJUb2tlbigodGhpcy5kb21haW5GaWx0ZXJUb2tlbiBhcyBzdHJpbmcpLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIERFRkFVTFRfSFlQRVJMSU5LX0FSSUFfTEFCRUw7XG4gIH1cblxuICBnZXQgc2hvd0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQ29udGVudCh0aGlzLmljb24pO1xuICB9XG5cbiAgZ2V0IGljb25DbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNob3dJY29uID8gKCh0aGlzLmljb24gYXMgc3RyaW5nKS50cmltKCkgfHwgJycpIDogJyc7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRSZWwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucmVsLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVsLnRyaW0oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YXJnZXQgPT09ICdfYmxhbmsnID8gSFlQRVJMSU5LX1JFTF9OT09QRU5FUiA6IG51bGw7XG4gIH1cblxuICBnZXQgcm9vdENsYXNzZXMoKTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4ge1xuICAgIHJldHVybiB7XG4gICAgICAnaHlwZXJsaW5rLS1uZXV0cmFsJzogdGhpcy5hcHBlYXJhbmNlID09PSAnbmV1dHJhbCcsXG4gICAgICAnaHlwZXJsaW5rLS11bmRlcmxpbmUnOiB0aGlzLnVuZGVybGluZSA9PT0gJ2Fsd2F5cycsXG4gICAgICAnaHlwZXJsaW5rLS1ob3Zlci11bmRlcmxpbmUnOiB0aGlzLmhvdmVyU3R5bGUgPT09ICd1bmRlcmxpbmUnICYmIHRoaXMudW5kZXJsaW5lID09PSAnbm9uZScsXG4gICAgICAnaHlwZXJsaW5rLS1ob3Zlci1idXR0b24nOiB0aGlzLmhvdmVyU3R5bGUgPT09ICdidXR0b24nLFxuICAgICAgJ2h5cGVybGluay0taG92ZXItbm9uZSc6IHRoaXMuaG92ZXJTdHlsZSA9PT0gJ25vbmUnLFxuICAgICAgJ2h5cGVybGluay0tZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2h5cGVybGluay0tYnV0dG9uLWVsZW1lbnQnOiAhdGhpcy5pc0FuY2hvclxuICAgIH07XG4gIH1cblxuICBnZXQgY3VzdG9tU3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgW0hZUEVSTElOS19DT0xPUl9WQVJdOiB0aGlzLmNvbG9yPy50cmltKCkgfHwgbnVsbFxuICAgIH07XG4gIH1cblxuICBoYW5kbGVJbnRlcmFjdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xpY2tlZC5lbWl0KGV2ZW50KTtcblxuICAgIGlmICh0aGlzLmhhc0NvbnRlbnQodGhpcy5kb21haW5GaWx0ZXJUb2tlbikpIHtcbiAgICAgIHRoaXMuZG9tYWluRmlsdGVyQ2xpY2suZW1pdCgodGhpcy5kb21haW5GaWx0ZXJUb2tlbiBhcyBzdHJpbmcpLnRyaW0oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNDb250ZW50KHZhbHVlOiBIeXBlcmxpbmtWYWx1ZSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gIH1cbn0iLCJAaWYgKGlzQW5jaG9yKSB7XG4gIDxhXG4gICAgY2xhc3M9XCJoeXBlcmxpbmtcIlxuICAgIFtuZ0NsYXNzXT1cInJvb3RDbGFzc2VzXCJcbiAgICBbbmdTdHlsZV09XCJjdXN0b21TdHlsZXNcIlxuICAgIFthdHRyLmhyZWZdPVwicmVzb2x2ZWRIcmVmXCJcbiAgICBbYXR0ci50YXJnZXRdPVwidGFyZ2V0XCJcbiAgICBbYXR0ci5yZWxdPVwiY29tcHV0ZWRSZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb2x2ZWRBcmlhTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiBudWxsXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlSW50ZXJhY3Rpb24oJGV2ZW50KVwiXG4gID5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnICYmIHNob3dJY29uKSB7XG4gICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCIgY2xhc3M9XCJoeXBlcmxpbmtfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgfVxuXG4gICAgPHNwYW4gY2xhc3M9XCJoeXBlcmxpbmtfX3RleHRcIj57eyByZXNvbHZlZFRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiBzaG93SWNvbikge1xuICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiIGNsYXNzPVwiaHlwZXJsaW5rX19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIH1cbiAgPC9hPlxufSBAZWxzZSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImh5cGVybGlua1wiXG4gICAgW25nQ2xhc3NdPVwicm9vdENsYXNzZXNcIlxuICAgIFtuZ1N0eWxlXT1cImN1c3RvbVN0eWxlc1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZEFyaWFMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlSW50ZXJhY3Rpb24oJGV2ZW50KVwiXG4gID5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnICYmIHNob3dJY29uKSB7XG4gICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCIgY2xhc3M9XCJoeXBlcmxpbmtfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgfVxuXG4gICAgPHNwYW4gY2xhc3M9XCJoeXBlcmxpbmtfX3RleHRcIj57eyByZXNvbHZlZFRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiBzaG93SWNvbikge1xuICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiIGNsYXNzPVwiaHlwZXJsaW5rX19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIH1cbiAgPC9idXR0b24+XG59Il19
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlwZXJsaW5rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvaHlwZXJsaW5rL2h5cGVybGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2h5cGVybGluay9oeXBlcmxpbmsuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIscUNBQXFDLEVBQ3JDLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUMvQixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDOzs7O0FBbUI5QyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLElBQUksR0FBbUIsc0JBQXNCLENBQUM7SUFDOUMsSUFBSSxHQUFtQixzQkFBc0IsQ0FBQztJQUM5QyxTQUFTLEdBQW1CLDRCQUE0QixDQUFDO0lBQ3pELGlCQUFpQixHQUFtQixxQ0FBcUMsQ0FBQztJQUMxRSxJQUFJLEdBQW1CLHNCQUFzQixDQUFDO0lBQzlDLFlBQVksR0FBMEIsK0JBQStCLENBQUM7SUFDdEUsS0FBSyxDQUFVO0lBQ2YsTUFBTSxH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QUUsZUFBZSxDQUFDLGNBQzVCLElBQUksWUFDTixlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLFFBQVE7OEJBR2hDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgU1FMX0hFTFBFUiB9IGZyb20gJy4uLy4uL2NvcmUvaGVscGVycy9zcWwtaGVscGVyJztcbmltcG9ydCB7XG4gIERFRkFVTFRfSFlQRVJMSU5LX0FQUEVBUkFOQ0UsXG4gIERFRkFVTFRfSFlQRVJMSU5LX0FSSUFfTEFCRUwsXG4gIERFRkFVTFRfSFlQRVJMSU5LX0RJU0FCTEVELFxuICBERUZBVUxUX0hZUEVSTElOS19ET01BSU5fRklMVEVSX1RPS0VOLFxuICBERUZBVUxUX0hZUEVSTElOS19IT1ZFUl9TVFlMRSxcbiAgREVGQVVMVF9IWVBFUkxJTktfSFJFRixcbiAgREVGQVVMVF9IWVBFUkxJTktfSUNPTixcbiAgREVGQVVMVF9IWVBFUkxJTktfSUNPTl9QT1NJVElPTixcbiAgREVGQVVMVF9IWVBFUkxJTktfUkVMLFxuICBERUZBVUxUX0hZUEVSTElOS19UQVJHRVQsXG4gIERFRkFVTFRfSFlQRVJMSU5LX1RFWFQsXG4gIERFRkFVTFRfSFlQRVJMSU5LX1VOREVSTElORSxcbiAgSFlQRVJMSU5LX0NPTE9SX1ZBUixcbiAgSFlQRVJMSU5LX1JFTF9OT09QRU5FUlxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9oeXBlcmxpbmsuY29uc3QnO1xuaW1wb3J0IHR5cGUge1xuICBIeXBlcmxpbmtBcHBlYXJhbmNlLFxuICBIeXBlcmxpbmtIb3ZlclN0eWxlLFxuICBIeXBlcmxpbmtJY29uUG9zaXRpb24sXG4gIEh5cGVybGlua1RhcmdldCxcbiAgSHlwZXJsaW5rVW5kZXJsaW5lLFxuICBIeXBlcmxpbmtWYWx1ZVxufSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2h5cGVybGluay50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2RjLWh5cGVybGluaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9oeXBlcmxpbmsuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaHlwZXJsaW5rLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEh5cGVybGlua0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGhyZWY6IEh5cGVybGlua1ZhbHVlID0gREVGQVVMVF9IWVBFUkxJTktfSFJFRjtcbiAgQElucHV0KCkgdGV4dDogSHlwZXJsaW5rVmFsdWUgPSBERUZBVUxUX0hZUEVSTElOS19URVhUO1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IEh5cGVybGlua1ZhbHVlID0gREVGQVVMVF9IWVBFUkxJTktfQVJJQV9MQUJFTDtcbiAgQElucHV0KCkgZG9tYWluRmlsdGVyVG9rZW46IEh5cGVybGlua1ZhbHVlID0gREVGQVVMVF9IWVBFUkxJTktfRE9NQUlOX0ZJTFRFUl9UT0tFTjtcbiAgQElucHV0KCkgaWNvbjogSHlwZXJsaW5rVmFsdWUgPSBERUZBVUxUX0hZUEVSTElOS19JQ09OO1xuICBASW5wdXQoKSBpY29uUG9zaXRpb246IEh5cGVybGlua0ljb25Qb3NpdGlvbiA9IERFRkFVTFRfSFlQRVJMSU5LX0lDT05fUE9TSVRJT047XG4gIEBJbnB1dCgpIGNvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSB0YXJnZXQ6IEh5cGVybGlua1RhcmdldCA9IERFRkFVTFRfSFlQRVJMSU5LX1RBUkdFVDtcbiAgQElucHV0KCkgcmVsID0gREVGQVVMVF9IWVBFUkxJTktfUkVMO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IERFRkFVTFRfSFlQRVJMSU5LX0RJU0FCTEVEO1xuICBASW5wdXQoKSB1bmRlcmxpbmU6IEh5cGVybGlua1VuZGVybGluZSA9IERFRkFVTFRfSFlQRVJMSU5LX1VOREVSTElORTtcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogSHlwZXJsaW5rQXBwZWFyYW5jZSA9IERFRkFVTFRfSFlQRVJMSU5LX0FQUEVBUkFOQ0U7XG4gIEBJbnB1dCgpIGhvdmVyU3R5bGU6IEh5cGVybGlua0hvdmVyU3R5bGUgPSBERUZBVUxUX0hZUEVSTElOS19IT1ZFUl9TVFlMRTtcblxuICBAT3V0cHV0KCkgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBkb21haW5GaWx0ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBpc0FuY2hvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNDb250ZW50KHRoaXMuaHJlZik7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRIcmVmKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmhhc0NvbnRlbnQodGhpcy5ocmVmKSA/ICh0aGlzLmhyZWYgYXMgc3RyaW5nKS50cmltKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhhc0NvbnRlbnQodGhpcy50ZXh0KSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRleHQgYXMgc3RyaW5nKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCh0aGlzLmRvbWFpbkZpbHRlclRva2VuKSkge1xuICAgICAgcmV0dXJuIFNRTF9IRUxQRVIuZm9ybWF0RG9tYWluRmlsdGVyVG9rZW4oKHRoaXMuZG9tYWluRmlsdGVyVG9rZW4gYXMgc3RyaW5nKS50cmltKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBERUZBVUxUX0hZUEVSTElOS19URVhUO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCh0aGlzLmFyaWFMYWJlbCkpIHtcbiAgICAgIHJldHVybiAodGhpcy5hcmlhTGFiZWwgYXMgc3RyaW5nKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ29udGVudCh0aGlzLnRleHQpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudGV4dCBhcyBzdHJpbmcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDb250ZW50KHRoaXMuZG9tYWluRmlsdGVyVG9rZW4pKSB7XG4gICAgICByZXR1cm4gU1FMX0hFTFBFUi5mb3JtYXREb21haW5GaWx0ZXJUb2tlbigodGhpcy5kb21haW5GaWx0ZXJUb2tlbiBhcyBzdHJpbmcpLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIERFRkFVTFRfSFlQRVJMSU5LX0FSSUFfTEFCRUw7XG4gIH1cblxuICBnZXQgc2hvd0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQ29udGVudCh0aGlzLmljb24pO1xuICB9XG5cbiAgZ2V0IGljb25DbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNob3dJY29uID8gKCh0aGlzLmljb24gYXMgc3RyaW5nKS50cmltKCkgfHwgJycpIDogJyc7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRSZWwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucmVsLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVsLnRyaW0oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YXJnZXQgPT09ICdfYmxhbmsnID8gSFlQRVJMSU5LX1JFTF9OT09QRU5FUiA6IG51bGw7XG4gIH1cblxuICBnZXQgcm9vdENsYXNzZXMoKTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4ge1xuICAgIHJldHVybiB7XG4gICAgICAnaHlwZXJsaW5rLS1uZXV0cmFsJzogdGhpcy5hcHBlYXJhbmNlID09PSAnbmV1dHJhbCcsXG4gICAgICAnaHlwZXJsaW5rLS11bmRlcmxpbmUnOiB0aGlzLnVuZGVybGluZSA9PT0gJ2Fsd2F5cycsXG4gICAgICAnaHlwZXJsaW5rLS1ob3Zlci11bmRlcmxpbmUnOiB0aGlzLmhvdmVyU3R5bGUgPT09ICd1bmRlcmxpbmUnICYmIHRoaXMudW5kZXJsaW5lID09PSAnbm9uZScsXG4gICAgICAnaHlwZXJsaW5rLS1ob3Zlci1idXR0b24nOiB0aGlzLmhvdmVyU3R5bGUgPT09ICdidXR0b24nLFxuICAgICAgJ2h5cGVybGluay0taG92ZXItbm9uZSc6IHRoaXMuaG92ZXJTdHlsZSA9PT0gJ25vbmUnLFxuICAgICAgJ2h5cGVybGluay0tZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2h5cGVybGluay0tYnV0dG9uLWVsZW1lbnQnOiAhdGhpcy5pc0FuY2hvclxuICAgIH07XG4gIH1cblxuICBnZXQgY3VzdG9tU3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgW0hZUEVSTElOS19DT0xPUl9WQVJdOiB0aGlzLmNvbG9yPy50cmltKCkgfHwgbnVsbFxuICAgIH07XG4gIH1cblxuICBoYW5kbGVJbnRlcmFjdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xpY2tlZC5lbWl0KGV2ZW50KTtcblxuICAgIGlmICh0aGlzLmhhc0NvbnRlbnQodGhpcy5kb21haW5GaWx0ZXJUb2tlbikpIHtcbiAgICAgIHRoaXMuZG9tYWluRmlsdGVyQ2xpY2suZW1pdCgodGhpcy5kb21haW5GaWx0ZXJUb2tlbiBhcyBzdHJpbmcpLnRyaW0oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNDb250ZW50KHZhbHVlOiBIeXBlcmxpbmtWYWx1ZSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gIH1cbn0iLCJAaWYgKGlzQW5jaG9yKSB7XG4gIDxhXG4gICAgY2xhc3M9XCJoeXBlcmxpbmtcIlxuICAgIFtuZ0NsYXNzXT1cInJvb3RDbGFzc2VzXCJcbiAgICBbbmdTdHlsZV09XCJjdXN0b21TdHlsZXNcIlxuICAgIFthdHRyLmhyZWZdPVwicmVzb2x2ZWRIcmVmXCJcbiAgICBbYXR0ci50YXJnZXRdPVwidGFyZ2V0XCJcbiAgICBbYXR0ci5yZWxdPVwiY29tcHV0ZWRSZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb2x2ZWRBcmlhTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiBudWxsXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlSW50ZXJhY3Rpb24oJGV2ZW50KVwiXG4gID5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnICYmIHNob3dJY29uKSB7XG4gICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCIgY2xhc3M9XCJoeXBlcmxpbmtfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgfVxuXG4gICAgPHNwYW4gY2xhc3M9XCJoeXBlcmxpbmtfX3RleHRcIj57eyByZXNvbHZlZFRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiBzaG93SWNvbikge1xuICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiIGNsYXNzPVwiaHlwZXJsaW5rX19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIH1cbiAgPC9hPlxufSBAZWxzZSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImh5cGVybGlua1wiXG4gICAgW25nQ2xhc3NdPVwicm9vdENsYXNzZXNcIlxuICAgIFtuZ1N0eWxlXT1cImN1c3RvbVN0eWxlc1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZEFyaWFMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlSW50ZXJhY3Rpb24oJGV2ZW50KVwiXG4gID5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnICYmIHNob3dJY29uKSB7XG4gICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCIgY2xhc3M9XCJoeXBlcmxpbmtfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgfVxuXG4gICAgPHNwYW4gY2xhc3M9XCJoeXBlcmxpbmtfX3RleHRcIj57eyByZXNvbHZlZFRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICBAaWYgKGljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiBzaG93SWNvbikge1xuICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiIGNsYXNzPVwiaHlwZXJsaW5rX19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIH1cbiAgPC9idXR0b24+XG59Il19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef, inject } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, forwardRef, inject } from '@angular/core';
|
|
3
3
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
5
5
|
import { Subject, Subscription, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
6
|
-
import { SDC_ICON_PICKER_BLOCKED_NAMES, SDC_ICON_PICKER_BLOCKED_TERMS, SDC_ICON_PICKER_PAGE_SIZE } from '../../core/constants/icon-picker.const';
|
|
6
|
+
import { SDC_ICON_PICKER_BLOCKED_NAMES, SDC_ICON_PICKER_BLOCKED_TERMS, SDC_ICON_PICKER_PAGE_SIZE, SDC_ICON_PICKER_PRIORITY_NAMES } from '../../core/constants/icon-picker.const';
|
|
7
7
|
import { IconSelectorDataService } from '../../core/services/icon-selector-data.service';
|
|
8
8
|
import { resolveNullableTranslatableText, resolveTranslatableText } from '../../core/utils/i18n.util';
|
|
9
9
|
import { nextSequentialId } from '../../core/utils/id.util';
|
|
@@ -75,6 +75,7 @@ export class IconPickerComponent {
|
|
|
75
75
|
subscriptions = new Subscription();
|
|
76
76
|
searchInput$ = new Subject();
|
|
77
77
|
generatedId = nextSequentialId('sdc-icon-picker');
|
|
78
|
+
searchboxEl;
|
|
78
79
|
label = '';
|
|
79
80
|
placeholder = '';
|
|
80
81
|
tooltip = null;
|
|
@@ -190,6 +191,13 @@ export class IconPickerComponent {
|
|
|
190
191
|
this.modalOpen = true;
|
|
191
192
|
this.cdr.markForCheck();
|
|
192
193
|
this.loadIconsIfNeeded();
|
|
194
|
+
this.focusSearchInput();
|
|
195
|
+
}
|
|
196
|
+
focusSearchInput() {
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
const input = this.searchboxEl?.nativeElement?.querySelector('input');
|
|
199
|
+
input?.focus();
|
|
200
|
+
});
|
|
193
201
|
}
|
|
194
202
|
onModalVisibleChange(visible) {
|
|
195
203
|
if (!visible) {
|
|
@@ -253,7 +261,7 @@ export class IconPickerComponent {
|
|
|
253
261
|
});
|
|
254
262
|
}
|
|
255
263
|
buildIconList(icons) {
|
|
256
|
-
|
|
264
|
+
const all = icons.reduce((result, icon) => {
|
|
257
265
|
if (!this.shouldIncludeIcon(icon)) {
|
|
258
266
|
return result;
|
|
259
267
|
}
|
|
@@ -265,6 +273,22 @@ export class IconPickerComponent {
|
|
|
265
273
|
});
|
|
266
274
|
return result;
|
|
267
275
|
}, []);
|
|
276
|
+
return this.sortByPriority(all);
|
|
277
|
+
}
|
|
278
|
+
sortByPriority(icons) {
|
|
279
|
+
const priorityIndex = new Map(SDC_ICON_PICKER_PRIORITY_NAMES.map((name, i) => [name, i]));
|
|
280
|
+
const prioritized = Array.from({ length: SDC_ICON_PICKER_PRIORITY_NAMES.length });
|
|
281
|
+
const rest = [];
|
|
282
|
+
for (const icon of icons) {
|
|
283
|
+
const idx = priorityIndex.get(icon.name);
|
|
284
|
+
if (idx !== undefined) {
|
|
285
|
+
prioritized[idx] = icon;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
rest.push(icon);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return [...prioritized.filter((item) => item !== undefined), ...rest];
|
|
268
292
|
}
|
|
269
293
|
applyFilter(term) {
|
|
270
294
|
const normalized = normalizeText(term);
|
|
@@ -336,7 +360,7 @@ export class IconPickerComponent {
|
|
|
336
360
|
useExisting: forwardRef(() => IconPickerComponent),
|
|
337
361
|
multi: true
|
|
338
362
|
}
|
|
339
|
-
], ngImport: i0, template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button type=\"button\" class=\"sdc-icon-picker__info-icon\" [attr.aria-label]=\"resolvedTooltip\">\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i [class]=\"'fas ' + pendingValue\" class=\"sdc-icon-picker__preview-icon\" aria-hidden=\"true\"></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"\n icon.label + ' - ' + icon.name\n \"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
363
|
+
], viewQueries: [{ propertyName: "searchboxEl", first: true, predicate: ["searchboxEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button type=\"button\" class=\"sdc-icon-picker__info-icon\" [attr.aria-label]=\"resolvedTooltip\">\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n #searchboxEl\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i [class]=\"'fas ' + pendingValue\" class=\"sdc-icon-picker__preview-icon\" aria-hidden=\"true\"></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"\n icon.label + ' - ' + icon.name\n \"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled", "allowHtml"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
340
364
|
}
|
|
341
365
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconPickerComponent, decorators: [{
|
|
342
366
|
type: Component,
|
|
@@ -354,8 +378,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
354
378
|
useExisting: forwardRef(() => IconPickerComponent),
|
|
355
379
|
multi: true
|
|
356
380
|
}
|
|
357
|
-
], template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button type=\"button\" class=\"sdc-icon-picker__info-icon\" [attr.aria-label]=\"resolvedTooltip\">\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i [class]=\"'fas ' + pendingValue\" class=\"sdc-icon-picker__preview-icon\" aria-hidden=\"true\"></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"\n icon.label + ' - ' + icon.name\n \"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"] }]
|
|
358
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
381
|
+
], template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button type=\"button\" class=\"sdc-icon-picker__info-icon\" [attr.aria-label]=\"resolvedTooltip\">\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n #searchboxEl\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i [class]=\"'fas ' + pendingValue\" class=\"sdc-icon-picker__preview-icon\" aria-hidden=\"true\"></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"\n icon.label + ' - ' + icon.name\n \"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"] }]
|
|
382
|
+
}], ctorParameters: () => [], propDecorators: { searchboxEl: [{
|
|
383
|
+
type: ViewChild,
|
|
384
|
+
args: ['searchboxEl', { read: ElementRef }]
|
|
385
|
+
}], label: [{
|
|
359
386
|
type: Input
|
|
360
387
|
}], placeholder: [{
|
|
361
388
|
type: Input
|
|
@@ -374,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
374
401
|
}], valueChange: [{
|
|
375
402
|
type: Output
|
|
376
403
|
}] } });
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9pY29uLXBpY2tlci9pY29uLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ljb24tcGlja2VyL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpGLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUMxQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENB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QixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDbkhILG81SkFnSkEscXJNRC9DSSxZQUFZLDhCQUNaLFdBQVcsOEJBQ1gsZUFBZSwrQkFDZixjQUFjLHlRQUNkLGtCQUFrQixvV0FDbEIsZ0JBQWdCLGtKQUNoQixlQUFlOzs0RkFjTixtQkFBbUI7a0JBeEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUSxhQUM5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBVVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX05BTUVTLFxuICBTRENfSUNPTl9QSUNLRVJfQkxPQ0tFRF9URVJNUyxcbiAgU0RDX0lDT05fUElDS0VSX1BBR0VfU0laRVxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9pY29uLXBpY2tlci5jb25zdCc7XG5pbXBvcnQgeyBJY29uU2VsZWN0b3JEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvaWNvbi1zZWxlY3Rvci1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBJY29uU2VsZWN0b3JJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9pY29uLXNlbGVjdG9yLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBJY29uUGlja2VySXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvaWNvbi1waWNrZXIudHlwZSc7XG5pbXBvcnQgeyByZXNvbHZlTnVsbGFibGVUcmFuc2xhdGFibGVUZXh0LCByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaTE4bi51dGlsJztcbmltcG9ydCB7IG5leHRTZXF1ZW50aWFsSWQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2lkLnV0aWwnO1xuaW1wb3J0IHsgaHVtYW5pemVUZXh0IH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hib3hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgZW5UcmFuc2xhdGlvbnMgZnJvbSAnLi4vLi4vbG9jYWxlcy9lbi5qc29uJztcbmltcG9ydCBlc1RyYW5zbGF0aW9ucyBmcm9tICcuLi8uLi9sb2NhbGVzL2VzLUNPLmpzb24nO1xuaW1wb3J0IHB0VHJhbnNsYXRpb25zIGZyb20gJy4uLy4uL2xvY2FsZXMvcHQuanNvbic7XG5cbmNvbnN0IFNFQVJDSF9OT1JNQUxJWkFUSU9OX1JFR0VYID0gL1tcXHUwMzAwLVxcdTAzNmZdL2c7XG5jb25zdCBTRUFSQ0hfREVCT1VOQ0VfTVMgPSAyNTA7XG5jb25zdCBTQ1JPTExfVEhSRVNIT0xEX1BYID0gMTIwO1xuY29uc3QgRU1QVFlfSUNPTl9QSUNLRVJfVkFMVUUgPSAnJztcbmNvbnN0IElDT05fUElDS0VSX0tFWV9QUkVGSVggPSAncGxhdGZvcm0uZGF0YWNvcmUuaWNvblBpY2tlci4nO1xuY29uc3QgSUNPTl9UUkFOU0xBVElPTl9LRVlfUFJFRklYID0gJ3BsYXRmb3JtLmRhdGFjb3JlLmljb25zLic7XG5jb25zdCBGT05UX0FXRVNPTUVfQ0xBU1NfUkVHRVggPSAvXFxiZmFbc3JibGRdP1xcYnxcXGJmYVxcYi9nO1xuY29uc3QgRk9OVF9BV0VTT01FX1BSRUZJWF9SRUdFWCA9IC9cXGJmYS0vZztcbmNvbnN0IElDT05fUElDS0VSX1RSQU5TTEFUSU9OUyA9IHtcbiAgZW46IGVuVHJhbnNsYXRpb25zLFxuICBlczogZXNUcmFuc2xhdGlvbnMsXG4gIHB0OiBwdFRyYW5zbGF0aW9uc1xufSBhcyBSZWNvcmQ8U3VwcG9ydGVkSWNvblBpY2tlckxhbmd1YWdlLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcbmNvbnN0IElDT05fUElDS0VSX0RFRkFVTFRfVEVYVFMgPSB7XG4gIGNhbmNlbDoge1xuICAgIGVuOiAnQ2FuY2VsJyxcbiAgICBlczogJ0NhbmNlbGFyJyxcbiAgICBwdDogJ0NhbmNlbGFyJ1xuICB9LFxuICBjb25maXJtOiB7XG4gICAgZW46ICdDb25maXJtJyxcbiAgICBlczogJ0NvbmZpcm1hcicsXG4gICAgcHQ6ICdDb25maXJtYXInXG4gIH0sXG4gIGljb25zRm91bmQ6IHtcbiAgICBlbjogJ2ljb25zIGZvdW5kJyxcbiAgICBlczogJ1xcdTAwZWRjb25vcyBlbmNvbnRyYWRvcycsXG4gICAgcHQ6ICdcXHUwMGVkY29uZXMgZW5jb250cmFkb3MnXG4gIH0sXG4gIG1vZGFsVGl0bGU6IHtcbiAgICBlbjogJ1NlbGVjdCBpY29uJyxcbiAgICBlczogJ1NlbGVjY2lvbmFyIFxcdTAwZWRjb25vJyxcbiAgICBwdDogJ1NlbGVjaW9uYXIgXFx1MDBlZGNvbmUnXG4gIH0sXG4gIG5vSWNvbnNGb3VuZDoge1xuICAgIGVuOiAnTm8gaWNvbnMgZm91bmQnLFxuICAgIGVzOiAnTmluZ1xcdTAwZmFuIFxcdTAwZWRjb25vIGVuY29udHJhZG8nLFxuICAgIHB0OiAnTmVuaHVtIFxcdTAwZWRjb25lIGVuY29udHJhZG8nXG4gIH0sXG4gIHNlYXJjaFBsYWNlaG9sZGVyOiB7XG4gICAgZW46ICdUeXBlIHRoZSBpY29uIG5hbWUuLi4nLFxuICAgIGVzOiAnRXNjcmliYSBlbCBub21icmUgZGVsIFxcdTAwZWRjb25vLi4uJyxcbiAgICBwdDogJ0RpZ2l0ZSBvIG5vbWUgZG8gXFx1MDBlZGNvbmUuLi4nXG4gIH1cbn0gYXMgY29uc3Q7XG5cbnR5cGUgSWNvblBpY2tlclRleHRLZXkgPSBrZXlvZiB0eXBlb2YgSUNPTl9QSUNLRVJfREVGQVVMVF9URVhUUztcbnR5cGUgU3VwcG9ydGVkSWNvblBpY2tlckxhbmd1YWdlID0gJ2VuJyB8ICdlcycgfCAncHQnO1xuXG5mdW5jdGlvbiBub3JtYWxpemVUZXh0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWVcbiAgICAubm9ybWFsaXplKCdORkQnKVxuICAgIC5yZXBsYWNlKFNFQVJDSF9OT1JNQUxJWkFUSU9OX1JFR0VYLCAnJylcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC50cmltKCk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy1pY29uLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIFNlYXJjaGJveENvbXBvbmVudCxcbiAgICBUb29sdGlwQ29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaWNvbi1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSWNvblBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJY29uUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlbGVjdG9yRGF0YSA9IGluamVjdChJY29uU2VsZWN0b3JEYXRhU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hJbnB1dCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2VuZXJhdGVkSWQgPSBuZXh0U2VxdWVudGlhbElkKCdzZGMtaWNvbi1waWNrZXInKTtcblxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSB0b29sdGlwOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgbW9kYWxUaXRsZSA9ICcnO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICB2YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHBlbmRpbmdWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIG1vZGFsT3BlbiA9IGZhbHNlO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIGRpc3BsYXllZENvdW50ID0gU0RDX0lDT05fUElDS0VSX1BBR0VfU0laRTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgYWxsSWNvbnM6IEljb25QaWNrZXJJdGVtW10gPSBbXTtcbiAgZmlsdGVyZWRJY29uczogSWNvblBpY2tlckl0ZW1bXSA9IFtdO1xuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlYXJjaElucHV0JFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoU0VBUkNIX0RFQk9VTkNFX01TKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGVybSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIodGVybSk7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlYXJjaElucHV0JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkTGFiZWwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlc29sdmVOdWxsYWJsZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMubGFiZWwpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlclxuICAgICAgPyByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5wbGFjZWhvbGRlcilcbiAgICAgIDogdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ3NlYXJjaFBsYWNlaG9sZGVyJyk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRTZWFyY2hQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnc2VhcmNoUGxhY2Vob2xkZXInKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFRvb2x0aXAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlc29sdmVOdWxsYWJsZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMudG9vbHRpcCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlc29sdmVOdWxsYWJsZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMuZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZE1vZGFsVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbFRpdGxlXG4gICAgICA/IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLm1vZGFsVGl0bGUpXG4gICAgICA6IHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdtb2RhbFRpdGxlJyk7XG4gIH1cblxuICBnZXQgdHJpZ2dlcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVkSWQ7XG4gIH1cblxuICBnZXQgdmlzaWJsZUljb25zKCk6IEljb25QaWNrZXJJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSWNvbnMuc2xpY2UoMCwgdGhpcy5kaXNwbGF5ZWRDb3VudCk7XG4gIH1cblxuICBnZXQgaWNvbnNGb3VuZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJY29ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJY29uTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHJldHVybiBFTVBUWV9JQ09OX1BJQ0tFUl9WQUxVRTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuYWxsSWNvbnMuZmluZCgoaWNvbikgPT4gaWNvbi5uYW1lID09PSB0aGlzLnZhbHVlKTtcbiAgICByZXR1cm4gZm91bmQ/LmxhYmVsID8/IHRoaXMudmFsdWU7XG4gIH1cblxuICBnZXQgcGVuZGluZ0ljb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5wZW5kaW5nVmFsdWUpIHtcbiAgICAgIHJldHVybiBFTVBUWV9JQ09OX1BJQ0tFUl9WQUxVRTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuYWxsSWNvbnMuZmluZCgoaWNvbikgPT4gaWNvbi5uYW1lID09PSB0aGlzLnBlbmRpbmdWYWx1ZSk7XG4gICAgcmV0dXJuIGZvdW5kPy5sYWJlbCA/PyB0aGlzLnBlbmRpbmdWYWx1ZTtcbiAgfVxuXG4gIGdldCBjb25maXJtVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnY29uZmlybScpO1xuICB9XG5cbiAgZ2V0IGNhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ2NhbmNlbCcpO1xuICB9XG5cbiAgZ2V0IGljb25zRm91bmRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdpY29uc0ZvdW5kJyk7XG4gIH1cblxuICBnZXQgbm9JY29uc0ZvdW5kVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnbm9JY29uc0ZvdW5kJyk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8/IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLmRpc3BsYXllZENvdW50ID0gU0RDX0lDT05fUElDS0VSX1BBR0VfU0laRTtcbiAgICB0aGlzLm1vZGFsT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLmxvYWRJY29uc0lmTmVlZGVkKCk7XG4gIH1cblxuICBvbk1vZGFsVmlzaWJsZUNoYW5nZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF2aXNpYmxlKSB7XG4gICAgICB0aGlzLm1vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5wZW5kaW5nVmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2godGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gdGVybTtcbiAgICB0aGlzLmRpc3BsYXllZENvdW50ID0gU0RDX0lDT05fUElDS0VSX1BBR0VfU0laRTtcbiAgICB0aGlzLnNlYXJjaElucHV0JC5uZXh0KHRlcm0pO1xuICB9XG5cbiAgb25HcmlkU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IG5lYXJCb3R0b20gPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5zY3JvbGxUb3AgLSBlbC5jbGllbnRIZWlnaHQgPCBTQ1JPTExfVEhSRVNIT0xEX1BYO1xuXG4gICAgaWYgKG5lYXJCb3R0b20gJiYgdGhpcy5kaXNwbGF5ZWRDb3VudCA8IHRoaXMuZmlsdGVyZWRJY29ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ291bnQgKz0gU0RDX0lDT05fUElDS0VSX1BBR0VfU0laRTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEljb24oaWNvbjogSWNvblBpY2tlckl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IHRoaXMucGVuZGluZ1ZhbHVlID09PSBpY29uLm5hbWUgPyBudWxsIDogaWNvbi5uYW1lO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY29uZmlybVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wZW5kaW5nVmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm1vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNhbmNlbFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGlzSWNvblNlbGVjdGVkKGljb246IEljb25QaWNrZXJJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ1ZhbHVlID09PSBpY29uLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJY29uc0lmTmVlZGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsbEljb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIodGhpcy5zZWFyY2hUZXJtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLmljb25TZWxlY3RvckRhdGFcbiAgICAgIC5sb2FkRm9udEF3ZXNvbWVWNVNvbGlkSWNvbnMoKVxuICAgICAgLnRoZW4oKGljb25zKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsSWNvbnMgPSB0aGlzLmJ1aWxkSWNvbkxpc3QoaWNvbnMpO1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSWNvbkxpc3QoaWNvbnM6IFJlYWRvbmx5QXJyYXk8SWNvblNlbGVjdG9ySXRlbT4pOiBJY29uUGlja2VySXRlbVtdIHtcbiAgICByZXR1cm4gaWNvbnMucmVkdWNlPEljb25QaWNrZXJJdGVtW10+KChyZXN1bHQsIGljb24pID0+IHtcbiAgICAgIGlmICghdGhpcy5zaG91bGRJbmNsdWRlSWNvbihpY29uKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgbmFtZTogaWNvbi5jbGFzc05hbWUsXG4gICAgICAgIG5vcm1hbGl6ZWRMYWJlbDogbm9ybWFsaXplVGV4dChsYWJlbClcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXIodGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVRleHQodGVybSk7XG5cbiAgICBpZiAoIW5vcm1hbGl6ZWQpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuYWxsSWNvbnMuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucy5maWx0ZXIoXG4gICAgICAgIChpY29uKSA9PlxuICAgICAgICAgIGljb24ubm9ybWFsaXplZExhYmVsLmluY2x1ZGVzKG5vcm1hbGl6ZWQpIHx8XG4gICAgICAgICAgbm9ybWFsaXplVGV4dChpY29uLm5hbWUpLmluY2x1ZGVzKG5vcm1hbGl6ZWQpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSW5jbHVkZUljb24oaWNvbjogSWNvblNlbGVjdG9ySXRlbSk6IGJvb2xlYW4ge1xuICAgIGlmIChTRENfSUNPTl9QSUNLRVJfQkxPQ0tFRF9OQU1FUy5oYXMoaWNvbi5jbGFzc05hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc29sdmVJY29uTGFiZWwoaWNvbik7XG4gICAgY29uc3Qgbm9ybWFsaXplZExhYmVsID0gbm9ybWFsaXplVGV4dChsYWJlbCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVUZXh0KGljb24uY2xhc3NOYW1lKTtcblxuICAgIHJldHVybiAhU0RDX0lDT05fUElDS0VSX0JMT0NLRURfVEVSTVMuc29tZShcbiAgICAgICh0ZXJtKSA9PiBub3JtYWxpemVkTGFiZWwuaW5jbHVkZXModGVybSkgfHwgbm9ybWFsaXplZE5hbWUuaW5jbHVkZXModGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSWNvblBpY2tlclRleHQoa2V5OiBJY29uUGlja2VyVGV4dEtleSk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSBgJHtJQ09OX1BJQ0tFUl9LRVlfUFJFRklYfSR7a2V5fWA7XG4gICAgY29uc3QgdHJhbnNsYXRlZCA9IHRoaXMucmVzb2x2ZVRyYW5zbGF0ZWRWYWx1ZSh0cmFuc2xhdGlvbktleSk7XG5cbiAgICBpZiAodHJhbnNsYXRlZCkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIElDT05fUElDS0VSX0RFRkFVTFRfVEVYVFNba2V5XVt0aGlzLmN1cnJlbnRMYW5ndWFnZV07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJY29uTGFiZWwoaWNvbjogSWNvblNlbGVjdG9ySXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSBpY29uLnRyYW5zbGF0aW9uS2V5Py50cmltKCkgPz8gJyc7XG4gICAgY29uc3QgdHJhbnNsYXRlZCA9IHRoaXMucmVzb2x2ZVRyYW5zbGF0ZWRWYWx1ZSh0cmFuc2xhdGlvbktleSk7XG5cbiAgICBpZiAodHJhbnNsYXRlZCkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRyYW5zbGF0aW9uS2V5ICYmICF0cmFuc2xhdGlvbktleS5zdGFydHNXaXRoKElDT05fVFJBTlNMQVRJT05fS0VZX1BSRUZJWCkpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbktleTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odW1hbml6ZUljb25DbGFzcyhpY29uLmNsYXNzTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUcmFuc2xhdGVkVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICgha2V5KSB7XG4gICAgICByZXR1cm4gRU1QVFlfSUNPTl9QSUNLRVJfVkFMVUU7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNsYXRlZCA9IFN0cmluZyh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSkgPz8gJycpLnRyaW0oKTtcblxuICAgIGlmICh0cmFuc2xhdGVkICYmIHRyYW5zbGF0ZWQgIT09IGtleSkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIElDT05fUElDS0VSX1RSQU5TTEFUSU9OU1t0aGlzLmN1cnJlbnRMYW5ndWFnZV1ba2V5XSA/PyBFTVBUWV9JQ09OX1BJQ0tFUl9WQUxVRTtcbiAgfVxuXG4gIHByaXZhdGUgaHVtYW5pemVJY29uQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBodW1hbml6ZVRleHQoXG4gICAgICBjbGFzc05hbWVcbiAgICAgICAgLnJlcGxhY2UoRk9OVF9BV0VTT01FX0NMQVNTX1JFR0VYLCAnJylcbiAgICAgICAgLnJlcGxhY2UoRk9OVF9BV0VTT01FX1BSRUZJWF9SRUdFWCwgJyAnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBjdXJyZW50TGFuZ3VhZ2UoKTogU3VwcG9ydGVkSWNvblBpY2tlckxhbmd1YWdlIHtcbiAgICBjb25zdCBsYW5nID0gKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID8/ICcnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGxhbmcuc3RhcnRzV2l0aCgnZW4nKSkge1xuICAgICAgcmV0dXJuICdlbic7XG4gICAgfVxuXG4gICAgaWYgKGxhbmcuc3RhcnRzV2l0aCgnZXMnKSkge1xuICAgICAgcmV0dXJuICdlcyc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdwdCc7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJcIlxuICBbY2xhc3Muc2RjLWljb24tcGlja2VyLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5zZGMtaWNvbi1waWNrZXItLWludmFsaWRdPVwiaW52YWxpZFwiXG4+XG4gIEBpZiAocmVzb2x2ZWRMYWJlbCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xhYmVsLXJvd1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19sYWJlbFwiIFtmb3JdPVwidHJpZ2dlcklkXCIgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCB8fCBudWxsXCI+XG4gICAgICAgIHt7IHJlc29sdmVkTGFiZWwgfX1cbiAgICAgICAgQGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19yZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRUb29sdGlwKSB7XG4gICAgICAgIDxzZGMtdG9vbHRpcCBbcFRvb2x0aXBdPVwicmVzb2x2ZWRUb29sdGlwXCIgW3Rvb2x0aXBFdmVudF09XCInYm90aCdcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9faW5mby1pY29uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZFRvb2x0aXBcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NkYy10b29sdGlwPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPGJ1dHRvblxuICAgIFtpZF09XCJ0cmlnZ2VySWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwic2RjLWljb24tcGlja2VyX190cmlnZ2VyXCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkIHx8IG51bGxcIlxuICAgIChjbGljayk9XCJvcGVuTW9kYWwoKVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fdHJpZ2dlci1zd2F0Y2hcIj5cbiAgICAgIEBpZiAodmFsdWUpIHtcbiAgICAgICAgPGkgW2NsYXNzXT1cIidmYXMgJyArIHZhbHVlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItc3dhdGNoLXBsYWNlaG9sZGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cblxuICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX190cmlnZ2VyLXNlcFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cblxuICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX190cmlnZ2VyLXRleHRcIj5cbiAgICAgIEBpZiAodmFsdWUgJiYgc2VsZWN0ZWRJY29uTGFiZWwpIHtcbiAgICAgICAge3sgc2VsZWN0ZWRJY29uTGFiZWwgfX1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcGxhY2Vob2xkZXJcIj57eyByZXNvbHZlZFBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgQGlmIChpbnZhbGlkICYmIHJlc29sdmVkRXJyb3JNZXNzYWdlKSB7XG4gICAgPHNtYWxsIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19lcnJvclwiPnt7IHJlc29sdmVkRXJyb3JNZXNzYWdlIH19PC9zbWFsbD5cbiAgfVxuPC9kaXY+XG5cbjxzZGMtbW9kYWxcbiAgW2hlYWRlcl09XCJyZXNvbHZlZE1vZGFsVGl0bGVcIlxuICBbdmlzaWJsZV09XCJtb2RhbE9wZW5cIlxuICBbd2lkdGhdPVwiNjYwXCJcbiAgW2Nsb3NhYmxlXT1cInRydWVcIlxuICBzdHlsZUNsYXNzPVwic2RjLW1vZGFsLS1pY29uLXBpY2tlclwiXG4gIFthcHBlbmRUb0JvZHldPVwidHJ1ZVwiXG4gICh2aXNpYmxlQ2hhbmdlKT1cIm9uTW9kYWxWaXNpYmxlQ2hhbmdlKCRldmVudClcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19tb2RhbC1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fc2VhcmNoLXJvd1wiPlxuICAgICAgPHNkYy1zZWFyY2hib3hcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRTZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgIFtkZWJvdW5jZVRpbWVNc109XCIyNTBcIlxuICAgICAgICAoZGVib3VuY2VkVmFsdWVDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uU2VhcmNoKCcnKVwiXG4gICAgICA+PC9zZGMtc2VhcmNoYm94PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChwZW5kaW5nVmFsdWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctYmFyXCI+XG4gICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBwZW5kaW5nVmFsdWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcHJldmlldy1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wcmV2aWV3LWluZm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcHJldmlldy1sYWJlbFwiPnt7IHBlbmRpbmdJY29uTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctY2xhc3NcIj57eyBwZW5kaW5nVmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY291bnRlclwiPlxuICAgICAgQGlmIChmaWx0ZXJlZEljb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNwYW4+e3sgaWNvbnNGb3VuZENvdW50IH19IHt7IGljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSBpZiAoIWlzTG9hZGluZykge1xuICAgICAgICA8c3Bhbj57eyBub0ljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xvYWRpbmdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIE5PU09OQVI6IHRoaXMgcGlja2VyIG5lZWRzIGEgY3VzdG9tIEFSSUEgbGlzdGJveC9ncmlkIGV4cGVyaWVuY2UgdGhhdCBhIG5hdGl2ZSBzZWxlY3QgY2Fubm90IHByb3ZpZGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgICNpY29uR3JpZFxuICAgICAgICBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fZ3JpZFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3Rib3gnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZE1vZGFsVGl0bGVcIlxuICAgICAgICAoc2Nyb2xsKT1cIm9uR3JpZFNjcm9sbCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoaWNvbiBvZiB2aXNpYmxlSWNvbnM7IHRyYWNrIGljb24ubmFtZSkge1xuICAgICAgICAgIDwhLS0gTk9TT05BUiAtLT5cbiAgICAgICAgICA8IS0tIHRoZSBjdXN0b20gaWNvbiBncmlkIGtlZXBzIG9wdGlvbiBzZW1hbnRpY3Mgb24gdGhlIGZvY3VzYWJsZSBjYXJkIGZvciBrZXlib2FyZCBhbmQgU1Igc3VwcG9ydCAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZGMtaWNvbi1waWNrZXJfX2NhcmQtLXNlbGVjdGVkXT1cImlzSWNvblNlbGVjdGVkKGljb24pXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ29wdGlvbidcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0ljb25TZWxlY3RlZChpY29uKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgaWNvbi5sYWJlbCArICcgLSAnICsgaWNvbi5uYW1lXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEljb24oaWNvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBpY29uLm5hbWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY2FyZC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2NhcmQtbmFtZVwiPnt7IGljb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBmb290ZXIgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzZGMtYnV0dG9uXG4gICAgICBbbGFiZWxdPVwiY2FuY2VsVGV4dFwiXG4gICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAoY2xpY2tlZCk9XCJjYW5jZWxTZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgICA8c2RjLWJ1dHRvblxuICAgICAgW2xhYmVsXT1cImNvbmZpcm1UZXh0XCJcbiAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGVuZGluZ1ZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSBudWxsXCJcbiAgICAgIChjbGlja2VkKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgPC9kaXY+XG48L3NkYy1tb2RhbD5cbiJdfQ==
|
|
404
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9pY29uLXBpY2tlci9pY29uLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ljb24tcGlja2VyL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakYsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUMvQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxP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QVJuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpSEFVaUMsVUFBVSw2QkNoSTlDLDA2SkFpSkEscXJNRDdDSSxZQUFZLDhCQUNaLFdBQVcsOEJBQ1gsZUFBZSwrQkFDZixjQUFjLHlRQUNkLGtCQUFrQixvV0FDbEIsZ0JBQWdCLCtKQUNoQixlQUFlOzs0RkFjTixtQkFBbUI7a0JBeEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUSxhQUM5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBVWdFLFdBQVc7c0JBQTNFLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFckMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU0RDX0lDT05fUElDS0VSX0JMT0NLRURfTkFNRVMsXG4gIFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX1RFUk1TLFxuICBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFLFxuICBTRENfSUNPTl9QSUNLRVJfUFJJT1JJVFlfTkFNRVNcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvaWNvbi1waWNrZXIuY29uc3QnO1xuaW1wb3J0IHsgSWNvblNlbGVjdG9yRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2ljb24tc2VsZWN0b3ItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgSWNvblNlbGVjdG9ySXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvaWNvbi1zZWxlY3Rvci50eXBlJztcbmltcG9ydCB0eXBlIHsgSWNvblBpY2tlckl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ljb24tcGlja2VyLnR5cGUnO1xuaW1wb3J0IHsgcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCwgcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2kxOG4udXRpbCc7XG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IGh1bWFuaXplVGV4dCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IGVuVHJhbnNsYXRpb25zIGZyb20gJy4uLy4uL2xvY2FsZXMvZW4uanNvbic7XG5pbXBvcnQgZXNUcmFuc2xhdGlvbnMgZnJvbSAnLi4vLi4vbG9jYWxlcy9lcy1DTy5qc29uJztcbmltcG9ydCBwdFRyYW5zbGF0aW9ucyBmcm9tICcuLi8uLi9sb2NhbGVzL3B0Lmpzb24nO1xuXG5jb25zdCBTRUFSQ0hfTk9STUFMSVpBVElPTl9SRUdFWCA9IC9bXFx1MDMwMC1cXHUwMzZmXS9nO1xuY29uc3QgU0VBUkNIX0RFQk9VTkNFX01TID0gMjUwO1xuY29uc3QgU0NST0xMX1RIUkVTSE9MRF9QWCA9IDEyMDtcbmNvbnN0IEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFID0gJyc7XG5jb25zdCBJQ09OX1BJQ0tFUl9LRVlfUFJFRklYID0gJ3BsYXRmb3JtLmRhdGFjb3JlLmljb25QaWNrZXIuJztcbmNvbnN0IElDT05fVFJBTlNMQVRJT05fS0VZX1BSRUZJWCA9ICdwbGF0Zm9ybS5kYXRhY29yZS5pY29ucy4nO1xuY29uc3QgRk9OVF9BV0VTT01FX0NMQVNTX1JFR0VYID0gL1xcYmZhW3NyYmxkXT9cXGJ8XFxiZmFcXGIvZztcbmNvbnN0IEZPTlRfQVdFU09NRV9QUkVGSVhfUkVHRVggPSAvXFxiZmEtL2c7XG5jb25zdCBJQ09OX1BJQ0tFUl9UUkFOU0xBVElPTlMgPSB7XG4gIGVuOiBlblRyYW5zbGF0aW9ucyxcbiAgZXM6IGVzVHJhbnNsYXRpb25zLFxuICBwdDogcHRUcmFuc2xhdGlvbnNcbn0gYXMgUmVjb3JkPFN1cHBvcnRlZEljb25QaWNrZXJMYW5ndWFnZSwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5jb25zdCBJQ09OX1BJQ0tFUl9ERUZBVUxUX1RFWFRTID0ge1xuICBjYW5jZWw6IHtcbiAgICBlbjogJ0NhbmNlbCcsXG4gICAgZXM6ICdDYW5jZWxhcicsXG4gICAgcHQ6ICdDYW5jZWxhcidcbiAgfSxcbiAgY29uZmlybToge1xuICAgIGVuOiAnQ29uZmlybScsXG4gICAgZXM6ICdDb25maXJtYXInLFxuICAgIHB0OiAnQ29uZmlybWFyJ1xuICB9LFxuICBpY29uc0ZvdW5kOiB7XG4gICAgZW46ICdpY29ucyBmb3VuZCcsXG4gICAgZXM6ICdcXHUwMGVkY29ub3MgZW5jb250cmFkb3MnLFxuICAgIHB0OiAnXFx1MDBlZGNvbmVzIGVuY29udHJhZG9zJ1xuICB9LFxuICBtb2RhbFRpdGxlOiB7XG4gICAgZW46ICdTZWxlY3QgaWNvbicsXG4gICAgZXM6ICdTZWxlY2Npb25hciBcXHUwMGVkY29ubycsXG4gICAgcHQ6ICdTZWxlY2lvbmFyIFxcdTAwZWRjb25lJ1xuICB9LFxuICBub0ljb25zRm91bmQ6IHtcbiAgICBlbjogJ05vIGljb25zIGZvdW5kJyxcbiAgICBlczogJ05pbmdcXHUwMGZhbiBcXHUwMGVkY29ubyBlbmNvbnRyYWRvJyxcbiAgICBwdDogJ05lbmh1bSBcXHUwMGVkY29uZSBlbmNvbnRyYWRvJ1xuICB9LFxuICBzZWFyY2hQbGFjZWhvbGRlcjoge1xuICAgIGVuOiAnVHlwZSB0aGUgaWNvbiBuYW1lLi4uJyxcbiAgICBlczogJ0VzY3JpYmEgZWwgbm9tYnJlIGRlbCBcXHUwMGVkY29uby4uLicsXG4gICAgcHQ6ICdEaWdpdGUgbyBub21lIGRvIFxcdTAwZWRjb25lLi4uJ1xuICB9XG59IGFzIGNvbnN0O1xuXG50eXBlIEljb25QaWNrZXJUZXh0S2V5ID0ga2V5b2YgdHlwZW9mIElDT05fUElDS0VSX0RFRkFVTFRfVEVYVFM7XG50eXBlIFN1cHBvcnRlZEljb25QaWNrZXJMYW5ndWFnZSA9ICdlbicgfCAnZXMnIHwgJ3B0JztcblxuZnVuY3Rpb24gbm9ybWFsaXplVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAucmVwbGFjZShTRUFSQ0hfTk9STUFMSVpBVElPTl9SRUdFWCwgJycpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAudHJpbSgpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtaWNvbi1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNb2RhbENvbXBvbmVudCxcbiAgICBTZWFyY2hib3hDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ljb24tcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEljb25QaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWNvblBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGljb25TZWxlY3RvckRhdGEgPSBpbmplY3QoSWNvblNlbGVjdG9yRGF0YVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoSW5wdXQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZElkID0gbmV4dFNlcXVlbnRpYWxJZCgnc2RjLWljb24tcGlja2VyJyk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoYm94RWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hib3hFbD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBtb2RhbFRpdGxlID0gJyc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcGVuZGluZ1ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbW9kYWxPcGVuID0gZmFsc2U7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgZGlzcGxheWVkQ291bnQgPSBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBhbGxJY29uczogSWNvblBpY2tlckl0ZW1bXSA9IFtdO1xuICBmaWx0ZXJlZEljb25zOiBJY29uUGlja2VySXRlbVtdID0gW107XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQkXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZShTRUFSQ0hfREVCT1VOQ0VfTVMpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcHBseUZpbHRlcih0ZXJtKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5sYWJlbCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyXG4gICAgICA/IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLnBsYWNlaG9sZGVyKVxuICAgICAgOiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnc2VhcmNoUGxhY2Vob2xkZXInKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFNlYXJjaFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdzZWFyY2hQbGFjZWhvbGRlcicpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkVG9vbHRpcCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy50b29sdGlwKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5lcnJvck1lc3NhZ2UpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkTW9kYWxUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGFsVGl0bGVcbiAgICAgID8gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMubW9kYWxUaXRsZSlcbiAgICAgIDogdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ21vZGFsVGl0bGUnKTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZWRJZDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlSWNvbnMoKTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJY29ucy5zbGljZSgwLCB0aGlzLmRpc3BsYXllZENvdW50KTtcbiAgfVxuXG4gIGdldCBpY29uc0ZvdW5kQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEljb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEljb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgcmV0dXJuIEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxJY29ucy5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IHRoaXMudmFsdWUpO1xuICAgIHJldHVybiBmb3VuZD8ubGFiZWwgPz8gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGdldCBwZW5kaW5nSWNvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdWYWx1ZSkge1xuICAgICAgcmV0dXJuIEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxJY29ucy5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IHRoaXMucGVuZGluZ1ZhbHVlKTtcbiAgICByZXR1cm4gZm91bmQ/LmxhYmVsID8/IHRoaXMucGVuZGluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbmZpcm1UZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdjb25maXJtJyk7XG4gIH1cblxuICBnZXQgY2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnY2FuY2VsJyk7XG4gIH1cblxuICBnZXQgaWNvbnNGb3VuZFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ2ljb25zRm91bmQnKTtcbiAgfVxuXG4gIGdldCBub0ljb25zRm91bmRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdub0ljb25zRm91bmQnKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPz8gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb3Blbk1vZGFsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkQ291bnQgPSBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFO1xuICAgIHRoaXMubW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMubG9hZEljb25zSWZOZWVkZWQoKTtcbiAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNTZWFyY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5zZWFyY2hib3hFbD8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignaW5wdXQnKTtcbiAgICAgIGlucHV0Py5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgb25Nb2RhbFZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IHRlcm07XG4gICAgdGhpcy5kaXNwbGF5ZWRDb3VudCA9IFNEQ19JQ09OX1BJQ0tFUl9QQUdFX1NJWkU7XG4gICAgdGhpcy5zZWFyY2hJbnB1dCQubmV4dCh0ZXJtKTtcbiAgfVxuXG4gIG9uR3JpZFNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBuZWFyQm90dG9tID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0IDwgU0NST0xMX1RIUkVTSE9MRF9QWDtcblxuICAgIGlmIChuZWFyQm90dG9tICYmIHRoaXMuZGlzcGxheWVkQ291bnQgPCB0aGlzLmZpbHRlcmVkSWNvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvdW50ICs9IFNEQ19JQ09OX1BJQ0tFUl9QQUdFX1NJWkU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJY29uKGljb246IEljb25QaWNrZXJJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB0aGlzLnBlbmRpbmdWYWx1ZSA9PT0gaWNvbi5uYW1lID8gbnVsbCA6IGljb24ubmFtZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNvbmZpcm1TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMucGVuZGluZ1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjYW5jZWxTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc0ljb25TZWxlY3RlZChpY29uOiBJY29uUGlja2VySXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdWYWx1ZSA9PT0gaWNvbi5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSWNvbnNJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxJY29ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5pY29uU2VsZWN0b3JEYXRhXG4gICAgICAubG9hZEZvbnRBd2Vzb21lVjVTb2xpZEljb25zKClcbiAgICAgIC50aGVuKChpY29ucykgPT4ge1xuICAgICAgICB0aGlzLmFsbEljb25zID0gdGhpcy5idWlsZEljb25MaXN0KGljb25zKTtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcih0aGlzLnNlYXJjaFRlcm0pO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEljb25MaXN0KGljb25zOiBSZWFkb25seUFycmF5PEljb25TZWxlY3Rvckl0ZW0+KTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgY29uc3QgYWxsID0gaWNvbnMucmVkdWNlPEljb25QaWNrZXJJdGVtW10+KChyZXN1bHQsIGljb24pID0+IHtcbiAgICAgIGlmICghdGhpcy5zaG91bGRJbmNsdWRlSWNvbihpY29uKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgbmFtZTogaWNvbi5jbGFzc05hbWUsXG4gICAgICAgIG5vcm1hbGl6ZWRMYWJlbDogbm9ybWFsaXplVGV4dChsYWJlbClcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiB0aGlzLnNvcnRCeVByaW9yaXR5KGFsbCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRCeVByaW9yaXR5KGljb25zOiBJY29uUGlja2VySXRlbVtdKTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgY29uc3QgcHJpb3JpdHlJbmRleCA9IG5ldyBNYXAoU0RDX0lDT05fUElDS0VSX1BSSU9SSVRZX05BTUVTLm1hcCgobmFtZSwgaSkgPT4gW25hbWUsIGldKSk7XG4gICAgY29uc3QgcHJpb3JpdGl6ZWQgPSBBcnJheS5mcm9tPEljb25QaWNrZXJJdGVtIHwgdW5kZWZpbmVkPih7IGxlbmd0aDogU0RDX0lDT05fUElDS0VSX1BSSU9SSVRZX05BTUVTLmxlbmd0aCB9KTtcbiAgICBjb25zdCByZXN0OiBJY29uUGlja2VySXRlbVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGljb24gb2YgaWNvbnMpIHtcbiAgICAgIGNvbnN0IGlkeCA9IHByaW9yaXR5SW5kZXguZ2V0KGljb24ubmFtZSk7XG4gICAgICBpZiAoaWR4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJpb3JpdGl6ZWRbaWR4XSA9IGljb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN0LnB1c2goaWNvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wcmlvcml0aXplZC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIEljb25QaWNrZXJJdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCksIC4uLnJlc3RdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcih0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplVGV4dCh0ZXJtKTtcblxuICAgIGlmICghbm9ybWFsaXplZCkge1xuICAgICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucy5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmFsbEljb25zLmZpbHRlcihcbiAgICAgICAgKGljb24pID0+XG4gICAgICAgICAgaWNvbi5ub3JtYWxpemVkTGFiZWwuaW5jbHVkZXMobm9ybWFsaXplZCkgfHxcbiAgICAgICAgICBub3JtYWxpemVUZXh0KGljb24ubmFtZSkuaW5jbHVkZXMobm9ybWFsaXplZClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRJbmNsdWRlSWNvbihpY29uOiBJY29uU2VsZWN0b3JJdGVtKTogYm9vbGVhbiB7XG4gICAgaWYgKFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX05BTUVTLmhhcyhpY29uLmNsYXNzTmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcbiAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVUZXh0KGxhYmVsKTtcbiAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVRleHQoaWNvbi5jbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuICFTRENfSUNPTl9QSUNLRVJfQkxPQ0tFRF9URVJNUy5zb21lKFxuICAgICAgKHRlcm0pID0+IG5vcm1hbGl6ZWRMYWJlbC5pbmNsdWRlcyh0ZXJtKSB8fCBub3JtYWxpemVkTmFtZS5pbmNsdWRlcyh0ZXJtKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJY29uUGlja2VyVGV4dChrZXk6IEljb25QaWNrZXJUZXh0S2V5KTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGAke0lDT05fUElDS0VSX0tFWV9QUkVGSVh9JHtrZXl9YDtcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yZXNvbHZlVHJhbnNsYXRlZFZhbHVlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gSUNPTl9QSUNLRVJfREVGQVVMVF9URVhUU1trZXldW3RoaXMuY3VycmVudExhbmd1YWdlXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUljb25MYWJlbChpY29uOiBJY29uU2VsZWN0b3JJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGljb24udHJhbnNsYXRpb25LZXk/LnRyaW0oKSA/PyAnJztcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yZXNvbHZlVHJhbnNsYXRlZFZhbHVlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNsYXRpb25LZXkgJiYgIXRyYW5zbGF0aW9uS2V5LnN0YXJ0c1dpdGgoSUNPTl9UUkFOU0xBVElPTl9LRVlfUFJFRklYKSkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh1bWFuaXplSWNvbkNsYXNzKGljb24uY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRyYW5zbGF0ZWRWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiBFTVBUWV9JQ09OX1BJQ0tFUl9WQUxVRTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGVkID0gU3RyaW5nKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KSA/PyAnJykudHJpbSgpO1xuXG4gICAgaWYgKHRyYW5zbGF0ZWQgJiYgdHJhbnNsYXRlZCAhPT0ga2V5KSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gSUNPTl9QSUNLRVJfVFJBTlNMQVRJT05TW3RoaXMuY3VycmVudExhbmd1YWdlXVtrZXldID8/IEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICB9XG5cbiAgcHJpdmF0ZSBodW1hbml6ZUljb25DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGh1bWFuaXplVGV4dChcbiAgICAgIGNsYXNzTmFtZVxuICAgICAgICAucmVwbGFjZShGT05UX0FXRVNPTUVfQ0xBU1NfUkVHRVgsICcnKVxuICAgICAgICAucmVwbGFjZShGT05UX0FXRVNPTUVfUFJFRklYX1JFR0VYLCAnICcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBTdXBwb3J0ZWRJY29uUGlja2VyTGFuZ3VhZ2Uge1xuICAgIGNvbnN0IGxhbmcgPSAodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAobGFuZy5zdGFydHNXaXRoKCdlbicpKSB7XG4gICAgICByZXR1cm4gJ2VuJztcbiAgICB9XG5cbiAgICBpZiAobGFuZy5zdGFydHNXaXRoKCdlcycpKSB7XG4gICAgICByZXR1cm4gJ2VzJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3B0JztcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNkYy1pY29uLXBpY2tlclwiXG4gIFtjbGFzcy5zZGMtaWNvbi1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnNkYy1pY29uLXBpY2tlci0taW52YWxpZF09XCJpbnZhbGlkXCJcbj5cbiAgQGlmIChyZXNvbHZlZExhYmVsKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xhYmVsXCIgW2Zvcl09XCJ0cmlnZ2VySWRcIiBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIj5cbiAgICAgICAge3sgcmVzb2x2ZWRMYWJlbCB9fVxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3JlcXVpcmVkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgQGlmIChyZXNvbHZlZFRvb2x0aXApIHtcbiAgICAgICAgPHNkYy10b29sdGlwIFtwVG9vbHRpcF09XCJyZXNvbHZlZFRvb2x0aXBcIiBbdG9vbHRpcEV2ZW50XT1cIidib3RoJ1wiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19pbmZvLWljb25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc29sdmVkVG9vbHRpcFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc2RjLXRvb2x0aXA+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8YnV0dG9uXG4gICAgW2lkXT1cInRyaWdnZXJJZFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXJcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWQgfHwgbnVsbFwiXG4gICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX190cmlnZ2VyLXN3YXRjaFwiPlxuICAgICAgQGlmICh2YWx1ZSkge1xuICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZhcyAnICsgdmFsdWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIHNkYy1pY29uLXBpY2tlcl9fdHJpZ2dlci1zd2F0Y2gtcGxhY2Vob2xkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItc2VwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItdGV4dFwiPlxuICAgICAgQGlmICh2YWx1ZSAmJiBzZWxlY3RlZEljb25MYWJlbCkge1xuICAgICAgICB7eyBzZWxlY3RlZEljb25MYWJlbCB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wbGFjZWhvbGRlclwiPnt7IHJlc29sdmVkUGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICBAaWYgKGludmFsaWQgJiYgcmVzb2x2ZWRFcnJvck1lc3NhZ2UpIHtcbiAgICA8c21hbGwgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Vycm9yXCI+e3sgcmVzb2x2ZWRFcnJvck1lc3NhZ2UgfX08L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPHNkYy1tb2RhbFxuICBbaGVhZGVyXT1cInJlc29sdmVkTW9kYWxUaXRsZVwiXG4gIFt2aXNpYmxlXT1cIm1vZGFsT3BlblwiXG4gIFt3aWR0aF09XCI2NjBcIlxuICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gIHN0eWxlQ2xhc3M9XCJzZGMtbW9kYWwtLWljb24tcGlja2VyXCJcbiAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgKHZpc2libGVDaGFuZ2UpPVwib25Nb2RhbFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX21vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19zZWFyY2gtcm93XCI+XG4gICAgICA8c2RjLXNlYXJjaGJveFxuICAgICAgICAjc2VhcmNoYm94RWxcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRTZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgIFtkZWJvdW5jZVRpbWVNc109XCIyNTBcIlxuICAgICAgICAoZGVib3VuY2VkVmFsdWVDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uU2VhcmNoKCcnKVwiXG4gICAgICA+PC9zZGMtc2VhcmNoYm94PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChwZW5kaW5nVmFsdWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctYmFyXCI+XG4gICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBwZW5kaW5nVmFsdWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcHJldmlldy1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wcmV2aWV3LWluZm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcHJldmlldy1sYWJlbFwiPnt7IHBlbmRpbmdJY29uTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctY2xhc3NcIj57eyBwZW5kaW5nVmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY291bnRlclwiPlxuICAgICAgQGlmIChmaWx0ZXJlZEljb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNwYW4+e3sgaWNvbnNGb3VuZENvdW50IH19IHt7IGljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSBpZiAoIWlzTG9hZGluZykge1xuICAgICAgICA8c3Bhbj57eyBub0ljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xvYWRpbmdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIE5PU09OQVI6IHRoaXMgcGlja2VyIG5lZWRzIGEgY3VzdG9tIEFSSUEgbGlzdGJveC9ncmlkIGV4cGVyaWVuY2UgdGhhdCBhIG5hdGl2ZSBzZWxlY3QgY2Fubm90IHByb3ZpZGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgICNpY29uR3JpZFxuICAgICAgICBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fZ3JpZFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3Rib3gnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZE1vZGFsVGl0bGVcIlxuICAgICAgICAoc2Nyb2xsKT1cIm9uR3JpZFNjcm9sbCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoaWNvbiBvZiB2aXNpYmxlSWNvbnM7IHRyYWNrIGljb24ubmFtZSkge1xuICAgICAgICAgIDwhLS0gTk9TT05BUiAtLT5cbiAgICAgICAgICA8IS0tIHRoZSBjdXN0b20gaWNvbiBncmlkIGtlZXBzIG9wdGlvbiBzZW1hbnRpY3Mgb24gdGhlIGZvY3VzYWJsZSBjYXJkIGZvciBrZXlib2FyZCBhbmQgU1Igc3VwcG9ydCAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZGMtaWNvbi1waWNrZXJfX2NhcmQtLXNlbGVjdGVkXT1cImlzSWNvblNlbGVjdGVkKGljb24pXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ29wdGlvbidcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0ljb25TZWxlY3RlZChpY29uKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgaWNvbi5sYWJlbCArICcgLSAnICsgaWNvbi5uYW1lXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEljb24oaWNvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBpY29uLm5hbWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY2FyZC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2NhcmQtbmFtZVwiPnt7IGljb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBmb290ZXIgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzZGMtYnV0dG9uXG4gICAgICBbbGFiZWxdPVwiY2FuY2VsVGV4dFwiXG4gICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAoY2xpY2tlZCk9XCJjYW5jZWxTZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgICA8c2RjLWJ1dHRvblxuICAgICAgW2xhYmVsXT1cImNvbmZpcm1UZXh0XCJcbiAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGVuZGluZ1ZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSBudWxsXCJcbiAgICAgIChjbGlja2VkKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgPC9kaXY+XG48L3NkYy1tb2RhbD5cbiJdfQ==
|
|
@@ -27,7 +27,7 @@ export class InfoSignComponent {
|
|
|
27
27
|
return template.replace('{text}', this.resolvedTooltip);
|
|
28
28
|
}
|
|
29
29
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InfoSignComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: InfoSignComponent, isStandalone: true, selector: "sdc-info-sign", inputs: { label: "label", labelParams: "labelParams", tooltip: "tooltip", tooltipParams: "tooltipParams", iconClass: "iconClass", iconAriaLabel: "iconAriaLabel", tooltipPosition: "tooltipPosition", tooltipEvent: "tooltipEvent", inline: "inline" }, ngImport: i0, template: "<span class=\"sdc-info-sign\" [class.sdc-info-sign--inline]=\"inline\">\n @if (resolvedLabel) {\n <span class=\"sdc-info-sign__label\">{{ resolvedLabel }}</span>\n } @else {\n <ng-content></ng-content>\n }\n\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipPosition]=\"tooltipPosition\" [tooltipEvent]=\"tooltipEvent\">\n <button type=\"button\" class=\"sdc-info-sign__icon\" [attr.aria-label]=\"resolvedAriaLabel\">\n <i [class]=\"iconClass\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n</span>\n", styles: [":host{display:inline-flex}.sdc-info-sign{align-items:center;color:inherit;display:inline-flex;gap:.375rem}.sdc-info-sign__label{min-width:0}.sdc-info-sign__icon{align-items:center;background:transparent;border:0;color:var(--sdc-info-sign-icon-color, var(--sdc-form-tooltip-color, #090909));cursor:help;display:inline-flex;font-size:var(--sdc-info-sign-icon-size, .95rem);justify-content:center;min-height:var(--sdc-info-sign-button-height, 1.25rem);min-width:var(--sdc-info-sign-button-width, 1.25rem);padding:0}.sdc-info-sign__icon:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: InfoSignComponent, isStandalone: true, selector: "sdc-info-sign", inputs: { label: "label", labelParams: "labelParams", tooltip: "tooltip", tooltipParams: "tooltipParams", iconClass: "iconClass", iconAriaLabel: "iconAriaLabel", tooltipPosition: "tooltipPosition", tooltipEvent: "tooltipEvent", inline: "inline" }, ngImport: i0, template: "<span class=\"sdc-info-sign\" [class.sdc-info-sign--inline]=\"inline\">\n @if (resolvedLabel) {\n <span class=\"sdc-info-sign__label\">{{ resolvedLabel }}</span>\n } @else {\n <ng-content></ng-content>\n }\n\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipPosition]=\"tooltipPosition\" [tooltipEvent]=\"tooltipEvent\">\n <button type=\"button\" class=\"sdc-info-sign__icon\" [attr.aria-label]=\"resolvedAriaLabel\">\n <i [class]=\"iconClass\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n</span>\n", styles: [":host{display:inline-flex}.sdc-info-sign{align-items:center;color:inherit;display:inline-flex;gap:.375rem}.sdc-info-sign__label{min-width:0}.sdc-info-sign__icon{align-items:center;background:transparent;border:0;color:var(--sdc-info-sign-icon-color, var(--sdc-form-tooltip-color, #090909));cursor:help;display:inline-flex;font-size:var(--sdc-info-sign-icon-size, .95rem);justify-content:center;min-height:var(--sdc-info-sign-button-height, 1.25rem);min-width:var(--sdc-info-sign-button-width, 1.25rem);padding:0}.sdc-info-sign__icon:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled", "allowHtml"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
31
31
|
}
|
|
32
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InfoSignComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
@@ -59,7 +59,7 @@ export class MaskComponent extends InputsComponent {
|
|
|
59
59
|
useExisting: forwardRef(() => MaskComponent),
|
|
60
60
|
multi: true
|
|
61
61
|
}
|
|
62
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"sdc-mask\">\n @if (labelKey() || infoTooltip) {\n <div class=\"sdc-mask__label-row\">\n @if (labelKey()) {\n <label [for]=\"identity.id\" class=\"sdc-mask__label\">\n <span class=\"sdc-mask__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n }\n @if (required) {\n <span class=\"sr-only\">\n {{ 'platform.datacore.accessibility.required_field' | translate }}\n </span>\n }\n </span>\n </label>\n }\n @if (infoTooltip) {\n <sdc-tooltip\n class=\"sdc-mask__info-tooltip-wrap\"\n [pTooltip]=\"infoTooltip\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipEvent]=\"infoTooltipEvent\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <i class=\"fas fa-info-circle sdc-mask__info-tooltip-icon\" aria-hidden=\"true\"></i>\n </sdc-tooltip>\n }\n </div>\n }\n\n <input\n class=\"sdc-mask__input\"\n (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n [id]=\"identity.id\"\n [name]=\"identity.name\"\n [ngClass]=\"getInvalidClass()\"\n [class.sdc-mask__input--invalid]=\"invalid\"\n [ngStyle]=\"getInputStyle()\"\n [placeholder]=\"placeholder ? (placeholder | translate) : ''\"\n [required]=\"required\"\n [value]=\"displayValue\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.maxlength]=\"maxlength\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [attr.aria-describedby]=\"messageKey() ? identity.id + '-error' : null\"\n />\n\n @if (messageKey()) {\n <small\n [id]=\"identity.id + '-error'\"\n [ngClass]=\"getInvalidMessageClass()\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ messageKey() | translate }}\n </small>\n }\n </div>\n", styles: [".sdc-mask .sdc-mask__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-mask .sdc-mask__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:1;padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);min-width:0}.sdc-mask .sdc-mask__label-text{display:inline-flex;align-items:center}.sdc-mask .required-field{margin-left:var(--sdc-form-required-ml);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:400}.sdc-mask .sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sdc-mask .sdc-mask__info-tooltip-wrap{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0;margin:0}.sdc-mask .sdc-mask__info-tooltip-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--sdc-form-tooltip-size);height:var(--sdc-form-tooltip-size);line-height:1;cursor:pointer;color:var(--sdc-form-tooltip-color)}.sdc-mask .sdc-mask__input{width:100%;border:1px solid var(--sdc-formfield-default-border)!important;border-radius:var(--sdc-formfield-border-radius)!important;min-height:var(--sdc-formfield-default-height)!important;height:var(--sdc-formfield-default-height)!important;max-height:var(--sdc-formfield-default-height)!important;line-height:var(--sdc-formfield-default-line-height)!important;padding:0 var(--sdc-form-input-padding-x)!important;background-color:var(--sdc-formfield-default-bg)!important;color:var(--p-text-color, #111827)!important;font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;box-sizing:border-box!important;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.sdc-mask .sdc-mask__input:focus,.sdc-mask .sdc-mask__input:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, var(--sdc-tab-primary, #007bff))!important;box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 2px rgba(0, 123, 255, .14))!important}.sdc-mask .sdc-mask__input:disabled{background-color:var(--sdc-formfield-disabled-bg)!important;cursor:not-allowed!important}.sdc-mask .sdc-mask__input.sdc-mask__input--invalid,.sdc-mask .sdc-mask__input[aria-invalid=true],.sdc-mask .sdc-mask__input.ng-invalid.ng-dirty,.sdc-mask .sdc-mask__input.ng-invalid.ng-touched{border-color:var(--sdc-formfield-invalid-border, var(--sdc-error-color, #d98888))!important;box-shadow:none!important}.sdc-mask .sdc-mask__input.sdc-mask__input--invalid:focus,.sdc-mask .sdc-mask__input.sdc-mask__input--invalid:focus-visible,.sdc-mask .sdc-mask__input[aria-invalid=true]:focus,.sdc-mask .sdc-mask__input[aria-invalid=true]:focus-visible,.sdc-mask .sdc-mask__input.ng-invalid.ng-dirty:focus,.sdc-mask .sdc-mask__input.ng-invalid.ng-dirty:focus-visible,.sdc-mask .sdc-mask__input.ng-invalid.ng-touched:focus,.sdc-mask .sdc-mask__input.ng-invalid.ng-touched:focus-visible{border-color:var(--sdc-formfield-invalid-border, var(--sdc-error-color, #d98888))!important;box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
62
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"sdc-mask\">\n @if (labelKey() || infoTooltip) {\n <div class=\"sdc-mask__label-row\">\n @if (labelKey()) {\n <label [for]=\"identity.id\" class=\"sdc-mask__label\">\n <span class=\"sdc-mask__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n }\n @if (required) {\n <span class=\"sr-only\">\n {{ 'platform.datacore.accessibility.required_field' | translate }}\n </span>\n }\n </span>\n </label>\n }\n @if (infoTooltip) {\n <sdc-tooltip\n class=\"sdc-mask__info-tooltip-wrap\"\n [pTooltip]=\"infoTooltip\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipEvent]=\"infoTooltipEvent\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <i class=\"fas fa-info-circle sdc-mask__info-tooltip-icon\" aria-hidden=\"true\"></i>\n </sdc-tooltip>\n }\n </div>\n }\n\n <input\n class=\"sdc-mask__input\"\n (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n [id]=\"identity.id\"\n [name]=\"identity.name\"\n [ngClass]=\"getInvalidClass()\"\n [class.sdc-mask__input--invalid]=\"invalid\"\n [ngStyle]=\"getInputStyle()\"\n [placeholder]=\"placeholder ? (placeholder | translate) : ''\"\n [required]=\"required\"\n [value]=\"displayValue\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.maxlength]=\"maxlength\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [attr.aria-describedby]=\"messageKey() ? identity.id + '-error' : null\"\n />\n\n @if (messageKey()) {\n <small\n [id]=\"identity.id + '-error'\"\n [ngClass]=\"getInvalidMessageClass()\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ messageKey() | translate }}\n </small>\n }\n </div>\n", styles: [".sdc-mask .sdc-mask__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-mask .sdc-mask__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:1;padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);min-width:0}.sdc-mask .sdc-mask__label-text{display:inline-flex;align-items:center}.sdc-mask .required-field{margin-left:var(--sdc-form-required-ml);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:400}.sdc-mask .sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sdc-mask .sdc-mask__info-tooltip-wrap{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0;margin:0}.sdc-mask .sdc-mask__info-tooltip-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--sdc-form-tooltip-size);height:var(--sdc-form-tooltip-size);line-height:1;cursor:pointer;color:var(--sdc-form-tooltip-color)}.sdc-mask .sdc-mask__input{width:100%;border:1px solid var(--sdc-formfield-default-border)!important;border-radius:var(--sdc-formfield-border-radius)!important;min-height:var(--sdc-formfield-default-height)!important;height:var(--sdc-formfield-default-height)!important;max-height:var(--sdc-formfield-default-height)!important;line-height:var(--sdc-formfield-default-line-height)!important;padding:0 var(--sdc-form-input-padding-x)!important;background-color:var(--sdc-formfield-default-bg)!important;color:var(--p-text-color, #111827)!important;font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;box-sizing:border-box!important;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.sdc-mask .sdc-mask__input:focus,.sdc-mask .sdc-mask__input:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, var(--sdc-tab-primary, #007bff))!important;box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 2px rgba(0, 123, 255, .14))!important}.sdc-mask .sdc-mask__input:disabled{background-color:var(--sdc-formfield-disabled-bg)!important;cursor:not-allowed!important}.sdc-mask .sdc-mask__input.sdc-mask__input--invalid,.sdc-mask .sdc-mask__input[aria-invalid=true],.sdc-mask .sdc-mask__input.ng-invalid.ng-dirty,.sdc-mask .sdc-mask__input.ng-invalid.ng-touched{border-color:var(--sdc-formfield-invalid-border, var(--sdc-error-color, #d98888))!important;box-shadow:none!important}.sdc-mask .sdc-mask__input.sdc-mask__input--invalid:focus,.sdc-mask .sdc-mask__input.sdc-mask__input--invalid:focus-visible,.sdc-mask .sdc-mask__input[aria-invalid=true]:focus,.sdc-mask .sdc-mask__input[aria-invalid=true]:focus-visible,.sdc-mask .sdc-mask__input.ng-invalid.ng-dirty:focus,.sdc-mask .sdc-mask__input.ng-invalid.ng-dirty:focus-visible,.sdc-mask .sdc-mask__input.ng-invalid.ng-touched:focus,.sdc-mask .sdc-mask__input.ng-invalid.ng-touched:focus-visible{border-color:var(--sdc-formfield-invalid-border, var(--sdc-error-color, #d98888))!important;box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled", "allowHtml"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
63
63
|
}
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaskComponent, decorators: [{
|
|
65
65
|
type: Component,
|