@sarasanalytics-com/design-system 0.0.190 → 0.0.192
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/esm2022/lib/dialog/dialog.component.mjs +2 -2
- package/esm2022/lib/dropdown/ng-select/ng-select.component.mjs +76 -13
- package/esm2022/lib/message-banner-v2/message-banner-v2.component.mjs +20 -3
- package/fesm2022/sarasanalytics-com-design-system.mjs +95 -16
- package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
- package/lib/dropdown/ng-select/ng-select.component.d.ts +27 -2
- package/lib/message-banner-v2/message-banner-v2.component.d.ts +9 -1
- package/package.json +1 -1
- package/styles/styles.css +1 -0
|
@@ -90,7 +90,7 @@ export class DialogComponent {
|
|
|
90
90
|
this.dialogButtonClick.emit({ type: 'form-reset' });
|
|
91
91
|
}
|
|
92
92
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DialogComponent, deps: [{ token: i1.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: DialogComponent, isStandalone: true, selector: "sa-dialog", inputs: { dialogData: "dialogData" }, outputs: { dialogButtonClick: "dialogButtonClick" }, ngImport: i0, template: "<div class=\"dialog-container {{ dialogData?.className }}\">\n <!-- top banner region -->\n <div class=\"top-container\">\n @if (!!dialogData?.topMessageBanners) {\n <div class=\"top-message-container\">\n @for (\n messageBanner of dialogData?.topMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n [style]=\"messageBanner?.style || 'width:39.438rem'\"\n >\n <div class=\"{{ messageBanner?.className }} message-content-style\">\n {{ messageBanner?.content }}\n </div>\n </sa-message-banner>\n }\n </div>\n }\n @if(!!dialogData?.topRegionIcon){\n <div class=\"top-icon-container\">\n <sa-icon\n [icon]=\"dialogData?.topRegionIcon\"\n class=\"d-flex\"\n size=\"{{ dialogData?.topRegionIconSize }}\"\n ></sa-icon>\n </div>\n }\n @if (!!dialogData?.closeButton || dialogData?.showCloseButton) {\n <div class=\"cross-btn\" (click)=\"onCloseButtonClick($event)\">\n <sa-icon\n [icon]=\"dialogData?.closeButton || 'closeOutlined'\"\n class=\"d-flex\"\n size=\"{{ dialogData?.closeButtonSize || '20' }}\"\n ></sa-icon>\n </div>\n }\n </div>\n <!-- middle region -->\n @if (!!dialogData?.middleRegion) {\n <ng-container *ngIf=\"dialogData?.middleRegion as middleRegion\">\n <div class=\"image-description-container {{ middleRegion?.className }}\">\n <sa-message-banner-v2\n [messageType]=\"middleRegion?.messageType || 'default'\"\n [messageIcon]=\"middleRegion?.messageIcon\"\n [messageIconSize]=\"middleRegion?.messageIconSize\"\n [title]=\"middleRegion?.title\"\n [description]=\"middleRegion?.description\"\n [buttons]=\"middleRegion?.buttons\"\n [formConfig]=\"middleRegion?.content?.formConfig\"\n (onFormEvent)=\"onUnifiedFormEvent($event)\"\n (buttonClick)=\"middleRegion?.buttons ? onButtonClick($event) : ''\"\n >\n </sa-message-banner-v2>\n </div>\n </ng-container>\n }\n <!-- lower message banner region -->\n @if (!!dialogData?.lowerMessageBanners) {\n <div class=\"lower-message-container\">\n @for (\n messageBanner of dialogData?.lowerMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [buttonIcon]=\"messageBanner?.buttonIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n [style]=\"messageBanner?.style || 'width:-webkit-fill-available'\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n >\n <div\n class=\"{{ messageBanner?.className }} message-content-style\"\n ></div>\n {{ messageBanner?.content }}\n </sa-message-banner>\n }\n </div>\n }\n <!-- button region -->\n @if (!!dialogData?.buttons) {\n <div class=\"button-group-container\">\n @for (button of dialogData?.buttons; track button.text) {\n <sa-button\n [text]=\"button.text\"\n [icon]=\"button.icon\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [state]=\"button.state\"\n [iconPosition]=\"button.iconPosition\"\n [buttonIconSize]=\"button.buttonIconSize\"\n (onClickEvent)=\"onButtonClick(button, $event)\"\n role=\"button\"\n [attr.aria-label]=\"button.text\"\n >\n </sa-button>\n }\n </div>\n }\n @if (!!dialogData?.buttonsWithType) {\n <div class=\"buttonWithType-group-container\">\n @for (button of dialogData?.buttonsWithType; track button.text) {\n @if (button?.type === \"checkbox\") {\n <div class=\"checkbox-container {{ button.className }}\">\n <mat-checkbox [id]=\"button.id\" (change)=\"onButtonClick(button)\" class=\"checkbox-style\">{{\n button.text\n }}</mat-checkbox>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;gap:var(--medium-28px);align-items:center;position:relative;overflow-y:auto;overflow-x:hidden}.dialog-container.common-action-dialog{align-items:normal}::ng-deep .dialog-container.common-action-dialog .error-page{justify-content:flex-start}::ng-deep .dialog-container.common-action-dialog .title-description{align-items:flex-start}.dialog-container.common-action-dialog .button-group-container{justify-content:flex-end}.top-message-container,.lower-message-container{display:flex;align-items:center;flex-direction:column;gap:var(--medium-28px)}.lower-message-container{width:-webkit-fill-available}::ng-deep .lower-message-container .content{justify-content:center;align-items:center;gap:var(--small-4px)}::ng-deep .image-description-container .image-container{margin-bottom:0}::ng-deep .image-description-container .content-container{gap:var(--medium-28px)}::ng-deep .image-description-container .title-class{font-size:var(--medium-22px);font-weight:500;line-height:var(--medium-28px)}::ng-deep .image-description-container .description{color:var(--text-mediumemphasis, #6D6979);font-size:var(--small-16px);line-height:var(--medium-24px);letter-spacing:.5px}.top-message-container .message-content-style{display:flex;justify-content:center;flex:1;color:var(--text-primary, #825CEE)}.lower-message-container .message-content-style{display:flex;align-items:center}::ng-deep .image-description-container .title-description{display:flex;flex-direction:column;gap:var(--small-8px)}.button-group-container{display:flex;gap:var(--small-12px);justify-content:center}::ng-deep .checkboxButton .mdc-checkbox__background{width:var(--small-16px);height:var(--small-16px);border:1.5px solid currentColor}::ng-deep .checkboxButton .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:#757575}::ng-deep .checkboxButton .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 21px) / 2)}::ng-deep .checkboxButton .mdc-form-field{display:flex;align-items:center}::ng-deep .checkboxButton .mdc-label{color:var(--text-mediumemphasis, #6D6979);text-align:center;font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.dialog-container .cross-btn{position:absolute;top:0;right:0;cursor:pointer}.dialog-container.common-action-dialog .cross-btn{position:relative;top:0;right:0;cursor:pointer;align-items:center;display:flex}.dialog-container.common-action-dialog .top-container{display:flex;justify-content:space-between}::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{border-color:var(--primary-500);background-color:var(--primary-500)}.image-description-container{width:100%;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: MessageBannerComponent, selector: "sa-message-banner", inputs: ["type", "actionText", "content", "bannerIcon", "bannerIconSize", "buttonIcon", "buttonType", "buttonIconPosition", "buttonSize", "buttonIconSize", "button", "onAction"], outputs: ["actionClick"] }, { kind: "component", type: MessageBannerV2Component, selector: "sa-message-banner-v2", inputs: ["messageType", "contactUrl", "spacingBetweenImageAndDescription", "contentGap", "titleClass", "descriptionClass", "banner", "formConfig", "prebuiltFormFields", "messageIcon", "messageIconSize", "title", "description", "buttons"], outputs: ["onFormEvent", "buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatDialogModule }] }); }
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: DialogComponent, isStandalone: true, selector: "sa-dialog", inputs: { dialogData: "dialogData" }, outputs: { dialogButtonClick: "dialogButtonClick" }, ngImport: i0, template: "<div class=\"dialog-container {{ dialogData?.className }}\">\n <!-- top banner region -->\n <div class=\"top-container\">\n @if (!!dialogData?.topMessageBanners) {\n <div class=\"top-message-container\">\n @for (\n messageBanner of dialogData?.topMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n [style]=\"messageBanner?.style || 'width:39.438rem'\"\n >\n <div class=\"{{ messageBanner?.className }} message-content-style\">\n {{ messageBanner?.content }}\n </div>\n </sa-message-banner>\n }\n </div>\n }\n @if(!!dialogData?.topRegionIcon){\n <div class=\"top-icon-container\">\n <sa-icon\n [icon]=\"dialogData?.topRegionIcon\"\n class=\"d-flex\"\n size=\"{{ dialogData?.topRegionIconSize }}\"\n ></sa-icon>\n </div>\n }\n @if (!!dialogData?.closeButton || dialogData?.showCloseButton) {\n <div class=\"cross-btn\" (click)=\"onCloseButtonClick($event)\">\n <sa-icon\n [icon]=\"dialogData?.closeButton || 'closeOutlined'\"\n class=\"d-flex\"\n size=\"{{ dialogData?.closeButtonSize || '20' }}\"\n ></sa-icon>\n </div>\n }\n </div>\n <!-- middle region -->\n @if (!!dialogData?.middleRegion) {\n <ng-container *ngIf=\"dialogData?.middleRegion as middleRegion\">\n <div class=\"image-description-container {{ middleRegion?.className }}\">\n <sa-message-banner-v2\n [messageType]=\"middleRegion?.messageType || 'default'\"\n [messageIcon]=\"middleRegion?.messageIcon\"\n [messageIconSize]=\"middleRegion?.messageIconSize\"\n [title]=\"middleRegion?.title\"\n [description]=\"middleRegion?.description\"\n [buttons]=\"middleRegion?.buttons\"\n [formConfig]=\"middleRegion?.content?.formConfig\"\n (onFormEvent)=\"onUnifiedFormEvent($event)\"\n (buttonClick)=\"middleRegion?.buttons ? onButtonClick($event) : ''\"\n >\n </sa-message-banner-v2>\n </div>\n </ng-container>\n }\n <!-- lower message banner region -->\n @if (!!dialogData?.lowerMessageBanners) {\n <div class=\"lower-message-container\">\n @for (\n messageBanner of dialogData?.lowerMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [buttonIcon]=\"messageBanner?.buttonIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n [style]=\"messageBanner?.style || 'width:-webkit-fill-available'\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n >\n <div\n class=\"{{ messageBanner?.className }} message-content-style\"\n ></div>\n {{ messageBanner?.content }}\n </sa-message-banner>\n }\n </div>\n }\n <!-- button region -->\n @if (!!dialogData?.buttons) {\n <div class=\"button-group-container\">\n @for (button of dialogData?.buttons; track button.text) {\n <sa-button\n [text]=\"button.text\"\n [icon]=\"button.icon\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [state]=\"button.state\"\n [iconPosition]=\"button.iconPosition\"\n [buttonIconSize]=\"button.buttonIconSize\"\n (onClickEvent)=\"onButtonClick(button, $event)\"\n role=\"button\"\n [attr.aria-label]=\"button.text\"\n >\n </sa-button>\n }\n </div>\n }\n @if (!!dialogData?.buttonsWithType) {\n <div class=\"buttonWithType-group-container\">\n @for (button of dialogData?.buttonsWithType; track button.text) {\n @if (button?.type === \"checkbox\") {\n <div class=\"checkbox-container {{ button.className }}\">\n <mat-checkbox [id]=\"button.id\" (change)=\"onButtonClick(button)\" class=\"checkbox-style\">{{\n button.text\n }}</mat-checkbox>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;gap:var(--medium-28px);align-items:center;position:relative;overflow-y:auto;overflow-x:hidden}.dialog-container.common-action-dialog{align-items:normal}::ng-deep .dialog-container.common-action-dialog .error-page{justify-content:flex-start}::ng-deep .dialog-container.common-action-dialog .title-description{align-items:flex-start}.dialog-container.common-action-dialog .button-group-container{justify-content:flex-end}.top-message-container,.lower-message-container{display:flex;align-items:center;flex-direction:column;gap:var(--medium-28px)}.lower-message-container{width:-webkit-fill-available}::ng-deep .lower-message-container .content{justify-content:center;align-items:center;gap:var(--small-4px)}::ng-deep .image-description-container .image-container{margin-bottom:0}::ng-deep .image-description-container .content-container{gap:var(--medium-28px)}::ng-deep .image-description-container .title-class{font-size:var(--medium-22px);font-weight:500;line-height:var(--medium-28px)}::ng-deep .image-description-container .description{color:var(--text-mediumemphasis, #6D6979);font-size:var(--small-16px);line-height:var(--medium-24px);letter-spacing:.5px}.top-message-container .message-content-style{display:flex;justify-content:center;flex:1;color:var(--text-primary, #825CEE)}.lower-message-container .message-content-style{display:flex;align-items:center}::ng-deep .image-description-container .title-description{display:flex;flex-direction:column;gap:var(--small-8px)}.button-group-container{display:flex;gap:var(--small-12px);justify-content:center}::ng-deep .checkboxButton .mdc-checkbox__background{width:var(--small-16px);height:var(--small-16px);border:1.5px solid currentColor}::ng-deep .checkboxButton .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:#757575}::ng-deep .checkboxButton .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 21px) / 2)}::ng-deep .checkboxButton .mdc-form-field{display:flex;align-items:center}::ng-deep .checkboxButton .mdc-label{color:var(--text-mediumemphasis, #6D6979);text-align:center;font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.dialog-container .cross-btn{position:absolute;top:0;right:0;cursor:pointer}.dialog-container.common-action-dialog .cross-btn{position:relative;top:0;right:0;cursor:pointer;align-items:center;display:flex}.dialog-container.common-action-dialog .top-container{display:flex;justify-content:space-between}::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{border-color:var(--primary-500);background-color:var(--primary-500)}.image-description-container{width:100%;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: MessageBannerComponent, selector: "sa-message-banner", inputs: ["type", "actionText", "content", "bannerIcon", "bannerIconSize", "buttonIcon", "buttonType", "buttonIconPosition", "buttonSize", "buttonIconSize", "button", "onAction"], outputs: ["actionClick"] }, { kind: "component", type: MessageBannerV2Component, selector: "sa-message-banner-v2", inputs: ["messageType", "contactUrl", "spacingBetweenImageAndDescription", "contentGap", "titleClass", "descriptionClass", "banner", "formConfig", "prebuiltFormFields", "messageIcon", "messageIconSize", "title", "description", "buttons"], outputs: ["onContactUsClick", "onFormEvent", "buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatDialogModule }] }); }
|
|
94
94
|
}
|
|
95
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DialogComponent, decorators: [{
|
|
96
96
|
type: Component,
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
107
107
|
}], dialogButtonClick: [{
|
|
108
108
|
type: Output
|
|
109
109
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBU2pDLE1BQU0sT0FBTyxlQUFlO0lBa0IxQixZQUNxQixTQUF3QyxFQUNmLElBQVM7UUFEbEMsY0FBUyxHQUFULFNBQVMsQ0FBK0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFLO1FBbkJ2RCxlQUFVLEdBQTJCLEVBQUUsQ0FBQztRQWU5QixzQkFBaUIsR0FBRyxJ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V0FDUCxDQUFDLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQzs7MEJBdUI5SixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBbEI1QixVQUFVO3NCQUFsQixLQUFLO2dCQWNJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWJhbm5lci9tZXNzYWdlLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ2xpY2tFdmVudCwgQnV0dG9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24taW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJWMkNvbXBvbmVudCB9IGZyb20gJy4uL21lc3NhZ2UtYmFubmVyLXYyL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWRpYWxvZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNZXNzYWdlQmFubmVyQ29tcG9uZW50LCBNZXNzYWdlQmFubmVyVjJDb21wb25lbnQsIENvbW1vbk1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBNYXRDaGVja2JveE1vZHVsZSwgSWNvbkNvbXBvbmVudCwgTWF0RGlhbG9nTW9kdWxlLCBGb3JtSW5wdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQge1xuICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIEBJbnB1dCgpIGRpYWxvZ0RhdGE6IHtcbiAgICB0b3BNZXNzYWdlQmFubmVycz86IGFueVtdO1xuICAgIHRvcFJlZ2lvbkljb25TaXplPzogc3RyaW5nO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBjbG9zZUJ1dHRvblNpemU/OiBzdHJpbmc7XG4gICAgbWlkZGxlUmVnaW9uPzogYW55O1xuICAgIHRvcFJlZ2lvbkljb24/OiBzdHJpbmc7XG4gICAgbG93ZXJNZXNzYWdlQmFubmVycz86IGFueVtdO1xuICAgIGJ1dHRvbnM/OiBCdXR0b25JbnRlcmZhY2VbXTtcbiAgICBidXR0b25zV2l0aFR5cGU/OiBhbnlbXTtcbiAgICBjbG9zZUJ1dHRvbj86IHN0cmluZztcbiAgICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICB9O1xuXG4gIEBPdXRwdXQoKSBkaWFsb2dCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nQ29tcG9uZW50PixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueVxuICApIHtcbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmRpYWxvZ0RhdGEgPSB0aGlzLmRhdGE7XG4gICAgfVxuICB9XG5cbiAgb25CdXR0b25DbGljayhidXR0b246IGFueSwgZXZlbnQ/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQ/LmV2dCkge1xuICAgICAgZXZlbnQ/LmV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQ/LmV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dCdXR0b25DbGljay5lbWl0KHtldmVudCwgYnV0dG9ufSk7XG4gIH1cbiAgb25NaWRkbGVSZWdpb25CdXR0b25DbGljayhldmVudDoge2J1dHRvbjogYW55LCBkYXRhPzogYW55fSk6IHZvaWQge1xuICAgIC8vIFBhc3MgdGhlIGV2ZW50IHVwIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5kYXRhLm9uTWlkZGxlUmVnaW9uQnV0dG9uQ2xpY2s/LihldmVudCk7XG4gIH1cbiAgaGFuZGxlQnV0dG9uQ2xpY2soZXZlbnQ6IEJ1dHRvbkNsaWNrRXZlbnQpIHtcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoe2V2ZW50fSk7XG4gIH1cblxuICBvbkNsb3NlQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dEYXRhPy5taWRkbGVSZWdpb24/LmNvbnRlbnQ/LmZvcm1Db25maWc/LmZpZWxkcz8uZm9yRWFjaCgoaW5wdXQ6IGFueSkgPT4ge1xuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9KTtcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhPy5taWRkbGVSZWdpb24/LmNvbnRlbnQ/LmZvcm1Db25maWcpIHtcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5taWRkbGVSZWdpb24uY29udGVudC5mb3JtQ29uZmlnLmNoaXBzID0gW107XG4gICAgfSAgICBcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyBldmVudDogZXZlbnQsIHR5cGU6ICdjbG9zZScgfSk7XG4gIH1cbi8vIGFsbCBmb3JtIHJlbGF0ZWQgZXZlbnRzXG4gIG9uVW5pZmllZEZvcm1FdmVudChldmVudDoge3R5cGU6IHN0cmluZywgZGF0YTogYW55fSk6IHZvaWQge1xuICAgIHN3aXRjaChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdmb3JtLWlucHV0LWNoYW5nZSc6XG4gICAgICAgIHRoaXMub25Gb3JtSW5wdXRDaGFuZ2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZm9ybS1tb2RlbC1jaGFuZ2UnOlxuICAgICAgICAvLyBTdG9yZSB0aGUgZm9ybSBtb2RlbCBmb3IgZXh0ZXJuYWwgYWNjZXNzXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlcyA9IHsgLi4udGhpcy5mb3JtVmFsdWVzLCAuLi5ldmVudC5kYXRhIH07XG4gICAgICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50OiBldmVudC5kYXRhLCB0eXBlOiAnZm9ybS1tb2RlbC1jaGFuZ2UnIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2N1c3RvbS1idXR0b24tY2xpY2snOlxuICAgICAgICAvLyBTdG9yZSBmb3JtIG1vZGVsIGRhdGEgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKGV2ZW50LmRhdGE/LmZvcm1Nb2RlbCkge1xuICAgICAgICAgIHRoaXMuZm9ybVZhbHVlcyA9IHsgLi4udGhpcy5mb3JtVmFsdWVzLCAuLi5ldmVudC5kYXRhLmZvcm1Nb2RlbCB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25CdXR0b25DbGljayhldmVudC5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGlwLXJlbW92ZSc6XG4gICAgICAgIHRoaXMub25SZW1vdmVVc2VyKGV2ZW50LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biBmb3JtIGV2ZW50IHR5cGU6JywgZXZlbnQudHlwZSk7XG4gICAgfVxuICB9XG4gIG9uRm9ybUlucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQgcHJvY2Vzc2VkVmFsdWUgPSBldmVudC52YWx1ZTsgXG4gICAgaWYgKGlzQXJyYXkoZXZlbnQudmFsdWUpKSB7XG4gICAgICBwcm9jZXNzZWRWYWx1ZSA9IGV2ZW50LnZhbHVlLm1hcCgoY2hpcDogYW55KSA9PiBjaGlwLnZhbHVlIHx8IGNoaXAubGFiZWwgfHwgY2hpcCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybVZhbHVlc1tldmVudC5sYWJlbF0gPSBwcm9jZXNzZWRWYWx1ZTtcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyBldmVudCwgdHlwZTogJ2Zvcm0taW5wdXQtY2hhbmdlJyB9KTtcbiAgfVxuXG4gIG9uUmVtb3ZlVXNlcihjaGlwOiBhbnkpIHtcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyBldmVudDogY2hpcCwgdHlwZTogJ2NoaXAtcmVtb3ZlJyB9KTtcbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCB0aGUgZm9ybSB0aHJvdWdoIG1lc3NhZ2UtYmFubmVyLXYyIGNvbXBvbmVudFxuICByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgLy8gRW1pdCBmb3JtIHJlc2V0IGV2ZW50IHRvIG1lc3NhZ2UtYmFubmVyLXYyXG4gICAgdGhpcy5mb3JtVmFsdWVzID0ge307XG4gICAgLy8gVGhlIG1lc3NhZ2UtYmFubmVyLXYyIGNvbXBvbmVudCB3aWxsIGhhbmRsZSB0aGUgYWN0dWFsIGZvcm0gcmVzZXRcbiAgICAvLyB3aGVuIGl0IHJlY2VpdmVzIHRoaXMgZXZlbnRcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyB0eXBlOiAnZm9ybS1yZXNldCcgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGFpbmVyIHt7IGRpYWxvZ0RhdGE/LmNsYXNzTmFtZSB9fVwiPlxuICA8IS0tIHRvcCBiYW5uZXIgcmVnaW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwidG9wLWNvbnRhaW5lclwiPlxuICAgIEBpZiAoISFkaWFsb2dEYXRhPy50b3BNZXNzYWdlQmFubmVycykge1xuICAgICAgPGRpdiBjbGFzcz1cInRvcC1tZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChcbiAgICAgICAgICBtZXNzYWdlQmFubmVyIG9mIGRpYWxvZ0RhdGE/LnRvcE1lc3NhZ2VCYW5uZXJzO1xuICAgICAgICAgIHRyYWNrIG1lc3NhZ2VCYW5uZXIuY29udGVudFxuICAgICAgICApIHtcbiAgICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXJcbiAgICAgICAgICAgIFt0eXBlXT1cIm1lc3NhZ2VCYW5uZXI/LnR5cGVcIlxuICAgICAgICAgICAgW2Jhbm5lckljb25dPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblwiXG4gICAgICAgICAgICBbYmFubmVySWNvblNpemVdPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblNpemUgfHwgJzI0J1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIm1lc3NhZ2VCYW5uZXI/LmJ1dHRvblwiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25CdXR0b25DbGljayhtZXNzYWdlQmFubmVyPy5idXR0b24sICRldmVudClcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIm1lc3NhZ2VCYW5uZXI/LnN0eWxlIHx8ICd3aWR0aDozOS40MzhyZW0nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgbWVzc2FnZUJhbm5lcj8uY2xhc3NOYW1lIH19IG1lc3NhZ2UtY29udGVudC1zdHlsZVwiPlxuICAgICAgICAgICAgICB7eyBtZXNzYWdlQmFubmVyPy5jb250ZW50IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NhLW1lc3NhZ2UtYmFubmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmKCEhZGlhbG9nRGF0YT8udG9wUmVnaW9uSWNvbil7XG4gICAgICA8ZGl2IGNsYXNzPVwidG9wLWljb24tY29udGFpbmVyXCI+XG4gICAgICAgIDxzYS1pY29uXG4gICAgICAgICAgW2ljb25dPVwiZGlhbG9nRGF0YT8udG9wUmVnaW9uSWNvblwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgIHNpemU9XCJ7eyBkaWFsb2dEYXRhPy50b3BSZWdpb25JY29uU2l6ZSB9fVwiXG4gICAgICAgID48L3NhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICghIWRpYWxvZ0RhdGE/LmNsb3NlQnV0dG9uIHx8IGRpYWxvZ0RhdGE/LnNob3dDbG9zZUJ1dHRvbikge1xuICAgICAgPGRpdiBjbGFzcz1cImNyb3NzLWJ0blwiIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8c2EtaWNvblxuICAgICAgICAgIFtpY29uXT1cImRpYWxvZ0RhdGE/LmNsb3NlQnV0dG9uIHx8ICdjbG9zZU91dGxpbmVkJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgIHNpemU9XCJ7eyBkaWFsb2dEYXRhPy5jbG9zZUJ1dHRvblNpemUgfHwgJzIwJyB9fVwiXG4gICAgICAgID48L3NhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8IS0tIG1pZGRsZSByZWdpb24gLS0+XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5taWRkbGVSZWdpb24pIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlhbG9nRGF0YT8ubWlkZGxlUmVnaW9uIGFzIG1pZGRsZVJlZ2lvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWRlc2NyaXB0aW9uLWNvbnRhaW5lciB7eyBtaWRkbGVSZWdpb24/LmNsYXNzTmFtZSB9fVwiPlxuICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXItdjJcbiAgICAgICAgW21lc3NhZ2VUeXBlXT1cIm1pZGRsZVJlZ2lvbj8ubWVzc2FnZVR5cGUgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgW21lc3NhZ2VJY29uXT1cIm1pZGRsZVJlZ2lvbj8ubWVzc2FnZUljb25cIlxuICAgICAgICBbbWVzc2FnZUljb25TaXplXT1cIm1pZGRsZVJlZ2lvbj8ubWVzc2FnZUljb25TaXplXCJcbiAgICAgICAgW3RpdGxlXT1cIm1pZGRsZVJlZ2lvbj8udGl0bGVcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwibWlkZGxlUmVnaW9uPy5kZXNjcmlwdGlvblwiXG4gICAgICAgIFtidXR0b25zXT1cIm1pZGRsZVJlZ2lvbj8uYnV0dG9uc1wiXG4gICAgICAgIFtmb3JtQ29uZmlnXT1cIm1pZGRsZVJlZ2lvbj8uY29udGVudD8uZm9ybUNvbmZpZ1wiXG4gICAgICAgIChvbkZvcm1FdmVudCk9XCJvblVuaWZpZWRGb3JtRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJtaWRkbGVSZWdpb24/LmJ1dHRvbnMgPyBvbkJ1dHRvbkNsaWNrKCRldmVudCkgOiAnJ1wiXG4gICAgICA+XG4gICAgICA8L3NhLW1lc3NhZ2UtYmFubmVyLXYyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cbiAgPCEtLSBsb3dlciBtZXNzYWdlIGJhbm5lciByZWdpb24gLS0+XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5sb3dlck1lc3NhZ2VCYW5uZXJzKSB7XG4gICAgPGRpdiBjbGFzcz1cImxvd2VyLW1lc3NhZ2UtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChcbiAgICAgICAgbWVzc2FnZUJhbm5lciBvZiBkaWFsb2dEYXRhPy5sb3dlck1lc3NhZ2VCYW5uZXJzO1xuICAgICAgICB0cmFjayBtZXNzYWdlQmFubmVyLmNvbnRlbnRcbiAgICAgICkge1xuICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXJcbiAgICAgICAgICBbdHlwZV09XCJtZXNzYWdlQmFubmVyPy50eXBlXCJcbiAgICAgICAgICBbYmFubmVySWNvbl09XCJtZXNzYWdlQmFubmVyPy5iYW5uZXJJY29uXCJcbiAgICAgICAgICBbYnV0dG9uSWNvbl09XCJtZXNzYWdlQmFubmVyPy5idXR0b25JY29uXCJcbiAgICAgICAgICBbYmFubmVySWNvblNpemVdPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblNpemUgfHwgJzI0J1wiXG4gICAgICAgICAgW2J1dHRvbl09XCJtZXNzYWdlQmFubmVyPy5idXR0b25cIlxuICAgICAgICAgIFtzdHlsZV09XCJtZXNzYWdlQmFubmVyPy5zdHlsZSB8fCAnd2lkdGg6LXdlYmtpdC1maWxsLWF2YWlsYWJsZSdcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKG1lc3NhZ2VCYW5uZXI/LmJ1dHRvbiwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInt7IG1lc3NhZ2VCYW5uZXI/LmNsYXNzTmFtZSB9fSBtZXNzYWdlLWNvbnRlbnQtc3R5bGVcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICB7eyBtZXNzYWdlQmFubmVyPy5jb250ZW50IH19XG4gICAgICAgIDwvc2EtbWVzc2FnZS1iYW5uZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgPCEtLSBidXR0b24gcmVnaW9uIC0tPlxuICBAaWYgKCEhZGlhbG9nRGF0YT8uYnV0dG9ucykge1xuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChidXR0b24gb2YgZGlhbG9nRGF0YT8uYnV0dG9uczsgdHJhY2sgYnV0dG9uLnRleHQpIHtcbiAgICAgICAgPHNhLWJ1dHRvblxuICAgICAgICAgIFt0ZXh0XT1cImJ1dHRvbi50ZXh0XCJcbiAgICAgICAgICBbaWNvbl09XCJidXR0b24uaWNvblwiXG4gICAgICAgICAgW3NpemVdPVwiYnV0dG9uLnNpemVcIlxuICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICBbc3RhdGVdPVwiYnV0dG9uLnN0YXRlXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImJ1dHRvbi5pY29uUG9zaXRpb25cIlxuICAgICAgICAgIFtidXR0b25JY29uU2l6ZV09XCJidXR0b24uYnV0dG9uSWNvblNpemVcIlxuICAgICAgICAgIChvbkNsaWNrRXZlbnQpPVwib25CdXR0b25DbGljayhidXR0b24sICRldmVudClcIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLnRleHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2EtYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5idXR0b25zV2l0aFR5cGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uV2l0aFR5cGUtZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChidXR0b24gb2YgZGlhbG9nRGF0YT8uYnV0dG9uc1dpdGhUeXBlOyB0cmFjayBidXR0b24udGV4dCkge1xuICAgICAgICBAaWYgKGJ1dHRvbj8udHlwZSA9PT0gXCJjaGVja2JveFwiKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lciB7eyBidXR0b24uY2xhc3NOYW1lIH19XCI+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtpZF09XCJidXR0b24uaWRcIiAoY2hhbmdlKT1cIm9uQnV0dG9uQ2xpY2soYnV0dG9uKVwiIGNsYXNzPVwiY2hlY2tib3gtc3R5bGVcIj57e1xuICAgICAgICAgICAgICBidXR0b24udGV4dFxuICAgICAgICAgICAgfX08L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBU2pDLE1BQU0sT0FBTyxlQUFlO0lBa0IxQixZQUNxQixTQUF3QyxFQUNmLElBQVM7UUFEbEMsY0FBUyxHQUFULFNBQVMsQ0FBK0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFLO1FBbkJ2RCxlQUFVLEdBQTJCLEVBQUUsQ0FBQztRQWU5QixzQkFBaUIsR0FBRyxJ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V0FDUCxDQUFDLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQzs7MEJBdUI5SixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBbEI1QixVQUFVO3NCQUFsQixLQUFLO2dCQWNJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWJhbm5lci9tZXNzYWdlLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ2xpY2tFdmVudCwgQnV0dG9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24taW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJWMkNvbXBvbmVudCB9IGZyb20gJy4uL21lc3NhZ2UtYmFubmVyLXYyL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWRpYWxvZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNZXNzYWdlQmFubmVyQ29tcG9uZW50LCBNZXNzYWdlQmFubmVyVjJDb21wb25lbnQsIENvbW1vbk1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBNYXRDaGVja2JveE1vZHVsZSwgSWNvbkNvbXBvbmVudCwgTWF0RGlhbG9nTW9kdWxlLCBGb3JtSW5wdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQge1xuICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIEBJbnB1dCgpIGRpYWxvZ0RhdGE6IHtcbiAgICB0b3BNZXNzYWdlQmFubmVycz86IGFueVtdO1xuICAgIHRvcFJlZ2lvbkljb25TaXplPzogc3RyaW5nO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBjbG9zZUJ1dHRvblNpemU/OiBzdHJpbmc7XG4gICAgbWlkZGxlUmVnaW9uPzogYW55O1xuICAgIHRvcFJlZ2lvbkljb24/OiBzdHJpbmc7XG4gICAgbG93ZXJNZXNzYWdlQmFubmVycz86IGFueVtdO1xuICAgIGJ1dHRvbnM/OiBCdXR0b25JbnRlcmZhY2VbXTtcbiAgICBidXR0b25zV2l0aFR5cGU/OiBhbnlbXTtcbiAgICBjbG9zZUJ1dHRvbj86IHN0cmluZztcbiAgICBzaG93Q2xvc2VCdXR0b24/OiBib29sZWFuO1xuICB9O1xuXG4gIEBPdXRwdXQoKSBkaWFsb2dCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nQ29tcG9uZW50PixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueVxuICApIHtcbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmRpYWxvZ0RhdGEgPSB0aGlzLmRhdGE7XG4gICAgfVxuICB9XG5cbiAgb25CdXR0b25DbGljayhidXR0b246IGFueSwgZXZlbnQ/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQ/LmV2dCkge1xuICAgICAgZXZlbnQ/LmV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQ/LmV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dCdXR0b25DbGljay5lbWl0KHtldmVudCwgYnV0dG9ufSk7XG4gIH1cbiAgb25NaWRkbGVSZWdpb25CdXR0b25DbGljayhldmVudDoge2J1dHRvbjogYW55LCBkYXRhPzogYW55fSk6IHZvaWQge1xuICAgIC8vIFBhc3MgdGhlIGV2ZW50IHVwIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5kYXRhLm9uTWlkZGxlUmVnaW9uQnV0dG9uQ2xpY2s/LihldmVudCk7XG4gIH1cbiAgaGFuZGxlQnV0dG9uQ2xpY2soZXZlbnQ6IEJ1dHRvbkNsaWNrRXZlbnQpIHtcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoe2V2ZW50fSk7XG4gIH1cblxuICBvbkNsb3NlQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dEYXRhPy5taWRkbGVSZWdpb24/LmNvbnRlbnQ/LmZvcm1Db25maWc/LmZpZWxkcz8uZm9yRWFjaCgoaW5wdXQ6IGFueSkgPT4ge1xuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9KTtcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhPy5taWRkbGVSZWdpb24/LmNvbnRlbnQ/LmZvcm1Db25maWcpIHtcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5taWRkbGVSZWdpb24uY29udGVudC5mb3JtQ29uZmlnLmNoaXBzID0gW107XG4gICAgfSAgICBcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyBldmVudDogZXZlbnQsIHR5cGU6ICdjbG9zZScgfSk7XG4gIH1cbi8vIGFsbCBmb3JtIHJlbGF0ZWQgZXZlbnRzXG4gIG9uVW5pZmllZEZvcm1FdmVudChldmVudDoge3R5cGU6IHN0cmluZywgZGF0YTogYW55fSk6IHZvaWQge1xuICAgIHN3aXRjaChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdmb3JtLWlucHV0LWNoYW5nZSc6XG4gICAgICAgIHRoaXMub25Gb3JtSW5wdXRDaGFuZ2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZm9ybS1tb2RlbC1jaGFuZ2UnOlxuICAgICAgICAvLyBTdG9yZSB0aGUgZm9ybSBtb2RlbCBmb3IgZXh0ZXJuYWwgYWNjZXNzXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlcyA9IHsgLi4udGhpcy5mb3JtVmFsdWVzLCAuLi5ldmVudC5kYXRhIH07XG4gICAgICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50OiBldmVudC5kYXRhLCB0eXBlOiAnZm9ybS1tb2RlbC1jaGFuZ2UnIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2N1c3RvbS1idXR0b24tY2xpY2snOlxuICAgICAgICAvLyBTdG9yZSBmb3JtIG1vZGVsIGRhdGEgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKGV2ZW50LmRhdGE/LmZvcm1Nb2RlbCkge1xuICAgICAgICAgIHRoaXMuZm9ybVZhbHVlcyA9IHsgLi4udGhpcy5mb3JtVmFsdWVzLCAuLi5ldmVudC5kYXRhLmZvcm1Nb2RlbCB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25CdXR0b25DbGljayhldmVudC5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGlwLXJlbW92ZSc6XG4gICAgICAgIHRoaXMub25SZW1vdmVVc2VyKGV2ZW50LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biBmb3JtIGV2ZW50IHR5cGU6JywgZXZlbnQudHlwZSk7XG4gICAgfVxuICB9XG4gIG9uRm9ybUlucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQgcHJvY2Vzc2VkVmFsdWUgPSBldmVudC52YWx1ZTsgXG4gICAgaWYgKGlzQXJyYXkoZXZlbnQudmFsdWUpKSB7XG4gICAgICBwcm9jZXNzZWRWYWx1ZSA9IGV2ZW50LnZhbHVlLm1hcCgoY2hpcDogYW55KSA9PiBjaGlwLnZhbHVlIHx8IGNoaXAubGFiZWwgfHwgY2hpcCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybVZhbHVlc1tldmVudC5sYWJlbF0gPSBwcm9jZXNzZWRWYWx1ZTtcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyBldmVudCwgdHlwZTogJ2Zvcm0taW5wdXQtY2hhbmdlJyB9KTtcbiAgfVxuXG4gIG9uUmVtb3ZlVXNlcihjaGlwOiBhbnkpIHtcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyBldmVudDogY2hpcCwgdHlwZTogJ2NoaXAtcmVtb3ZlJyB9KTtcbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCB0aGUgZm9ybSB0aHJvdWdoIG1lc3NhZ2UtYmFubmVyLXYyIGNvbXBvbmVudFxuICByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgLy8gRW1pdCBmb3JtIHJlc2V0IGV2ZW50IHRvIG1lc3NhZ2UtYmFubmVyLXYyXG4gICAgdGhpcy5mb3JtVmFsdWVzID0ge307XG4gICAgLy8gVGhlIG1lc3NhZ2UtYmFubmVyLXYyIGNvbXBvbmVudCB3aWxsIGhhbmRsZSB0aGUgYWN0dWFsIGZvcm0gcmVzZXRcbiAgICAvLyB3aGVuIGl0IHJlY2VpdmVzIHRoaXMgZXZlbnRcbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoeyB0eXBlOiAnZm9ybS1yZXNldCcgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGFpbmVyIHt7IGRpYWxvZ0RhdGE/LmNsYXNzTmFtZSB9fVwiPlxuICA8IS0tIHRvcCBiYW5uZXIgcmVnaW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwidG9wLWNvbnRhaW5lclwiPlxuICAgIEBpZiAoISFkaWFsb2dEYXRhPy50b3BNZXNzYWdlQmFubmVycykge1xuICAgICAgPGRpdiBjbGFzcz1cInRvcC1tZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChcbiAgICAgICAgICBtZXNzYWdlQmFubmVyIG9mIGRpYWxvZ0RhdGE/LnRvcE1lc3NhZ2VCYW5uZXJzO1xuICAgICAgICAgIHRyYWNrIG1lc3NhZ2VCYW5uZXIuY29udGVudFxuICAgICAgICApIHtcbiAgICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXJcbiAgICAgICAgICAgIFt0eXBlXT1cIm1lc3NhZ2VCYW5uZXI/LnR5cGVcIlxuICAgICAgICAgICAgW2Jhbm5lckljb25dPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblwiXG4gICAgICAgICAgICBbYmFubmVySWNvblNpemVdPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblNpemUgfHwgJzI0J1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIm1lc3NhZ2VCYW5uZXI/LmJ1dHRvblwiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25CdXR0b25DbGljayhtZXNzYWdlQmFubmVyPy5idXR0b24sICRldmVudClcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIm1lc3NhZ2VCYW5uZXI/LnN0eWxlIHx8ICd3aWR0aDozOS40MzhyZW0nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgbWVzc2FnZUJhbm5lcj8uY2xhc3NOYW1lIH19IG1lc3NhZ2UtY29udGVudC1zdHlsZVwiPlxuICAgICAgICAgICAgICB7eyBtZXNzYWdlQmFubmVyPy5jb250ZW50IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NhLW1lc3NhZ2UtYmFubmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmKCEhZGlhbG9nRGF0YT8udG9wUmVnaW9uSWNvbil7XG4gICAgICA8ZGl2IGNsYXNzPVwidG9wLWljb24tY29udGFpbmVyXCI+XG4gICAgICAgIDxzYS1pY29uXG4gICAgICAgICAgW2ljb25dPVwiZGlhbG9nRGF0YT8udG9wUmVnaW9uSWNvblwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgIHNpemU9XCJ7eyBkaWFsb2dEYXRhPy50b3BSZWdpb25JY29uU2l6ZSB9fVwiXG4gICAgICAgID48L3NhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICghIWRpYWxvZ0RhdGE/LmNsb3NlQnV0dG9uIHx8IGRpYWxvZ0RhdGE/LnNob3dDbG9zZUJ1dHRvbikge1xuICAgICAgPGRpdiBjbGFzcz1cImNyb3NzLWJ0blwiIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8c2EtaWNvblxuICAgICAgICAgIFtpY29uXT1cImRpYWxvZ0RhdGE/LmNsb3NlQnV0dG9uIHx8ICdjbG9zZU91dGxpbmVkJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgIHNpemU9XCJ7eyBkaWFsb2dEYXRhPy5jbG9zZUJ1dHRvblNpemUgfHwgJzIwJyB9fVwiXG4gICAgICAgID48L3NhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8IS0tIG1pZGRsZSByZWdpb24gLS0+XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5taWRkbGVSZWdpb24pIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlhbG9nRGF0YT8ubWlkZGxlUmVnaW9uIGFzIG1pZGRsZVJlZ2lvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWRlc2NyaXB0aW9uLWNvbnRhaW5lciB7eyBtaWRkbGVSZWdpb24/LmNsYXNzTmFtZSB9fVwiPlxuICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXItdjJcbiAgICAgICAgW21lc3NhZ2VUeXBlXT1cIm1pZGRsZVJlZ2lvbj8ubWVzc2FnZVR5cGUgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgW21lc3NhZ2VJY29uXT1cIm1pZGRsZVJlZ2lvbj8ubWVzc2FnZUljb25cIlxuICAgICAgICBbbWVzc2FnZUljb25TaXplXT1cIm1pZGRsZVJlZ2lvbj8ubWVzc2FnZUljb25TaXplXCJcbiAgICAgICAgW3RpdGxlXT1cIm1pZGRsZVJlZ2lvbj8udGl0bGVcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwibWlkZGxlUmVnaW9uPy5kZXNjcmlwdGlvblwiXG4gICAgICAgIFtidXR0b25zXT1cIm1pZGRsZVJlZ2lvbj8uYnV0dG9uc1wiXG4gICAgICAgIFtmb3JtQ29uZmlnXT1cIm1pZGRsZVJlZ2lvbj8uY29udGVudD8uZm9ybUNvbmZpZ1wiXG4gICAgICAgIChvbkZvcm1FdmVudCk9XCJvblVuaWZpZWRGb3JtRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJtaWRkbGVSZWdpb24/LmJ1dHRvbnMgPyBvbkJ1dHRvbkNsaWNrKCRldmVudCkgOiAnJ1wiXG4gICAgICA+XG4gICAgICA8L3NhLW1lc3NhZ2UtYmFubmVyLXYyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cbiAgPCEtLSBsb3dlciBtZXNzYWdlIGJhbm5lciByZWdpb24gLS0+XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5sb3dlck1lc3NhZ2VCYW5uZXJzKSB7XG4gICAgPGRpdiBjbGFzcz1cImxvd2VyLW1lc3NhZ2UtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChcbiAgICAgICAgbWVzc2FnZUJhbm5lciBvZiBkaWFsb2dEYXRhPy5sb3dlck1lc3NhZ2VCYW5uZXJzO1xuICAgICAgICB0cmFjayBtZXNzYWdlQmFubmVyLmNvbnRlbnRcbiAgICAgICkge1xuICAgICAgICA8c2EtbWVzc2FnZS1iYW5uZXJcbiAgICAgICAgICBbdHlwZV09XCJtZXNzYWdlQmFubmVyPy50eXBlXCJcbiAgICAgICAgICBbYmFubmVySWNvbl09XCJtZXNzYWdlQmFubmVyPy5iYW5uZXJJY29uXCJcbiAgICAgICAgICBbYnV0dG9uSWNvbl09XCJtZXNzYWdlQmFubmVyPy5idXR0b25JY29uXCJcbiAgICAgICAgICBbYmFubmVySWNvblNpemVdPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblNpemUgfHwgJzI0J1wiXG4gICAgICAgICAgW2J1dHRvbl09XCJtZXNzYWdlQmFubmVyPy5idXR0b25cIlxuICAgICAgICAgIFtzdHlsZV09XCJtZXNzYWdlQmFubmVyPy5zdHlsZSB8fCAnd2lkdGg6LXdlYmtpdC1maWxsLWF2YWlsYWJsZSdcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKG1lc3NhZ2VCYW5uZXI/LmJ1dHRvbiwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInt7IG1lc3NhZ2VCYW5uZXI/LmNsYXNzTmFtZSB9fSBtZXNzYWdlLWNvbnRlbnQtc3R5bGVcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICB7eyBtZXNzYWdlQmFubmVyPy5jb250ZW50IH19XG4gICAgICAgIDwvc2EtbWVzc2FnZS1iYW5uZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgPCEtLSBidXR0b24gcmVnaW9uIC0tPlxuICBAaWYgKCEhZGlhbG9nRGF0YT8uYnV0dG9ucykge1xuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChidXR0b24gb2YgZGlhbG9nRGF0YT8uYnV0dG9uczsgdHJhY2sgYnV0dG9uLnRleHQpIHtcbiAgICAgICAgPHNhLWJ1dHRvblxuICAgICAgICAgIFt0ZXh0XT1cImJ1dHRvbi50ZXh0XCJcbiAgICAgICAgICBbaWNvbl09XCJidXR0b24uaWNvblwiXG4gICAgICAgICAgW3NpemVdPVwiYnV0dG9uLnNpemVcIlxuICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICBbc3RhdGVdPVwiYnV0dG9uLnN0YXRlXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImJ1dHRvbi5pY29uUG9zaXRpb25cIlxuICAgICAgICAgIFtidXR0b25JY29uU2l6ZV09XCJidXR0b24uYnV0dG9uSWNvblNpemVcIlxuICAgICAgICAgIChvbkNsaWNrRXZlbnQpPVwib25CdXR0b25DbGljayhidXR0b24sICRldmVudClcIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLnRleHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2EtYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5idXR0b25zV2l0aFR5cGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uV2l0aFR5cGUtZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgICBAZm9yIChidXR0b24gb2YgZGlhbG9nRGF0YT8uYnV0dG9uc1dpdGhUeXBlOyB0cmFjayBidXR0b24udGV4dCkge1xuICAgICAgICBAaWYgKGJ1dHRvbj8udHlwZSA9PT0gXCJjaGVja2JveFwiKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lciB7eyBidXR0b24uY2xhc3NOYW1lIH19XCI+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtpZF09XCJidXR0b24uaWRcIiAoY2hhbmdlKT1cIm9uQnV0dG9uQ2xpY2soYnV0dG9uKVwiIGNsYXNzPVwiY2hlY2tib3gtc3R5bGVcIj57e1xuICAgICAgICAgICAgICBidXR0b24udGV4dFxuICAgICAgICAgICAgfX08L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -15,6 +15,7 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
|
15
15
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
16
16
|
import { MatNativeDateModule } from '@angular/material/core';
|
|
17
17
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
18
|
+
import _ from 'lodash';
|
|
18
19
|
import * as i0 from "@angular/core";
|
|
19
20
|
import * as i1 from "@angular/common";
|
|
20
21
|
import * as i2 from "@angular/forms";
|
|
@@ -22,23 +23,74 @@ import * as i3 from "@ng-select/ng-select";
|
|
|
22
23
|
import * as i4 from "@angular/material/form-field";
|
|
23
24
|
import * as i5 from "@angular/material/input";
|
|
24
25
|
import * as i6 from "@angular/material/tooltip";
|
|
26
|
+
/**
|
|
27
|
+
* Custom ng-select dropdown component with Material Design styling and tooltip support.
|
|
28
|
+
*
|
|
29
|
+
* **Tooltip Behavior:**
|
|
30
|
+
* - Tooltips automatically appear on hover when text is truncated (exceeds character threshold)
|
|
31
|
+
* - Single-select values: Tooltip shows above the input (default threshold: 30 characters)
|
|
32
|
+
* - Multi-select chips: Tooltip shows above each chip (default threshold: 30 characters)
|
|
33
|
+
* - Dropdown options: Tooltip shows to the right of each option (default threshold: 30 characters)
|
|
34
|
+
* - Tooltips are automatically disabled when the dropdown panel is open to prevent overlap
|
|
35
|
+
*
|
|
36
|
+
* **Tooltip Position Rationale:**
|
|
37
|
+
* - `above`: Used for selected values and chips to avoid blocking the dropdown panel below
|
|
38
|
+
* - `right`: Used for dropdown options to avoid blocking adjacent items in the vertical list
|
|
39
|
+
*
|
|
40
|
+
* **Configurable via props:**
|
|
41
|
+
* - `optionLabelSize`: Character threshold for showing tooltips on dropdown options
|
|
42
|
+
* - `selectedLabelSize`: Character threshold for showing tooltips on selected values/chips
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* {
|
|
47
|
+
* key: 'mySelect',
|
|
48
|
+
* type: 'sa-ng-select',
|
|
49
|
+
* props: {
|
|
50
|
+
* options: [...],
|
|
51
|
+
* optionLabelSize: 40, // Show tooltip for options > 40 chars
|
|
52
|
+
* selectedLabelSize: 30 // Show tooltip for selected values > 30 chars
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
25
57
|
export class NgSelectComponent extends FieldType {
|
|
26
58
|
constructor() {
|
|
27
59
|
super(...arguments);
|
|
28
60
|
this.searchValue = '';
|
|
61
|
+
/**
|
|
62
|
+
* Tracks whether the dropdown panel is currently open.
|
|
63
|
+
* Used to disable tooltips on selected values when the panel is open to prevent UI overlap.
|
|
64
|
+
*/
|
|
29
65
|
this.isDropdownOpen = false;
|
|
66
|
+
/**
|
|
67
|
+
* Character threshold for showing tooltips on dropdown options.
|
|
68
|
+
* Tooltips appear when option label length exceeds this value.
|
|
69
|
+
* Configurable via props.optionLabelSize (default: 30)
|
|
70
|
+
*/
|
|
71
|
+
this.optionLabelSize = 30;
|
|
72
|
+
/**
|
|
73
|
+
* Character threshold for showing tooltips on selected values and chips.
|
|
74
|
+
* Tooltips appear when selected label length exceeds this value.
|
|
75
|
+
* Configurable via props.selectedLabelSize (default: 30)
|
|
76
|
+
*/
|
|
77
|
+
this.selectedLabelSize = 30;
|
|
78
|
+
/** Tooltip position for selected values and chips (default: 'above') */
|
|
79
|
+
this.selectedTooltipPosition = 'above';
|
|
80
|
+
/** Tooltip position for dropdown options (default: 'right') */
|
|
81
|
+
this.optionTooltipPosition = 'right';
|
|
30
82
|
this.expandedSummary = false;
|
|
31
83
|
}
|
|
32
84
|
onSearch(event) {
|
|
33
|
-
const searchValue = this.searchValue
|
|
34
|
-
const bindLabel = this.props
|
|
35
|
-
if (
|
|
36
|
-
this.filteredOptions = [...(this.
|
|
85
|
+
const searchValue = _.trim(this.searchValue).toLowerCase();
|
|
86
|
+
const bindLabel = this.props?.bindLabel || 'label';
|
|
87
|
+
if (_.isEmpty(searchValue)) {
|
|
88
|
+
this.filteredOptions = [...(this.props?.options || [])];
|
|
37
89
|
return;
|
|
38
90
|
}
|
|
39
|
-
this.filteredOptions = (this.
|
|
40
|
-
const label = opt
|
|
41
|
-
return String(label)
|
|
91
|
+
this.filteredOptions = _.filter(this.props?.options || [], (opt) => {
|
|
92
|
+
const label = _.get(opt, bindLabel, '');
|
|
93
|
+
return _.includes(_.toLower(String(label)), searchValue);
|
|
42
94
|
});
|
|
43
95
|
}
|
|
44
96
|
ngOnInit() {
|
|
@@ -49,6 +101,10 @@ export class NgSelectComponent extends FieldType {
|
|
|
49
101
|
if ((this.formControl.value === null || this.formControl.value === undefined) && defaultVal !== undefined) {
|
|
50
102
|
this.formControl.setValue(defaultVal);
|
|
51
103
|
}
|
|
104
|
+
this.optionLabelSize = this.props?.optionLabelSize || 30;
|
|
105
|
+
this.selectedLabelSize = this.props?.selectedLabelSize || 30;
|
|
106
|
+
this.selectedTooltipPosition = this.props?.selectedTooltipPosition || 'above';
|
|
107
|
+
this.optionTooltipPosition = this.props?.optionTooltipPosition || 'right';
|
|
52
108
|
}
|
|
53
109
|
ngDoCheck() {
|
|
54
110
|
if (this.props.options !== this._options) {
|
|
@@ -59,7 +115,7 @@ export class NgSelectComponent extends FieldType {
|
|
|
59
115
|
}
|
|
60
116
|
// (Optional) Select/Deselect all helpers
|
|
61
117
|
allSelected() {
|
|
62
|
-
return this.props?.selectedValues
|
|
118
|
+
return this.props?.selectedValues?.length === this.props?.options?.length;
|
|
63
119
|
}
|
|
64
120
|
toggleSelectAll() {
|
|
65
121
|
const bindValue = this.props.bindValue || 'value';
|
|
@@ -67,7 +123,7 @@ export class NgSelectComponent extends FieldType {
|
|
|
67
123
|
this.props.selectedValues = [];
|
|
68
124
|
}
|
|
69
125
|
else {
|
|
70
|
-
this.props.selectedValues = (this.
|
|
126
|
+
this.props.selectedValues = _.map(this.props?.options || [], o => o[bindValue]);
|
|
71
127
|
}
|
|
72
128
|
}
|
|
73
129
|
clearRemaining(items, clear) {
|
|
@@ -86,10 +142,17 @@ export class NgSelectComponent extends FieldType {
|
|
|
86
142
|
clearSearch(event) {
|
|
87
143
|
this.searchValue = '';
|
|
88
144
|
event.stopPropagation();
|
|
89
|
-
this.filteredOptions = [...this.
|
|
145
|
+
this.filteredOptions = [...(this.props?.options || [])];
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Helper method to safely convert a value to string for tooltip length checks.
|
|
149
|
+
* Handles null, undefined, and primitive values gracefully.
|
|
150
|
+
*/
|
|
151
|
+
toSafeString(value) {
|
|
152
|
+
return String(value ?? '');
|
|
90
153
|
}
|
|
91
154
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: NgSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: NgSelectComponent, isStandalone: true, selector: "sa-ng-select", providers: [IconService], usesInheritance: true, ngImport: i0, template: "<div class=\"ng-select-tooltip-wrapper\"\n [matTooltip]=\"(!props?.multiple && formControl?.value) ? ((formControl?.value[props?.bindLabel || 'label'] || formControl?.value)?.length > 30 ? (formControl?.value[props?.bindLabel || 'label'] || formControl?.value) : '') : ''\"\n matTooltipPosition=\"above\"\n [matTooltipDisabled]=\"isDropdownOpen\">\n<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" \n class=\"ng-select-custom\"\n (open)=\"isDropdownOpen = true\"\n (close)=\"isDropdownOpen = false\">\n\n @if(!!props?.showSearchBar){\n <ng-template ng-header-tmp>\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n </ng-template>\n }\n <!-- Option template with a checkbox in front of each row -->\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\n <div class=\"option-row\" \n [matTooltip]=\"(item[props.bindLabel || 'label']?.length > 40) ? item[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"right\">\n @if(props?.multiple){\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\n }\n <span class=\"option-label\">{{ item[props.bindLabel || 'label'] }}</span>\n\n </div>\n </ng-template>\n\n <!-- Single select label template -->\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"ng-value-label ng-value-label-full\">\n {{ item[props.bindLabel || 'label'] }}\n </span>\n </ng-template>\n\n <!-- Selected items chip template (optional) -->\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div class=\"chips ng-values-list\">\n\n <!-- If collapsed: show only first 2 + summary -->\n <ng-container *ngIf=\"!expandedSummary\">\n @for (s of items.slice(0, 2); track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n\n @if (items.length > 2) {\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to expand all selected items\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\n </div>\n }\n </ng-container>\n\n <!-- If expanded: show all items -->\n <ng-container *ngIf=\"expandedSummary\">\n @for (s of items; track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n <!-- Collapse button -->\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to collapse\" \n matTooltipPosition=\"above\">\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n\n @if(props?.footer){\n <ng-template ng-footer-tmp>\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\n </ng-template>\n }\n\n <ng-template ng-notfound-tmp>\n <div class=\"no-results\">\n @if (searchValue?.length > 0) {\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\n } @else {\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\n }\n </div>\n </ng-template>\n\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading\">\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\n <span>Loading options...</span>\n </div>\n </ng-template>\n</ng-select>\n</div>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{pointer-events:none}::ng-deep .ng-select-custom .ng-dropdown-panel{z-index:999}.ng-select-tooltip-wrapper{display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i3.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i3.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i3.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i3.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatCheckboxModule }] }); }
|
|
155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: NgSelectComponent, isStandalone: true, selector: "sa-ng-select", providers: [IconService], usesInheritance: true, ngImport: i0, template: "<div class=\"ng-select-tooltip-wrapper\"\n [matTooltip]=\"(!props?.multiple && formControl?.value) ? (toSafeString(formControl?.value[props?.bindLabel || 'label'] ?? formControl?.value).length > selectedLabelSize ? toSafeString(formControl?.value[props?.bindLabel || 'label'] ?? formControl?.value) : '') : ''\"\n [matTooltipPosition]=\"selectedTooltipPosition\"\n [matTooltipDisabled]=\"isDropdownOpen\">\n<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" \n class=\"ng-select-custom\"\n (open)=\"isDropdownOpen = true\"\n (close)=\"isDropdownOpen = false\">\n\n @if(!!props?.showSearchBar){\n <ng-template ng-header-tmp>\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n </ng-template>\n }\n <!-- Option template with a checkbox in front of each row -->\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\n <div class=\"option-row\" \n [matTooltip]=\"(toSafeString(item[props?.bindLabel || 'label']).length > optionLabelSize) ? toSafeString(item[props?.bindLabel || 'label']) : ''\" \n [matTooltipPosition]=\"optionTooltipPosition\">\n @if(props?.multiple){\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\n }\n <span class=\"option-label\">{{ item[props?.bindLabel || 'label'] }}</span>\n\n </div>\n </ng-template>\n\n <!-- Single select label template -->\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"ng-value-label ng-value-label-full\">\n {{ item[props?.bindLabel || 'label'] }}\n </span>\n </ng-template>\n\n <!-- Selected items chip template (optional) -->\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div class=\"chips ng-values-list\">\n\n <!-- If collapsed: show only first 2 + summary -->\n <ng-container *ngIf=\"!expandedSummary\">\n @for (s of items.slice(0, 2); track s[props?.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(toSafeString(s[props?.bindLabel || 'label']).length > selectedLabelSize) ? toSafeString(s[props?.bindLabel || 'label']) : ''\" \n [matTooltipPosition]=\"selectedTooltipPosition\">\n <span class=\"ng-value-label\">{{ s[props?.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n\n @if (items.length > 2) {\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to expand all selected items\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\n </div>\n }\n </ng-container>\n\n <!-- If expanded: show all items -->\n <ng-container *ngIf=\"expandedSummary\">\n @for (s of items; track s[props?.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(toSafeString(s[props?.bindLabel || 'label']).length > selectedLabelSize) ? toSafeString(s[props?.bindLabel || 'label']) : ''\" \n [matTooltipPosition]=\"selectedTooltipPosition\">\n <span class=\"ng-value-label\">{{ s[props?.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n <!-- Collapse button -->\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to collapse\" \n matTooltipPosition=\"above\">\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n\n @if(props?.footer){\n <ng-template ng-footer-tmp>\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\n </ng-template>\n }\n\n <ng-template ng-notfound-tmp>\n <div class=\"no-results\">\n @if (searchValue?.length > 0) {\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\n } @else {\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\n }\n </div>\n </ng-template>\n\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading\">\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\n <span>Loading options...</span>\n </div>\n </ng-template>\n</ng-select>\n</div>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}:host ::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{pointer-events:none}:host ::ng-deep .ng-select-custom .ng-dropdown-panel{z-index:var(--z-index-dropdown, 999)}.ng-select-tooltip-wrapper{display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i3.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i3.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i3.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i3.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatCheckboxModule }] }); }
|
|
93
156
|
}
|
|
94
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: NgSelectComponent, decorators: [{
|
|
95
158
|
type: Component,
|
|
@@ -109,6 +172,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
109
172
|
MatDatepickerModule,
|
|
110
173
|
MatNativeDateModule,
|
|
111
174
|
MatCheckboxModule,
|
|
112
|
-
], providers: [IconService], template: "<div class=\"ng-select-tooltip-wrapper\"\n [matTooltip]=\"(!props?.multiple && formControl?.value) ? ((formControl?.value[props?.bindLabel || 'label'] || formControl?.value)?.length > 30 ? (formControl?.value[props?.bindLabel || 'label'] || formControl?.value) : '') : ''\"\n matTooltipPosition=\"above\"\n [matTooltipDisabled]=\"isDropdownOpen\">\n<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" \n class=\"ng-select-custom\"\n (open)=\"isDropdownOpen = true\"\n (close)=\"isDropdownOpen = false\">\n\n @if(!!props?.showSearchBar){\n <ng-template ng-header-tmp>\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n </ng-template>\n }\n <!-- Option template with a checkbox in front of each row -->\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\n <div class=\"option-row\" \n [matTooltip]=\"(item[props.bindLabel || 'label']?.length > 40) ? item[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"right\">\n @if(props?.multiple){\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\n }\n <span class=\"option-label\">{{ item[props.bindLabel || 'label'] }}</span>\n\n </div>\n </ng-template>\n\n <!-- Single select label template -->\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"ng-value-label ng-value-label-full\">\n {{ item[props.bindLabel || 'label'] }}\n </span>\n </ng-template>\n\n <!-- Selected items chip template (optional) -->\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div class=\"chips ng-values-list\">\n\n <!-- If collapsed: show only first 2 + summary -->\n <ng-container *ngIf=\"!expandedSummary\">\n @for (s of items.slice(0, 2); track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n\n @if (items.length > 2) {\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to expand all selected items\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\n </div>\n }\n </ng-container>\n\n <!-- If expanded: show all items -->\n <ng-container *ngIf=\"expandedSummary\">\n @for (s of items; track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n <!-- Collapse button -->\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to collapse\" \n matTooltipPosition=\"above\">\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n\n @if(props?.footer){\n <ng-template ng-footer-tmp>\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\n </ng-template>\n }\n\n <ng-template ng-notfound-tmp>\n <div class=\"no-results\">\n @if (searchValue?.length > 0) {\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\n } @else {\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\n }\n </div>\n </ng-template>\n\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading\">\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\n <span>Loading options...</span>\n </div>\n </ng-template>\n</ng-select>\n</div>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{pointer-events:none}::ng-deep .ng-select-custom .ng-dropdown-panel{z-index:999}.ng-select-tooltip-wrapper{display:block;width:100%}\n"] }]
|
|
175
|
+
], providers: [IconService], template: "<div class=\"ng-select-tooltip-wrapper\"\n [matTooltip]=\"(!props?.multiple && formControl?.value) ? (toSafeString(formControl?.value[props?.bindLabel || 'label'] ?? formControl?.value).length > selectedLabelSize ? toSafeString(formControl?.value[props?.bindLabel || 'label'] ?? formControl?.value) : '') : ''\"\n [matTooltipPosition]=\"selectedTooltipPosition\"\n [matTooltipDisabled]=\"isDropdownOpen\">\n<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" \n class=\"ng-select-custom\"\n (open)=\"isDropdownOpen = true\"\n (close)=\"isDropdownOpen = false\">\n\n @if(!!props?.showSearchBar){\n <ng-template ng-header-tmp>\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n </ng-template>\n }\n <!-- Option template with a checkbox in front of each row -->\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\n <div class=\"option-row\" \n [matTooltip]=\"(toSafeString(item[props?.bindLabel || 'label']).length > optionLabelSize) ? toSafeString(item[props?.bindLabel || 'label']) : ''\" \n [matTooltipPosition]=\"optionTooltipPosition\">\n @if(props?.multiple){\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\n }\n <span class=\"option-label\">{{ item[props?.bindLabel || 'label'] }}</span>\n\n </div>\n </ng-template>\n\n <!-- Single select label template -->\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"ng-value-label ng-value-label-full\">\n {{ item[props?.bindLabel || 'label'] }}\n </span>\n </ng-template>\n\n <!-- Selected items chip template (optional) -->\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div class=\"chips ng-values-list\">\n\n <!-- If collapsed: show only first 2 + summary -->\n <ng-container *ngIf=\"!expandedSummary\">\n @for (s of items.slice(0, 2); track s[props?.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(toSafeString(s[props?.bindLabel || 'label']).length > selectedLabelSize) ? toSafeString(s[props?.bindLabel || 'label']) : ''\" \n [matTooltipPosition]=\"selectedTooltipPosition\">\n <span class=\"ng-value-label\">{{ s[props?.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n\n @if (items.length > 2) {\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to expand all selected items\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\n </div>\n }\n </ng-container>\n\n <!-- If expanded: show all items -->\n <ng-container *ngIf=\"expandedSummary\">\n @for (s of items; track s[props?.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(toSafeString(s[props?.bindLabel || 'label']).length > selectedLabelSize) ? toSafeString(s[props?.bindLabel || 'label']) : ''\" \n [matTooltipPosition]=\"selectedTooltipPosition\">\n <span class=\"ng-value-label\">{{ s[props?.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n <!-- Collapse button -->\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to collapse\" \n matTooltipPosition=\"above\">\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n\n @if(props?.footer){\n <ng-template ng-footer-tmp>\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\n </ng-template>\n }\n\n <ng-template ng-notfound-tmp>\n <div class=\"no-results\">\n @if (searchValue?.length > 0) {\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\n } @else {\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\n }\n </div>\n </ng-template>\n\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading\">\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\n <span>Loading options...</span>\n </div>\n </ng-template>\n</ng-select>\n</div>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}:host ::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{pointer-events:none}:host ::ng-deep .ng-select-custom .ng-dropdown-panel{z-index:var(--z-index-dropdown, 999)}.ng-select-tooltip-wrapper{display:block;width:100%}\n"] }]
|
|
113
176
|
}] });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZHJvcGRvd24vbmctc2VsZWN0L25nLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL25nLXNlbGVjdC9uZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlD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QUFZLGtJQUNaLG1CQUFtQix5a0JBQ25CLFdBQVcsc1BBQ1gsWUFBWSw4QkFDWixjQUFjLGtoREFDZCxhQUFhLDZOQUNiLGtCQUFrQiwyZUFDbEIsY0FBYywwV0FDZCxhQUFhLDhCQUNiLGVBQWUsOEJBQ2YsZ0JBQWdCLDRUQUNoQixxQkFBcUIsOEJBQ3JCLG1CQUFtQiw4QkFDbkIsbUJBQW1CLDhCQUNuQixpQkFBaUI7OzJGQU1SLGlCQUFpQjtrQkF4QjdCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNsQixhQUNVLENBQUMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYS1uZy1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIE5nU2VsZWN0TW9kdWxlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbSWNvblNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vbmctc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL25nLXNlbGVjdC5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ1NlbGVjdENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8YW55Pj4gaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgZmlsdGVyZWRPcHRpb25zOiBhbnlbXTtcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXTtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICBvblNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgYmluZExhYmVsID0gdGhpcy5wcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJztcblxuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLih0aGlzLmZpZWxkLnByb3BzPy5vcHRpb25zIHx8IFtdKV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSAodGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXSkuZmlsdGVyKG9wdCA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IG9wdD8uW2JpbmRMYWJlbF0gPz8gJyc7XG4gICAgICByZXR1cm4gU3RyaW5nKGxhYmVsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLnByb3BzLm9wdGlvbnM7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4uKHRoaXMucHJvcHMub3B0aW9ucyB8fCBbXSldO1xuXG4gICAgLy8gSWYgYSBkZWZhdWx0IHZhbHVlIGlzIHByb3ZpZGVkIGluIHByb3BzIGFuZCB0aGUgZm9ybSBjb250cm9sIGhhcyBubyB2YWx1ZSB5ZXQsIHNldCBpdFxuICAgIGNvbnN0IGRlZmF1bHRWYWwgPSB0aGlzLnByb3BzPy5kZWZhdWx0VmFsdWU7XG4gICAgaWYgKCh0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsIHx8IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IHVuZGVmaW5lZCkgJiYgZGVmYXVsdFZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGRlZmF1bHRWYWwpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zICE9PSB0aGlzLl9vcHRpb25zKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5wcm9wcy5vcHRpb25zO1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4uKHRoaXMuX29wdGlvbnMgfHwgW10pXTtcbiAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJzsgLy8gQ2xlYXIgc2VhcmNoIHZhbHVlIHdoZW4gb3B0aW9ucyBjaGFuZ2VcbiAgICB9XG4gIH1cblxuXG5cbiAgLy8gKE9wdGlvbmFsKSBTZWxlY3QvRGVzZWxlY3QgYWxsIGhlbHBlcnNcbiAgYWxsU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM/LnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoKSB7XG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJztcbiAgICBpZiAodGhpcy5hbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMuc2VsZWN0ZWRWYWx1ZXMgPSAodGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXSkubWFwKG8gPT4gb1tiaW5kVmFsdWVdKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclJlbWFpbmluZyhpdGVtczogYW55W10sIGNsZWFyOiAoaXRlbTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgLy8gcmVtb3ZlIG9ubHkgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdCB0d29cbiAgICBpdGVtcy5zbGljZSgyKS5mb3JFYWNoKGl0ZW0gPT4gY2xlYXIoaXRlbSkpO1xuICB9XG4gIGV4cGFuZGVkU3VtbWFyeSA9IGZhbHNlO1xuXG4gIHRvZ2dsZVN1bW1hcnkoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZFN1bW1hcnkgPSAhdGhpcy5leHBhbmRlZFN1bW1hcnk7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCB3aWxsIHN0b3AgdGhlIGV2ZW50IGZyb20gYnViYmxpbmcgdXBcbiAgc3RvcEJhY2tzcGFjZVByb3BhZ2F0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZXZlbnQua2V5Q29kZSA9PT0gOCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWFyY2goZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMuZmllbGQucHJvcHM/Lm9wdGlvbnNdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibmctc2VsZWN0LXRvb2x0aXAtd3JhcHBlclwiXG4gICAgIFttYXRUb29sdGlwXT1cIighcHJvcHM/Lm11bHRpcGxlICYmIGZvcm1Db250cm9sPy52YWx1ZSkgPyAoKGZvcm1Db250cm9sPy52YWx1ZVtwcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCddIHx8IGZvcm1Db250cm9sPy52YWx1ZSk/Lmxlbmd0aCA+IDMwID8gKGZvcm1Db250cm9sPy52YWx1ZVtwcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCddIHx8IGZvcm1Db250cm9sPy52YWx1ZSkgOiAnJykgOiAnJ1wiXG4gICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJpc0Ryb3Bkb3duT3BlblwiPlxuPG5nLXNlbGVjdCBbaXRlbXNdPVwiZmlsdGVyZWRPcHRpb25zXCIgW211bHRpcGxlXT1cInByb3BzPy5tdWx0aXBsZSB8fCBmYWxzZVwiIFtiaW5kTGFiZWxdPVwicHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnXCJcbiAgICBbY2xvc2VPblNlbGVjdF09XCJwcm9wcz8uY2xvc2VPblNlbGVjdCA/PyB0cnVlXCIgW2JpbmRWYWx1ZV09XCJwcm9wcz8uYmluZFZhbHVlIHx8ICd2YWx1ZSdcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcz8ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbc2VhcmNoYWJsZV09XCJmYWxzZVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW2NsZWFyYWJsZV09XCJwcm9wcz8uaXNDbGVhcmFibGVcIiBbYXBwZWFyYW5jZV09XCJwcm9wc1snYXBwZWFyYW5jZSddIHx8ICdvdXRsaW5lJ1wiIFtsb2FkaW5nXT1cInByb3BzPy5sb2FkaW5nIHx8IGZhbHNlXCIgXG4gICAgY2xhc3M9XCJuZy1zZWxlY3QtY3VzdG9tXCJcbiAgICAob3Blbik9XCJpc0Ryb3Bkb3duT3BlbiA9IHRydWVcIlxuICAgIChjbG9zZSk9XCJpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlXCI+XG5cbiAgICBAaWYoISFwcm9wcz8uc2hvd1NlYXJjaEJhcil7XG4gICAgPG5nLXRlbXBsYXRlIG5nLWhlYWRlci10bXA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyIG1hdC1mb3JtLWZpZWxkLWRlbnNpdHktNVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFthcHBlYXJhbmNlXT1cInByb3BzWydhcHBlYXJhbmNlJ10gfHwgJ291dGxpbmUnXCIgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxzYS1pY29uIGljb249XCJzZWFyY2hJY29uXCIgY2xhc3M9XCJzZWFyY2hJY29uc1wiIHNpemU9XCIyMFwiIG1hdFByZWZpeD48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1lbnUtc2VhcmNoLWJhclwiIGNsYXNzPVwic2VhcmNoLWlucHV0IHNlYXJjaEljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uU2VhcmNoKCRldmVudClcIiAoa2V5ZG93bik9XCJzdG9wQmFja3NwYWNlUHJvcGFnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcz8uc2VhcmNoUGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCdcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgLz5cbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIGNsYXNzPVwicG9pbnRlciBzZWFyY2hJY29uc1wiIHNpemU9XCIxNVwiIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50KVwiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIDwhLS0gT3B0aW9uIHRlbXBsYXRlIHdpdGggYSBjaGVja2JveCBpbiBmcm9udCBvZiBlYWNoIHJvdyAtLT5cbiAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXRlbSQ9XCJpdGVtJFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLXJvd1wiIFxuICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihpdGVtW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXT8ubGVuZ3RoID4gNDApID8gaXRlbVtwcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gOiAnJ1wiIFxuICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICBAaWYocHJvcHM/Lm11bHRpcGxlKXtcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpdGVtJC5zZWxlY3RlZFwiIHRhYmluZGV4PVwiLTFcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb24tbGFiZWxcIj57eyBpdGVtW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXSB9fTwvc3Bhbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBTaW5nbGUgc2VsZWN0IGxhYmVsIHRlbXBsYXRlIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sYWJlbC10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNsZWFyPVwiY2xlYXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbCBuZy12YWx1ZS1sYWJlbC1mdWxsXCI+XG4gICAgICAgICAgICB7eyBpdGVtW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gU2VsZWN0ZWQgaXRlbXMgY2hpcCB0ZW1wbGF0ZSAob3B0aW9uYWwpIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMgbmctdmFsdWVzLWxpc3RcIj5cblxuICAgICAgICAgICAgPCEtLSBJZiBjb2xsYXBzZWQ6IHNob3cgb25seSBmaXJzdCAyICsgc3VtbWFyeSAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXhwYW5kZWRTdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgQGZvciAocyBvZiBpdGVtcy5zbGljZSgwLCAyKTsgdHJhY2sgc1twcm9wcy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJ10pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctdmFsdWVcIiBcbiAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihzW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXT8ubGVuZ3RoID4gMzApID8gc1twcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7IHNbcHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCddIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWljb24gcmlnaHRcIiAoY2xpY2spPVwiY2xlYXIocylcIj48c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjExXCI+PC9zYS1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW1zLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctdmFsdWUgc3VtbWFyeS1jaGlwIHBvaW50ZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTdW1tYXJ5KClcIiBcbiAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDbGljayB0byBleHBhbmQgYWxsIHNlbGVjdGVkIGl0ZW1zXCIgXG4gICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCI+K3t7IGl0ZW1zLmxlbmd0aCAtIDIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtaWNvbiByaWdodFwiIChjbGljayk9XCJjbGVhclJlbWFpbmluZyhpdGVtcywgY2xlYXIpXCI+PHNhLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIHNpemU9XCIxMVwiPjwvc2EtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gSWYgZXhwYW5kZWQ6IHNob3cgYWxsIGl0ZW1zIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkU3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHMgb2YgaXRlbXM7IHRyYWNrIHNbcHJvcHMuYmluZFZhbHVlIHx8ICd2YWx1ZSddKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlXCIgXG4gICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoc1twcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10/Lmxlbmd0aCA+IDMwKSA/IHNbcHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCddIDogJydcIiBcbiAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj57eyBzW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1pY29uIHJpZ2h0XCIgKGNsaWNrKT1cImNsZWFyKHMpXCI+PHNhLWljb24gaWNvbj1cImNsb3NlT3V0bGluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIxMVwiPjwvc2EtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gQ29sbGFwc2UgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZSBzdW1tYXJ5LWNoaXAgcG9pbnRlclwiIFxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVN1bW1hcnkoKVwiIFxuICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNsaWNrIHRvIGNvbGxhcHNlXCIgXG4gICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCIgc2l6ZT1cIjE4XCIgaWNvbj1cImxlZnRDaGV2cm9uQ2lyY2xlXCI+PC9zYS1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIEBpZihwcm9wcz8uZm9vdGVyKXtcbiAgICA8bmctdGVtcGxhdGUgbmctZm9vdGVyLXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlclwiPnt7cHJvcHM/LmZvb3Rlcj8uZGVzY3JpcHRpb259fTwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuXG4gICAgPG5nLXRlbXBsYXRlIG5nLW5vdGZvdW5kLXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIEBpZiAoc2VhcmNoVmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHt7IHByb3BzPy5zZWFyY2hOb3RGb3VuZFRleHQgfHwgJ+KdjCBObyBpdGVtcyBtYXRjaCBcIicgKyBzZWFyY2hWYWx1ZSArICdcIicgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgcHJvcHM/Lm5vdEZvdW5kVGV4dCB8fCAn4pqg77iPIE5vIG9wdGlvbnMgYXZhaWxhYmxlJyB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG5nLWxvYWRpbmd0ZXh0LXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxzYS1pY29uIGljb249XCJsb2FkZXJcIiBzaXplPVwiMTZcIiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPkxvYWRpbmcgb3B0aW9ucy4uLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctc2VsZWN0PlxuPC9kaXY+Il19
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZHJvcGRvd24vbmctc2VsZWN0L25nLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL25nLXNlbGVjdC9uZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxp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d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixpQkFBaUI7cUJBQ2xCLGFBQ1UsQ0FBQyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERvQ2hlY2ssIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLW5nLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtJY29uU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbmctc2VsZWN0LmNvbXBvbmVudC5jc3MnXG59KVxuLyoqXG4gKiBDdXN0b20gbmctc2VsZWN0IGRyb3Bkb3duIGNvbXBvbmVudCB3aXRoIE1hdGVyaWFsIERlc2lnbiBzdHlsaW5nIGFuZCB0b29sdGlwIHN1cHBvcnQuXG4gKiBcbiAqICoqVG9vbHRpcCBCZWhhdmlvcjoqKlxuICogLSBUb29sdGlwcyBhdXRvbWF0aWNhbGx5IGFwcGVhciBvbiBob3ZlciB3aGVuIHRleHQgaXMgdHJ1bmNhdGVkIChleGNlZWRzIGNoYXJhY3RlciB0aHJlc2hvbGQpXG4gKiAtIFNpbmdsZS1zZWxlY3QgdmFsdWVzOiBUb29sdGlwIHNob3dzIGFib3ZlIHRoZSBpbnB1dCAoZGVmYXVsdCB0aHJlc2hvbGQ6IDMwIGNoYXJhY3RlcnMpXG4gKiAtIE11bHRpLXNlbGVjdCBjaGlwczogVG9vbHRpcCBzaG93cyBhYm92ZSBlYWNoIGNoaXAgKGRlZmF1bHQgdGhyZXNob2xkOiAzMCBjaGFyYWN0ZXJzKVxuICogLSBEcm9wZG93biBvcHRpb25zOiBUb29sdGlwIHNob3dzIHRvIHRoZSByaWdodCBvZiBlYWNoIG9wdGlvbiAoZGVmYXVsdCB0aHJlc2hvbGQ6IDMwIGNoYXJhY3RlcnMpXG4gKiAtIFRvb2x0aXBzIGFyZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIHdoZW4gdGhlIGRyb3Bkb3duIHBhbmVsIGlzIG9wZW4gdG8gcHJldmVudCBvdmVybGFwXG4gKiBcbiAqICoqVG9vbHRpcCBQb3NpdGlvbiBSYXRpb25hbGU6KipcbiAqIC0gYGFib3ZlYDogVXNlZCBmb3Igc2VsZWN0ZWQgdmFsdWVzIGFuZCBjaGlwcyB0byBhdm9pZCBibG9ja2luZyB0aGUgZHJvcGRvd24gcGFuZWwgYmVsb3dcbiAqIC0gYHJpZ2h0YDogVXNlZCBmb3IgZHJvcGRvd24gb3B0aW9ucyB0byBhdm9pZCBibG9ja2luZyBhZGphY2VudCBpdGVtcyBpbiB0aGUgdmVydGljYWwgbGlzdFxuICogXG4gKiAqKkNvbmZpZ3VyYWJsZSB2aWEgcHJvcHM6KipcbiAqIC0gYG9wdGlvbkxhYmVsU2l6ZWA6IENoYXJhY3RlciB0aHJlc2hvbGQgZm9yIHNob3dpbmcgdG9vbHRpcHMgb24gZHJvcGRvd24gb3B0aW9uc1xuICogLSBgc2VsZWN0ZWRMYWJlbFNpemVgOiBDaGFyYWN0ZXIgdGhyZXNob2xkIGZvciBzaG93aW5nIHRvb2x0aXBzIG9uIHNlbGVjdGVkIHZhbHVlcy9jaGlwc1xuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICoge1xuICogICBrZXk6ICdteVNlbGVjdCcsXG4gKiAgIHR5cGU6ICdzYS1uZy1zZWxlY3QnLFxuICogICBwcm9wczoge1xuICogICAgIG9wdGlvbnM6IFsuLi5dLFxuICogICAgIG9wdGlvbkxhYmVsU2l6ZTogNDAsICAgIC8vIFNob3cgdG9vbHRpcCBmb3Igb3B0aW9ucyA+IDQwIGNoYXJzXG4gKiAgICAgc2VsZWN0ZWRMYWJlbFNpemU6IDMwICAgLy8gU2hvdyB0b29sdGlwIGZvciBzZWxlY3RlZCB2YWx1ZXMgPiAzMCBjaGFyc1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5nU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxhbnk+PiBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCB7XG4gIGZpbHRlcmVkT3B0aW9uczogYW55W107XG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfb3B0aW9uczogYW55W107XG4gIFxuICAvKiogXG4gICAqIFRyYWNrcyB3aGV0aGVyIHRoZSBkcm9wZG93biBwYW5lbCBpcyBjdXJyZW50bHkgb3Blbi5cbiAgICogVXNlZCB0byBkaXNhYmxlIHRvb2x0aXBzIG9uIHNlbGVjdGVkIHZhbHVlcyB3aGVuIHRoZSBwYW5lbCBpcyBvcGVuIHRvIHByZXZlbnQgVUkgb3ZlcmxhcC5cbiAgICovXG4gIGlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIFxuICAvKiogXG4gICAqIENoYXJhY3RlciB0aHJlc2hvbGQgZm9yIHNob3dpbmcgdG9vbHRpcHMgb24gZHJvcGRvd24gb3B0aW9ucy5cbiAgICogVG9vbHRpcHMgYXBwZWFyIHdoZW4gb3B0aW9uIGxhYmVsIGxlbmd0aCBleGNlZWRzIHRoaXMgdmFsdWUuXG4gICAqIENvbmZpZ3VyYWJsZSB2aWEgcHJvcHMub3B0aW9uTGFiZWxTaXplIChkZWZhdWx0OiAzMClcbiAgICovXG4gIG9wdGlvbkxhYmVsU2l6ZTogbnVtYmVyID0gMzA7XG4gIFxuICAvKiogXG4gICAqIENoYXJhY3RlciB0aHJlc2hvbGQgZm9yIHNob3dpbmcgdG9vbHRpcHMgb24gc2VsZWN0ZWQgdmFsdWVzIGFuZCBjaGlwcy5cbiAgICogVG9vbHRpcHMgYXBwZWFyIHdoZW4gc2VsZWN0ZWQgbGFiZWwgbGVuZ3RoIGV4Y2VlZHMgdGhpcyB2YWx1ZS5cbiAgICogQ29uZmlndXJhYmxlIHZpYSBwcm9wcy5zZWxlY3RlZExhYmVsU2l6ZSAoZGVmYXVsdDogMzApXG4gICAqL1xuICBzZWxlY3RlZExhYmVsU2l6ZTogbnVtYmVyID0gMzA7XG5cbiAgLyoqIFRvb2x0aXAgcG9zaXRpb24gZm9yIHNlbGVjdGVkIHZhbHVlcyBhbmQgY2hpcHMgKGRlZmF1bHQ6ICdhYm92ZScpICovXG4gIHNlbGVjdGVkVG9vbHRpcFBvc2l0aW9uOiAnYWJvdmUnIHwgJ2JlbG93JyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAnYWJvdmUnO1xuICBcbiAgLyoqIFRvb2x0aXAgcG9zaXRpb24gZm9yIGRyb3Bkb3duIG9wdGlvbnMgKGRlZmF1bHQ6ICdyaWdodCcpICovXG4gIG9wdGlvblRvb2x0aXBQb3NpdGlvbjogJ2Fib3ZlJyB8ICdiZWxvdycgfCAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcblxuICBvblNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IF8udHJpbSh0aGlzLnNlYXJjaFZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGJpbmRMYWJlbCA9IHRoaXMucHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnO1xuXG4gICAgaWYgKF8uaXNFbXB0eShzZWFyY2hWYWx1ZSkpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLih0aGlzLnByb3BzPy5vcHRpb25zIHx8IFtdKV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBfLmZpbHRlcih0aGlzLnByb3BzPy5vcHRpb25zIHx8IFtdLCAob3B0OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gXy5nZXQob3B0LCBiaW5kTGFiZWwsICcnKTtcbiAgICAgIHJldHVybiBfLmluY2x1ZGVzKF8udG9Mb3dlcihTdHJpbmcobGFiZWwpKSwgc2VhcmNoVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMucHJvcHMub3B0aW9ucztcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi4odGhpcy5wcm9wcy5vcHRpb25zIHx8IFtdKV07XG5cbiAgICAvLyBJZiBhIGRlZmF1bHQgdmFsdWUgaXMgcHJvdmlkZWQgaW4gcHJvcHMgYW5kIHRoZSBmb3JtIGNvbnRyb2wgaGFzIG5vIHZhbHVlIHlldCwgc2V0IGl0XG4gICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMucHJvcHM/LmRlZmF1bHRWYWx1ZTtcbiAgICBpZiAoKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGwgfHwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA9PT0gdW5kZWZpbmVkKSAmJiBkZWZhdWx0VmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbCk7XG4gICAgfVxuICAgIHRoaXMub3B0aW9uTGFiZWxTaXplID0gdGhpcy5wcm9wcz8ub3B0aW9uTGFiZWxTaXplIHx8IDMwO1xuICAgIHRoaXMuc2VsZWN0ZWRMYWJlbFNpemUgPSB0aGlzLnByb3BzPy5zZWxlY3RlZExhYmVsU2l6ZSB8fCAzMDtcbiAgICB0aGlzLnNlbGVjdGVkVG9vbHRpcFBvc2l0aW9uID0gdGhpcy5wcm9wcz8uc2VsZWN0ZWRUb29sdGlwUG9zaXRpb24gfHwgJ2Fib3ZlJztcbiAgICB0aGlzLm9wdGlvblRvb2x0aXBQb3NpdGlvbiA9IHRoaXMucHJvcHM/Lm9wdGlvblRvb2x0aXBQb3NpdGlvbiB8fCAncmlnaHQnO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMgIT09IHRoaXMuX29wdGlvbnMpIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLnByb3BzLm9wdGlvbnM7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi4odGhpcy5fb3B0aW9ucyB8fCBbXSldO1xuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnOyAvLyBDbGVhciBzZWFyY2ggdmFsdWUgd2hlbiBvcHRpb25zIGNoYW5nZVxuICAgIH1cbiAgfVxuXG5cblxuICAvLyAoT3B0aW9uYWwpIFNlbGVjdC9EZXNlbGVjdCBhbGwgaGVscGVyc1xuICBhbGxTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcz8uc2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCA9PT0gdGhpcy5wcm9wcz8ub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKCkge1xuICAgIGNvbnN0IGJpbmRWYWx1ZSA9IHRoaXMucHJvcHMuYmluZFZhbHVlIHx8ICd2YWx1ZSc7XG4gICAgaWYgKHRoaXMuYWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWVzID0gXy5tYXAodGhpcy5wcm9wcz8ub3B0aW9ucyB8fCBbXSwgbyA9PiBvW2JpbmRWYWx1ZV0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUmVtYWluaW5nKGl0ZW1zOiBhbnlbXSwgY2xlYXI6IChpdGVtOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAvLyByZW1vdmUgb25seSB0aGUgaXRlbXMgYWZ0ZXIgdGhlIGZpcnN0IHR3b1xuICAgIGl0ZW1zLnNsaWNlKDIpLmZvckVhY2goaXRlbSA9PiBjbGVhcihpdGVtKSk7XG4gIH1cbiAgZXhwYW5kZWRTdW1tYXJ5ID0gZmFsc2U7XG5cbiAgdG9nZ2xlU3VtbWFyeSgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkU3VtbWFyeSA9ICF0aGlzLmV4cGFuZGVkU3VtbWFyeTtcbiAgfVxuXG4gIC8vIFRoaXMgbWV0aG9kIHdpbGwgc3RvcCB0aGUgZXZlbnQgZnJvbSBidWJibGluZyB1cFxuICBzdG9wQmFja3NwYWNlUHJvcGFnYXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXlDb2RlID09PSA4KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4uKHRoaXMucHJvcHM/Lm9wdGlvbnMgfHwgW10pXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIHNhZmVseSBjb252ZXJ0IGEgdmFsdWUgdG8gc3RyaW5nIGZvciB0b29sdGlwIGxlbmd0aCBjaGVja3MuXG4gICAqIEhhbmRsZXMgbnVsbCwgdW5kZWZpbmVkLCBhbmQgcHJpbWl0aXZlIHZhbHVlcyBncmFjZWZ1bGx5LlxuICAgKi9cbiAgdG9TYWZlU3RyaW5nKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUgPz8gJycpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibmctc2VsZWN0LXRvb2x0aXAtd3JhcHBlclwiXG4gICAgIFttYXRUb29sdGlwXT1cIighcHJvcHM/Lm11bHRpcGxlICYmIGZvcm1Db250cm9sPy52YWx1ZSkgPyAodG9TYWZlU3RyaW5nKGZvcm1Db250cm9sPy52YWx1ZVtwcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCddID8/IGZvcm1Db250cm9sPy52YWx1ZSkubGVuZ3RoID4gc2VsZWN0ZWRMYWJlbFNpemUgPyB0b1NhZmVTdHJpbmcoZm9ybUNvbnRyb2w/LnZhbHVlW3Byb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gPz8gZm9ybUNvbnRyb2w/LnZhbHVlKSA6ICcnKSA6ICcnXCJcbiAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJzZWxlY3RlZFRvb2x0aXBQb3NpdGlvblwiXG4gICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiaXNEcm9wZG93bk9wZW5cIj5cbjxuZy1zZWxlY3QgW2l0ZW1zXT1cImZpbHRlcmVkT3B0aW9uc1wiIFttdWx0aXBsZV09XCJwcm9wcz8ubXVsdGlwbGUgfHwgZmFsc2VcIiBbYmluZExhYmVsXT1cInByb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ1wiXG4gICAgW2Nsb3NlT25TZWxlY3RdPVwicHJvcHM/LmNsb3NlT25TZWxlY3QgPz8gdHJ1ZVwiIFtiaW5kVmFsdWVdPVwicHJvcHM/LmJpbmRWYWx1ZSB8fCAndmFsdWUnXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnXCIgW3NlYXJjaGFibGVdPVwiZmFsc2VcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgIFtjbGVhcmFibGVdPVwicHJvcHM/LmlzQ2xlYXJhYmxlXCIgW2FwcGVhcmFuY2VdPVwicHJvcHNbJ2FwcGVhcmFuY2UnXSB8fCAnb3V0bGluZSdcIiBbbG9hZGluZ109XCJwcm9wcz8ubG9hZGluZyB8fCBmYWxzZVwiIFxuICAgIGNsYXNzPVwibmctc2VsZWN0LWN1c3RvbVwiXG4gICAgKG9wZW4pPVwiaXNEcm9wZG93bk9wZW4gPSB0cnVlXCJcbiAgICAoY2xvc2UpPVwiaXNEcm9wZG93bk9wZW4gPSBmYWxzZVwiPlxuXG4gICAgQGlmKCEhcHJvcHM/LnNob3dTZWFyY2hCYXIpe1xuICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lciBtYXQtZm9ybS1maWVsZC1kZW5zaXR5LTVcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJwcm9wc1snYXBwZWFyYW5jZSddIHx8ICdvdXRsaW5lJ1wiIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwic2VhcmNoSWNvblwiIGNsYXNzPVwic2VhcmNoSWNvbnNcIiBzaXplPVwiMjBcIiBtYXRQcmVmaXg+PC9zYS1pY29uPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJtZW51LXNlYXJjaC1iYXJcIiBjbGFzcz1cInNlYXJjaC1pbnB1dCBzZWFyY2hJY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgKGtleWRvd24pPVwic3RvcEJhY2tzcGFjZVByb3BhZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnNlYXJjaFBsYWNlaG9sZGVyIHx8ICdTZWFyY2gnXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPHNhLWljb24gaWNvbj1cImNsb3NlT3V0bGluZWRcIiBjbGFzcz1cInBvaW50ZXIgc2VhcmNoSWNvbnNcIiBzaXplPVwiMTVcIiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKCRldmVudClcIj48L3NhLWljb24+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgICA8IS0tIE9wdGlvbiB0ZW1wbGF0ZSB3aXRoIGEgY2hlY2tib3ggaW4gZnJvbnQgb2YgZWFjaCByb3cgLS0+XG4gICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1yb3dcIiBcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIodG9TYWZlU3RyaW5nKGl0ZW1bcHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnXSkubGVuZ3RoID4gb3B0aW9uTGFiZWxTaXplKSA/IHRvU2FmZVN0cmluZyhpdGVtW3Byb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10pIDogJydcIiBcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIm9wdGlvblRvb2x0aXBQb3NpdGlvblwiPlxuICAgICAgICAgICAgQGlmKHByb3BzPy5tdWx0aXBsZSl7XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXRlbSQuc2VsZWN0ZWRcIiB0YWJpbmRleD1cIi0xXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLWxhYmVsXCI+e3sgaXRlbVtwcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCddIH19PC9zcGFuPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIFNpbmdsZSBzZWxlY3QgbGFiZWwgdGVtcGxhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsIG5nLXZhbHVlLWxhYmVsLWZ1bGxcIj5cbiAgICAgICAgICAgIHt7IGl0ZW1bcHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gU2VsZWN0ZWQgaXRlbXMgY2hpcCB0ZW1wbGF0ZSAob3B0aW9uYWwpIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMgbmctdmFsdWVzLWxpc3RcIj5cblxuICAgICAgICAgICAgPCEtLSBJZiBjb2xsYXBzZWQ6IHNob3cgb25seSBmaXJzdCAyICsgc3VtbWFyeSAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXhwYW5kZWRTdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgQGZvciAocyBvZiBpdGVtcy5zbGljZSgwLCAyKTsgdHJhY2sgc1twcm9wcz8uYmluZFZhbHVlIHx8ICd2YWx1ZSddKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlXCIgXG4gICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIodG9TYWZlU3RyaW5nKHNbcHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnXSkubGVuZ3RoID4gc2VsZWN0ZWRMYWJlbFNpemUpID8gdG9TYWZlU3RyaW5nKHNbcHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnXSkgOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJzZWxlY3RlZFRvb2x0aXBQb3NpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCI+e3sgc1twcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCddIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWljb24gcmlnaHRcIiAoY2xpY2spPVwiY2xlYXIocylcIj48c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjExXCI+PC9zYS1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW1zLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctdmFsdWUgc3VtbWFyeS1jaGlwIHBvaW50ZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTdW1tYXJ5KClcIiBcbiAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDbGljayB0byBleHBhbmQgYWxsIHNlbGVjdGVkIGl0ZW1zXCIgXG4gICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCI+K3t7IGl0ZW1zLmxlbmd0aCAtIDIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtaWNvbiByaWdodFwiIChjbGljayk9XCJjbGVhclJlbWFpbmluZyhpdGVtcywgY2xlYXIpXCI+PHNhLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIHNpemU9XCIxMVwiPjwvc2EtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gSWYgZXhwYW5kZWQ6IHNob3cgYWxsIGl0ZW1zIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkU3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHMgb2YgaXRlbXM7IHRyYWNrIHNbcHJvcHM/LmJpbmRWYWx1ZSB8fCAndmFsdWUnXSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZVwiIFxuICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKHRvU2FmZVN0cmluZyhzW3Byb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10pLmxlbmd0aCA+IHNlbGVjdGVkTGFiZWxTaXplKSA/IHRvU2FmZVN0cmluZyhzW3Byb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10pIDogJydcIiBcbiAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwic2VsZWN0ZWRUb29sdGlwUG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7IHNbcHJvcHM/LmJpbmRMYWJlbCB8fCAnbGFiZWwnXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1pY29uIHJpZ2h0XCIgKGNsaWNrKT1cImNsZWFyKHMpXCI+PHNhLWljb24gaWNvbj1cImNsb3NlT3V0bGluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIxMVwiPjwvc2EtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gQ29sbGFwc2UgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZSBzdW1tYXJ5LWNoaXAgcG9pbnRlclwiIFxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVN1bW1hcnkoKVwiIFxuICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNsaWNrIHRvIGNvbGxhcHNlXCIgXG4gICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCIgc2l6ZT1cIjE4XCIgaWNvbj1cImxlZnRDaGV2cm9uQ2lyY2xlXCI+PC9zYS1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIEBpZihwcm9wcz8uZm9vdGVyKXtcbiAgICA8bmctdGVtcGxhdGUgbmctZm9vdGVyLXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlclwiPnt7cHJvcHM/LmZvb3Rlcj8uZGVzY3JpcHRpb259fTwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuXG4gICAgPG5nLXRlbXBsYXRlIG5nLW5vdGZvdW5kLXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIEBpZiAoc2VhcmNoVmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHt7IHByb3BzPy5zZWFyY2hOb3RGb3VuZFRleHQgfHwgJ+KdjCBObyBpdGVtcyBtYXRjaCBcIicgKyBzZWFyY2hWYWx1ZSArICdcIicgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgcHJvcHM/Lm5vdEZvdW5kVGV4dCB8fCAn4pqg77iPIE5vIG9wdGlvbnMgYXZhaWxhYmxlJyB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG5nLWxvYWRpbmd0ZXh0LXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxzYS1pY29uIGljb249XCJsb2FkZXJcIiBzaXplPVwiMTZcIiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPkxvYWRpbmcgb3B0aW9ucy4uLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctc2VsZWN0PlxuPC9kaXY+Il19
|