@snabcentr/client-ui 3.32.3 → 3.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/banner/sc-banner.module.d.ts +2 -1
- package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +1 -1
- package/cart/index.d.ts +1 -1
- package/cart/{sc-car-add-products-from-csv-dialog/sc-car-add-products-from-csv-dialog.component.d.ts → sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts} +3 -3
- package/catalog/category-card/sc-category-card.component.d.ts +0 -6
- package/catalog/hover-image-carousel/{hover-image-carousel.component.d.ts → sc-hover-image-carousel.component.d.ts} +16 -7
- package/catalog/index.d.ts +1 -0
- package/catalog/sc-catalog.module.d.ts +3 -2
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +4 -4
- package/esm2022/banner/sc-banner.component.mjs +3 -3
- package/esm2022/banner/sc-banner.module.mjs +4 -3
- package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +6 -6
- package/esm2022/cart/cart-item/sc-cart-item.component.mjs +4 -4
- package/esm2022/cart/index.mjs +2 -2
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +110 -0
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +4 -11
- package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +76 -0
- package/esm2022/catalog/index.mjs +2 -1
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +2 -2
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +4 -4
- package/esm2022/catalog/sc-catalog.module.mjs +8 -5
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +5 -6
- package/esm2022/news/news-card/sc-news-card.component.mjs +4 -8
- package/esm2022/news/sc-news.module.mjs +4 -3
- package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +12 -20
- package/fesm2022/snabcentr-client-ui.mjs +67 -86
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/news/news-card/sc-news-card.component.d.ts +1 -5
- package/news/sc-news.module.d.ts +2 -1
- package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +8 -14
- package/package.json +2 -2
- package/release_notes.tmp +5 -9
- package/styles/tailwind/tailwind.scss +0 -4
- package/esm2022/cart/sc-car-add-products-from-csv-dialog/sc-car-add-products-from-csv-dialog.component.mjs +0 -110
- package/esm2022/catalog/hover-image-carousel/hover-image-carousel.component.mjs +0 -76
@@ -10,7 +10,7 @@ import { TuiButton, TuiFormatNumberPipe, TuiHint, TuiIcon, TuiLink } from '@taig
|
|
10
10
|
import { TuiHighlight, TuiPreview, TuiPreviewDialogService } from '@taiga-ui/kit';
|
11
11
|
import { TuiTextfieldControllerModule } from '@taiga-ui/legacy';
|
12
12
|
import { CostWithDiscountComponent } from '../../catalog/cost-with-discount/cost-with-discount.component';
|
13
|
-
import {
|
13
|
+
import { ScHoverImageCarouselComponent } from '../../catalog/hover-image-carousel/sc-hover-image-carousel.component';
|
14
14
|
import { ScInputQuantityComponent } from '../../catalog/input-quantity/sc-input-quantity.component';
|
15
15
|
import { ScPriceWarehouseStockComponent } from '../../catalog/price-warehouse-stock/sc-price-warehouse-stock.component';
|
16
16
|
import { AbstractScPriceCard } from '../../directives/abstract-price-card/abstract-sc-price-card.directive';
|
@@ -45,7 +45,7 @@ export class ScCartItemComponent extends AbstractScPriceCard {
|
|
45
45
|
this.previewDialogService.open(specificationPreviewReference).subscribe();
|
46
46
|
}
|
47
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScCartItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScCartItemComponent, isStandalone: true, selector: "sc-cart-item", outputs: { clickSettings: "clickSettings" }, providers: [SEARCH_TERM_PROVIDERS], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"product && cartItem; else skeleton\"\n class=\"relative flex w-full gap-4 rounded-xl p-1 text-body-s hover:bg-tui-background-neutral-1\"\n>\n @let isDisabled = product.isHidden || product.isNull;\n <sc-hover-image-carousel\n (click)=\"isDisabled ? null : clickCardEvent.emit()\"\n [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n [isShowActions]=\"false\"\n class=\"aspect-square w-24 shrink-0 cursor-pointer self-start\"\n />\n <div class=\"flex w-full flex-col justify-between gap-4 md:flex-row md:items-center md:gap-5\">\n <div class=\"flex grow flex-col gap-1\">\n <div\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n </div>\n <div class=\"flex flex-col gap-1\">\n <a\n tuiLink\n [attr.href]=\"href ?? null\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"$event.preventDefault(); clickCardEvent.emit()\"\n [class.disabled]=\"isDisabled\"\n class=\"!text-body-m-bold\"\n >\n {{ product.name }}\n </a>\n <div\n *ngIf=\"product?.pack\"\n class=\"flex items-center gap-1 text-tui-text-02\"\n >\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n <tui-icon\n *ngIf=\"product.ignoreMinCountCheck\"\n icon=\"@tui.package\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xl text-tui-text-01 opacity-90\"\n />\n <ng-template #minCountHint>\n \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n </ng-template>\n </div>\n\n <sc-cost-with-discount [product]=\"product\" />\n </div>\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification(specificationPreview)\"\n [class.disabled]=\"isDisabled\"\n >\n \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\n </a>\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex shrink-0 flex-col gap-4 sm:flex-row md:w-1/2 lg:w-3/5 xl:w-1/2 xl:gap-8 2xl:w-2/5\">\n <div class=\"flex flex-wrap items-center gap-4 md:flex-col md:items-start lg:flex-row lg:items-center lg:gap-8\">\n <sc-input-quantity\n #inputQuantity\n [tuiAutoFocus]=\"autoFocuseQuantityInput()\"\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n size=\"m\"\n [showCross]=\"false\"\n [isDisabled]=\"isDisabled\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-32 shrink-0\"\n />\n <div class=\"flex w-36 items-center gap-1\">\n @if (cartItem.height || cartItem.length || cartItem.width) {\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n [disabled]=\"isDisabled\"\n (click)=\"clickSettings.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-col gap-x-2 text-xs text-tui-base-07\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <p class=\"whitespace-nowrap\">\n \u0421\u0443\u043C\u043C\u0430:\n <strong> {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}</strong>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" />\n </div>\n <button\n tuiIconButton\n iconStart=\"@tui.trash\"\n (click)=\"clickClearEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-1 top-1 lg:!relative lg:left-0 lg:top-0 lg:ml-auto\"\n ></button>\n </div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiHighlight, selector: "[tuiHighlight]", inputs: ["tuiHighlight", "tuiHighlightColor"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "component", type: HoverImageCarouselComponent, selector: "sc-hover-image-carousel", inputs: ["images", "isShowActions"] }, { kind: "component", type: CostWithDiscountComponent, selector: "sc-cost-with-discount", inputs: ["product", "size"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "pipe", type: TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: TuiFormatNumberPipe, name: "tuiFormatNumber" }, { kind: "component", type: i5.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i5.TuiPreviewAction, selector: "[tuiPreviewAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScCartItemComponent, isStandalone: true, selector: "sc-cart-item", outputs: { clickSettings: "clickSettings" }, providers: [SEARCH_TERM_PROVIDERS], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"product && cartItem; else skeleton\"\n class=\"relative flex w-full gap-4 rounded-xl p-1 text-body-s hover:bg-tui-background-neutral-1\"\n>\n @let isDisabled = product.isHidden || product.isNull;\n <sc-hover-image-carousel\n (click)=\"isDisabled ? null : clickCardEvent.emit()\"\n [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n [isShowActions]=\"false\"\n class=\"aspect-square w-24 shrink-0 cursor-pointer self-start\"\n />\n <div class=\"flex w-full flex-col justify-between gap-4 md:flex-row md:items-center md:gap-5\">\n <div class=\"flex grow flex-col gap-1\">\n <div\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n </div>\n <div class=\"flex flex-col gap-1\">\n <a\n tuiLink\n [attr.href]=\"href ?? null\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"$event.preventDefault(); clickCardEvent.emit()\"\n [class.disabled]=\"isDisabled\"\n class=\"!text-body-m-bold\"\n >\n {{ product.name }}\n </a>\n <div\n *ngIf=\"product?.pack\"\n class=\"flex items-center gap-1 text-tui-text-02\"\n >\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n <tui-icon\n *ngIf=\"product.ignoreMinCountCheck\"\n icon=\"@tui.package\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xl text-tui-text-01 opacity-90\"\n />\n <ng-template #minCountHint>\n \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n </ng-template>\n </div>\n\n <sc-cost-with-discount [product]=\"product\" />\n </div>\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification(specificationPreview)\"\n [class.disabled]=\"isDisabled\"\n >\n \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\n </a>\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex shrink-0 flex-col gap-4 sm:flex-row md:w-1/2 lg:w-3/5 xl:w-1/2 xl:gap-8 2xl:w-2/5\">\n <div class=\"flex flex-wrap items-center gap-4 md:flex-col md:items-start lg:flex-row lg:items-center lg:gap-8\">\n <sc-input-quantity\n #inputQuantity\n [tuiAutoFocus]=\"autoFocuseQuantityInput()\"\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n size=\"m\"\n [showCross]=\"false\"\n [isDisabled]=\"isDisabled\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-32 shrink-0\"\n />\n <div class=\"flex w-36 items-center gap-1\">\n @if (cartItem.height || cartItem.length || cartItem.width) {\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n [disabled]=\"isDisabled\"\n (click)=\"clickSettings.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-col gap-x-2 text-xs text-tui-base-07\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <p class=\"whitespace-nowrap\">\n \u0421\u0443\u043C\u043C\u0430:\n <strong> {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}</strong>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" />\n </div>\n <button\n tuiIconButton\n iconStart=\"@tui.trash\"\n (click)=\"clickClearEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-1 top-1 lg:!relative lg:left-0 lg:top-0 lg:ml-auto\"\n ></button>\n </div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiHighlight, selector: "[tuiHighlight]", inputs: ["tuiHighlight", "tuiHighlightColor"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "component", type: ScHoverImageCarouselComponent, selector: "sc-hover-image-carousel", inputs: ["images", "isShowActions", "productName"] }, { kind: "component", type: CostWithDiscountComponent, selector: "sc-cost-with-discount", inputs: ["product", "size"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "pipe", type: TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: TuiFormatNumberPipe, name: "tuiFormatNumber" }, { kind: "component", type: i5.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i5.TuiPreviewAction, selector: "[tuiPreviewAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
49
49
|
}
|
50
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScCartItemComponent, decorators: [{
|
51
51
|
type: Component,
|
@@ -61,7 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
61
61
|
TuiLink,
|
62
62
|
TuiHighlight,
|
63
63
|
TuiAutoFocus,
|
64
|
-
|
64
|
+
ScHoverImageCarouselComponent,
|
65
65
|
CostWithDiscountComponent,
|
66
66
|
ScPriceWarehouseStockComponent,
|
67
67
|
ScInputQuantityComponent,
|
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
71
71
|
ScFormatDatePipe,
|
72
72
|
], providers: [SEARCH_TERM_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"product && cartItem; else skeleton\"\n class=\"relative flex w-full gap-4 rounded-xl p-1 text-body-s hover:bg-tui-background-neutral-1\"\n>\n @let isDisabled = product.isHidden || product.isNull;\n <sc-hover-image-carousel\n (click)=\"isDisabled ? null : clickCardEvent.emit()\"\n [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n [isShowActions]=\"false\"\n class=\"aspect-square w-24 shrink-0 cursor-pointer self-start\"\n />\n <div class=\"flex w-full flex-col justify-between gap-4 md:flex-row md:items-center md:gap-5\">\n <div class=\"flex grow flex-col gap-1\">\n <div\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n </div>\n <div class=\"flex flex-col gap-1\">\n <a\n tuiLink\n [attr.href]=\"href ?? null\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"$event.preventDefault(); clickCardEvent.emit()\"\n [class.disabled]=\"isDisabled\"\n class=\"!text-body-m-bold\"\n >\n {{ product.name }}\n </a>\n <div\n *ngIf=\"product?.pack\"\n class=\"flex items-center gap-1 text-tui-text-02\"\n >\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n <tui-icon\n *ngIf=\"product.ignoreMinCountCheck\"\n icon=\"@tui.package\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xl text-tui-text-01 opacity-90\"\n />\n <ng-template #minCountHint>\n \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n </ng-template>\n </div>\n\n <sc-cost-with-discount [product]=\"product\" />\n </div>\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification(specificationPreview)\"\n [class.disabled]=\"isDisabled\"\n >\n \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\n </a>\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex shrink-0 flex-col gap-4 sm:flex-row md:w-1/2 lg:w-3/5 xl:w-1/2 xl:gap-8 2xl:w-2/5\">\n <div class=\"flex flex-wrap items-center gap-4 md:flex-col md:items-start lg:flex-row lg:items-center lg:gap-8\">\n <sc-input-quantity\n #inputQuantity\n [tuiAutoFocus]=\"autoFocuseQuantityInput()\"\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n size=\"m\"\n [showCross]=\"false\"\n [isDisabled]=\"isDisabled\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-32 shrink-0\"\n />\n <div class=\"flex w-36 items-center gap-1\">\n @if (cartItem.height || cartItem.length || cartItem.width) {\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n [disabled]=\"isDisabled\"\n (click)=\"clickSettings.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-col gap-x-2 text-xs text-tui-base-07\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <p class=\"whitespace-nowrap\">\n \u0421\u0443\u043C\u043C\u0430:\n <strong> {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}</strong>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" />\n </div>\n <button\n tuiIconButton\n iconStart=\"@tui.trash\"\n (click)=\"clickClearEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-1 top-1 lg:!relative lg:left-0 lg:top-0 lg:ml-auto\"\n ></button>\n </div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n</ng-template>\n" }]
|
73
73
|
}] });
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXJ0L2NhcnQtaXRlbS9zYy1jYXJ0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtL3NjLWNhcnQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFFekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFvQixtQkFBbUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBRTlEOztHQUVHO0FBNkJILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUE1QjVEOztRQTZCSTs7V0FFRztRQUNhLGtCQUFhLEdBQTJCLE1BQU0sRUFBRSxDQUFDO1FBRWpFOztXQUVHO1FBQ2MseUJBQW9CLEdBQTRCLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBVXBHO0lBUkc7Ozs7T0FJRztJQUNPLGlCQUFpQixDQUFDLDZCQUE0RDtRQUNwRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUUsQ0FBQzsrR0FsQlEsbUJBQW1CO21HQUFuQixtQkFBbUIsd0dBSGpCLENBQUMscUJBQXFCLENBQUMsaURDaER0Qyw4bE9Bb0pBLDJDRHhIUSxZQUFZLHVMQUNaLFlBQVksK0JBQ1osU0FBUyxvSUFDVCxPQUFPLG9GQUNQLDRCQUE0QixpTEFDNUIsV0FBVyxzSUFDWCxtQkFBbUIsMFhBRW5CLE9BQU8sNEZBQ1AsWUFBWSwwR0FDWixZQUFZLHFGQUNaLDJCQUEyQix5R0FDM0IseUJBQXlCLCtGQUN6Qiw4QkFBOEIsb0lBQzlCLHdCQUF3QixnTUFDeEIsZUFBZSwrQ0FDZixtQkFBbUI7OzRGQU9kLG1CQUFtQjtrQkE1Qi9CLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGNBQWMsV0FFZjt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxPQUFPO3dCQUNQLDRCQUE0Qjt3QkFDNUIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osMkJBQTJCO3dCQUMzQix5QkFBeUI7d0JBQ3pCLDhCQUE4Qjt3QkFDOUIsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixnQkFBZ0I7cUJBQ25CLGFBQ1UsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIG91dHB1dCwgT3V0cHV0RW1pdHRlclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNFQVJDSF9URVJNX1BST1ZJREVSUyB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQ3VycmVuY3lQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlJztcbmltcG9ydCB7IFR1aUF1dG9Gb2N1cyB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlGb3JtYXROdW1iZXJQaXBlLCBUdWlIaW50LCBUdWlJY29uLCBUdWlMaW5rIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpSGlnaGxpZ2h0LCBUdWlQcmV2aWV3LCBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuXG5pbXBvcnQgeyBDb3N0V2l0aERpc2NvdW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jb3N0LXdpdGgtZGlzY291bnQvY29zdC13aXRoLWRpc2NvdW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIb3ZlckltYWdlQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2hvdmVyLWltYWdlLWNhcm91c2VsL2hvdmVyLWltYWdlLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0lucHV0UXVhbnRpdHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2lucHV0LXF1YW50aXR5L3NjLWlucHV0LXF1YW50aXR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY1ByaWNlV2FyZWhvdXNlU3RvY2tDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYXRhbG9nL3ByaWNlLXdhcmVob3VzZS1zdG9jay9zYy1wcmljZS13YXJlaG91c2Utc3RvY2suY29tcG9uZW50JztcbmltcG9ydCB7IEFic3RyYWN0U2NQcmljZUNhcmQgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Fic3RyYWN0LXByaWNlLWNhcmQvYWJzdHJhY3Qtc2MtcHJpY2UtY2FyZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2NGb3JtYXREYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NjLWZvcm1hdC1kYXRlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YLQvtGH0LrQuCDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtY2FydC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2FydC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUdWlIaW50LFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBUdWlIaWdobGlnaHQsXG4gICAgICAgIFR1aUF1dG9Gb2N1cyxcbiAgICAgICAgSG92ZXJJbWFnZUNhcm91c2VsQ29tcG9uZW50LFxuICAgICAgICBDb3N0V2l0aERpc2NvdW50Q29tcG9uZW50LFxuICAgICAgICBTY1ByaWNlV2FyZWhvdXNlU3RvY2tDb21wb25lbnQsXG4gICAgICAgIFNjSW5wdXRRdWFudGl0eUNvbXBvbmVudCxcbiAgICAgICAgVHVpQ3VycmVuY3lQaXBlLFxuICAgICAgICBUdWlGb3JtYXROdW1iZXJQaXBlLFxuICAgICAgICBUdWlQcmV2aWV3LFxuICAgICAgICBTY0Zvcm1hdERhdGVQaXBlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbU0VBUkNIX1RFUk1fUFJPVklERVJTXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXJ0SXRlbUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0U2NQcmljZUNhcmQge1xuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjbGlja1NldHRpbmdzOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmV2aWV3RGlhbG9nU2VydmljZTogVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UgPSBpbmplY3QoVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0J7RgtC+0LHRgNCw0LbQsNC10YIg0YHQv9C10YbQuNGE0LjQutCw0YbQuNGOLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNwZWNpZmljYXRpb25QcmV2aWV3UmVmZXJlbmNlINCo0LDQsdC70L7QvSDRgdC/0LXRhtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNob3dTcGVjaWZpY2F0aW9uKHNwZWNpZmljYXRpb25QcmV2aWV3UmVmZXJlbmNlOiBUZW1wbGF0ZVJlZjxUdWlEaWFsb2dDb250ZXh0Pik6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdEaWFsb2dTZXJ2aWNlLm9wZW4oc3BlY2lmaWNhdGlvblByZXZpZXdSZWZlcmVuY2UpLnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cInByb2R1Y3QgJiYgY2FydEl0ZW07IGVsc2Ugc2tlbGV0b25cIlxuICAgIGNsYXNzPVwicmVsYXRpdmUgZmxleCB3LWZ1bGwgZ2FwLTQgcm91bmRlZC14bCBwLTEgdGV4dC1ib2R5LXMgaG92ZXI6YmctdHVpLWJhY2tncm91bmQtbmV1dHJhbC0xXCJcbj5cbiAgICBAbGV0IGlzRGlzYWJsZWQgPSBwcm9kdWN0LmlzSGlkZGVuIHx8IHByb2R1Y3QuaXNOdWxsO1xuICAgIDxzYy1ob3Zlci1pbWFnZS1jYXJvdXNlbFxuICAgICAgICAoY2xpY2spPVwiaXNEaXNhYmxlZCA/IG51bGwgOiBjbGlja0NhcmRFdmVudC5lbWl0KClcIlxuICAgICAgICBbaW1hZ2VzXT1cIiFpc01vYmlsZSA/IGdldENhcmRJbWFnZVByZXZpZXdMaXN0KHByb2R1Y3QpIDogW2dldENhcmRJbWFnZVByZXZpZXcoKV1cIlxuICAgICAgICBbaXNTaG93QWN0aW9uc109XCJmYWxzZVwiXG4gICAgICAgIGNsYXNzPVwiYXNwZWN0LXNxdWFyZSB3LTI0IHNocmluay0wIGN1cnNvci1wb2ludGVyIHNlbGYtc3RhcnRcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBnYXAtNCBtZDpmbGV4LXJvdyBtZDppdGVtcy1jZW50ZXIgbWQ6Z2FwLTVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFt0dWlIaWdobGlnaHRdPVwiKHNlYXJjaCQgfCBhc3luYykgPz8gJydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10dWktdGV4dC0wMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0JDRgNGC0LjQutGD0Ls6IHt7IHByb2R1Y3QuY29kZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJocmVmID8/IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpSGlnaGxpZ2h0XT1cIihzZWFyY2gkIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBjbGlja0NhcmRFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXRleHQtYm9keS1tLWJvbGRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0Py5wYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LXR1aS10ZXh0LTAyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCd0L7RgNC80LAg0YPQv9Cw0LrQvtCy0LrQuDoge3sgcHJvZHVjdC5wYWNrIH19XG4gICAgICAgICAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0Lmlnbm9yZU1pbkNvdW50Q2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIkB0dWkucGFja2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHVpSGludF09XCJtaW5Db3VudEhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUhpbnREaXJlY3Rpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHkteGwgdGV4dC10dWktdGV4dC0wMSBvcGFjaXR5LTkwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtaW5Db3VudEhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICDQlNC+0YHRgtGD0L/QtdC9INC30LDQutCw0LcgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICDQv9GA0L7QuNC30LLQvtC70YzQvdC+0LPQviA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgINC60L7Qu9C40YfQtdGB0YLQstCwXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8c2MtY29zdC13aXRoLWRpc2NvdW50IFtwcm9kdWN0XT1cInByb2R1Y3RcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93U3BlY2lmaWNhdGlvbihzcGVjaWZpY2F0aW9uUHJldmlldylcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQodC/0LXRhtC40YTQuNC60LDRhtC40Y9cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICNzcGVjaWZpY2F0aW9uUHJldmlld1xuICAgICAgICAgICAgICAgIGxldC1wcmV2aWV3XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHR1aS1wcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgIFtyb3RhdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbem9vbWFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmwgYXMgc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjYXJ0SXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS54XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpUHJldmlld0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlldy5jb21wbGV0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdHVpLXByZXZpZXc+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc2hyaW5rLTAgZmxleC1jb2wgZ2FwLTQgc206ZmxleC1yb3cgbWQ6dy0xLzIgbGc6dy0zLzUgeGw6dy0xLzIgeGw6Z2FwLTggMnhsOnctMi81XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC00IG1kOmZsZXgtY29sIG1kOml0ZW1zLXN0YXJ0IGxnOmZsZXgtcm93IGxnOml0ZW1zLWNlbnRlciBsZzpnYXAtOFwiPlxuICAgICAgICAgICAgICAgIDxzYy1pbnB1dC1xdWFudGl0eVxuICAgICAgICAgICAgICAgICAgICAjaW5wdXRRdWFudGl0eVxuICAgICAgICAgICAgICAgICAgICBbdHVpQXV0b0ZvY3VzXT1cImF1dG9Gb2N1c2VRdWFudGl0eUlucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dRdWFudGl0eUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0Nyb3NzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGVwXT1cInVuaXRzSGVscGVyLnByb2R1Y3RNdWx0aXBsaWNpdHkocHJvZHVjdClcIlxuICAgICAgICAgICAgICAgICAgICBbaWdub3JlU3RlcFZhbGlkYXRvcnNdPVwicHJvZHVjdC5pZ25vcmVNaW5Db3VudENoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwicXVhbnRpdHlTaG93TG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrQ2xlYXJFdmVudCk9XCJjbGlja0NsZWFyRXZlbnQuZW1pdChjYXJ0SXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpbnB1dFF1YW50aXR5Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LmJsdXIoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0zMiBzaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LTM2IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNhcnRJdGVtLmhlaWdodCB8fCBjYXJ0SXRlbS5sZW5ndGggfHwgY2FydEl0ZW0ud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja1NldHRpbmdzLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMiAhc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLXgtMiB0ZXh0LXhzIHRleHQtdHVpLWJhc2UtMDdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNhcnRJdGVtLm1hcmtlclwiPtCc0LDRgNC60LjRgNC+0LLQutCwOiB7eyBjYXJ0SXRlbS5tYXJrZXIgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS53aWR0aFwiPtCo0LjRgNC40L3QsDoge3sgY2FydEl0ZW0ud2lkdGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0SXRlbS5oZWlnaHQ7IGVsc2UgbGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPtCS0YvRgdC+0YLQsDoge3sgY2FydEl0ZW0uaGVpZ2h0IH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xlbmd0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS5sZW5ndGhcIj7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICDQodGD0LzQvNCwOlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPiB7eyBjYXJ0SXRlbS5jb3N0UnViIHwgdHVpRm9ybWF0TnVtYmVyOiB7IHByZWNpc2lvbjogMiwgZGVjaW1hbFNlcGFyYXRvcjogJy4nLCByb3VuZGluZzogJ2NlaWwnIH0gfCBhc3luYyB9fSB7eyAnUlVCJyB8IHR1aUN1cnJlbmN5IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxzYy1wcmljZS13YXJlaG91c2Utc3RvY2sgW3Byb2R1Y3RdPVwicHJvZHVjdFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS50cmFzaFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ2xlYXJFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiFhYnNvbHV0ZSBsZWZ0LTEgdG9wLTEgbGc6IXJlbGF0aXZlIGxnOmxlZnQtMCBsZzp0b3AtMCBsZzptbC1hdXRvXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICA8ZGl2IGNsYXNzPVwidHVpLXNrZWxldG9uIGZsZXggaC1bOC4yNXJlbV0gdy1mdWxsIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXhsXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXJ0L2NhcnQtaXRlbS9zYy1jYXJ0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtL3NjLWNhcnQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFFekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFvQixtQkFBbUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ3JILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBRTlEOztHQUVHO0FBNkJILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUE1QjVEOztRQTZCSTs7V0FFRztRQUNhLGtCQUFhLEdBQTJCLE1BQU0sRUFBRSxDQUFDO1FBRWpFOztXQUVHO1FBQ2MseUJBQW9CLEdBQTRCLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBVXBHO0lBUkc7Ozs7T0FJRztJQUNPLGlCQUFpQixDQUFDLDZCQUE0RDtRQUNwRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUUsQ0FBQzsrR0FsQlEsbUJBQW1CO21HQUFuQixtQkFBbUIsd0dBSGpCLENBQUMscUJBQXFCLENBQUMsaURDaER0Qyw4bE9Bb0pBLDJDRHhIUSxZQUFZLHVMQUNaLFlBQVksK0JBQ1osU0FBUyxvSUFDVCxPQUFPLG9GQUNQLDRCQUE0QixpTEFDNUIsV0FBVyxzSUFDWCxtQkFBbUIsMFhBRW5CLE9BQU8sNEZBQ1AsWUFBWSwwR0FDWixZQUFZLHFGQUNaLDZCQUE2Qix3SEFDN0IseUJBQXlCLCtGQUN6Qiw4QkFBOEIsb0lBQzlCLHdCQUF3QixnTUFDeEIsZUFBZSwrQ0FDZixtQkFBbUI7OzRGQU9kLG1CQUFtQjtrQkE1Qi9CLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGNBQWMsV0FFZjt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxPQUFPO3dCQUNQLDRCQUE0Qjt3QkFDNUIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osNkJBQTZCO3dCQUM3Qix5QkFBeUI7d0JBQ3pCLDhCQUE4Qjt3QkFDOUIsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixnQkFBZ0I7cUJBQ25CLGFBQ1UsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIG91dHB1dCwgT3V0cHV0RW1pdHRlclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNFQVJDSF9URVJNX1BST1ZJREVSUyB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQ3VycmVuY3lQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlJztcbmltcG9ydCB7IFR1aUF1dG9Gb2N1cyB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlGb3JtYXROdW1iZXJQaXBlLCBUdWlIaW50LCBUdWlJY29uLCBUdWlMaW5rIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpSGlnaGxpZ2h0LCBUdWlQcmV2aWV3LCBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuXG5pbXBvcnQgeyBDb3N0V2l0aERpc2NvdW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jb3N0LXdpdGgtZGlzY291bnQvY29zdC13aXRoLWRpc2NvdW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0hvdmVySW1hZ2VDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NhdGFsb2cvaG92ZXItaW1hZ2UtY2Fyb3VzZWwvc2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNjSW5wdXRRdWFudGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NhdGFsb2cvaW5wdXQtcXVhbnRpdHkvc2MtaW5wdXQtcXVhbnRpdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFNjUHJpY2VXYXJlaG91c2VTdG9ja0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NhdGFsb2cvcHJpY2Utd2FyZWhvdXNlLXN0b2NrL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RTY1ByaWNlQ2FyZCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYWJzdHJhY3QtcHJpY2UtY2FyZC9hYnN0cmFjdC1zYy1wcmljZS1jYXJkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTY0Zvcm1hdERhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvc2MtZm9ybWF0LWRhdGUnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQutCw0YDRgtC+0YfQutC4INGN0LvQtdC80LXQvdGC0LAg0LrQvtGA0LfQuNC90YsuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1jYXJ0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXJ0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFR1aUhpbnQsXG4gICAgICAgIFR1aUxpbmssXG4gICAgICAgIFR1aUhpZ2hsaWdodCxcbiAgICAgICAgVHVpQXV0b0ZvY3VzLFxuICAgICAgICBTY0hvdmVySW1hZ2VDYXJvdXNlbENvbXBvbmVudCxcbiAgICAgICAgQ29zdFdpdGhEaXNjb3VudENvbXBvbmVudCxcbiAgICAgICAgU2NQcmljZVdhcmVob3VzZVN0b2NrQ29tcG9uZW50LFxuICAgICAgICBTY0lucHV0UXVhbnRpdHlDb21wb25lbnQsXG4gICAgICAgIFR1aUN1cnJlbmN5UGlwZSxcbiAgICAgICAgVHVpRm9ybWF0TnVtYmVyUGlwZSxcbiAgICAgICAgVHVpUHJldmlldyxcbiAgICAgICAgU2NGb3JtYXREYXRlUGlwZSxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1NFQVJDSF9URVJNX1BST1ZJREVSU10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2FydEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFNjUHJpY2VDYXJkIHtcbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tTZXR0aW5nczogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJldmlld0RpYWxvZ1NlcnZpY2U6IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCe0YLQvtCx0YDQsNC20LDQtdGCINGB0L/QtdGG0LjRhNC40LrQsNGG0LjRji5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzcGVjaWZpY2F0aW9uUHJldmlld1JlZmVyZW5jZSDQqNCw0LHQu9C+0L0g0YHQv9C10YbQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzaG93U3BlY2lmaWNhdGlvbihzcGVjaWZpY2F0aW9uUHJldmlld1JlZmVyZW5jZTogVGVtcGxhdGVSZWY8VHVpRGlhbG9nQ29udGV4dD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3RGlhbG9nU2VydmljZS5vcGVuKHNwZWNpZmljYXRpb25QcmV2aWV3UmVmZXJlbmNlKS5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKm5nSWY9XCJwcm9kdWN0ICYmIGNhcnRJdGVtOyBlbHNlIHNrZWxldG9uXCJcbiAgICBjbGFzcz1cInJlbGF0aXZlIGZsZXggdy1mdWxsIGdhcC00IHJvdW5kZWQteGwgcC0xIHRleHQtYm9keS1zIGhvdmVyOmJnLXR1aS1iYWNrZ3JvdW5kLW5ldXRyYWwtMVwiXG4+XG4gICAgQGxldCBpc0Rpc2FibGVkID0gcHJvZHVjdC5pc0hpZGRlbiB8fCBwcm9kdWN0LmlzTnVsbDtcbiAgICA8c2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWxcbiAgICAgICAgKGNsaWNrKT1cImlzRGlzYWJsZWQgPyBudWxsIDogY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgW2ltYWdlc109XCIhaXNNb2JpbGUgPyBnZXRDYXJkSW1hZ2VQcmV2aWV3TGlzdChwcm9kdWN0KSA6IFtnZXRDYXJkSW1hZ2VQcmV2aWV3KCldXCJcbiAgICAgICAgW2lzU2hvd0FjdGlvbnNdPVwiZmFsc2VcIlxuICAgICAgICBjbGFzcz1cImFzcGVjdC1zcXVhcmUgdy0yNCBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBzZWxmLXN0YXJ0XCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmdhcC01XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbdHVpSGlnaGxpZ2h0XT1cIihzZWFyY2gkIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHVpLXRleHQtMDJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCQ0YDRgtC40LrRg9C7OiB7eyBwcm9kdWN0LmNvZGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiaHJlZiA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3R1aUhpZ2hsaWdodF09XCIoc2VhcmNoJCB8IGFzeW5jKSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiF0ZXh0LWJvZHktbS1ib2xkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdD8ucGFja1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC10dWktdGV4dC0wMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQndC+0YDQvNCwINGD0L/QsNC60L7QstC60Lg6IHt7IHByb2R1Y3QucGFjayB9fVxuICAgICAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdC5pZ25vcmVNaW5Db3VudENoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLnBhY2thZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUhpbnRdPVwibWluQ291bnRIaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlIaW50U2hvd0RlbGF5XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LXhsIHRleHQtdHVpLXRleHQtMDEgb3BhY2l0eS05MFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWluQ291bnRIaW50PlxuICAgICAgICAgICAgICAgICAgICAgICAg0JTQvtGB0YLRg9C/0LXQvSDQt9Cw0LrQsNC3IDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAg0L/RgNC+0LjQt9Cy0L7Qu9GM0L3QvtCz0L4gPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICDQutC+0LvQuNGH0LXRgdGC0LLQsFxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHNjLWNvc3Qtd2l0aC1kaXNjb3VudCBbcHJvZHVjdF09XCJwcm9kdWN0XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJ0SXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1NwZWNpZmljYXRpb24oc3BlY2lmaWNhdGlvblByZXZpZXcpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KHQv9C10YbQuNGE0LjQutCw0YbQuNGPXG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjc3BlY2lmaWNhdGlvblByZXZpZXdcbiAgICAgICAgICAgICAgICBsZXQtcHJldmlld1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktcHJldmlld1xuICAgICAgICAgICAgICAgICAgICBbcm90YXRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3pvb21hYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjYXJ0SXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsIGFzIHNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJwcmV2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkueFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aVByZXZpZXdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpZXcuY29tcGxldGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3R1aS1wcmV2aWV3PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNocmluay0wIGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93IG1kOnctMS8yIGxnOnctMy81IHhsOnctMS8yIHhsOmdhcC04IDJ4bDp3LTIvNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtNCBtZDpmbGV4LWNvbCBtZDppdGVtcy1zdGFydCBsZzpmbGV4LXJvdyBsZzppdGVtcy1jZW50ZXIgbGc6Z2FwLThcIj5cbiAgICAgICAgICAgICAgICA8c2MtaW5wdXQtcXVhbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgI2lucHV0UXVhbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgW3R1aUF1dG9Gb2N1c109XCJhdXRvRm9jdXNlUXVhbnRpdHlJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInF1YW50aXR5Q29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDcm9zc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJ1bml0c0hlbHBlci5wcm9kdWN0TXVsdGlwbGljaXR5KHByb2R1Y3QpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lnbm9yZVN0ZXBWYWxpZGF0b3JzXT1cInByb2R1Y3QuaWdub3JlTWluQ291bnRDaGVja1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cInF1YW50aXR5U2hvd0xvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgIChjbGlja0NsZWFyRXZlbnQpPVwiY2xpY2tDbGVhckV2ZW50LmVtaXQoY2FydEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaW5wdXRRdWFudGl0eS5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5ibHVyKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMzIgc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy0zNiBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjYXJ0SXRlbS5oZWlnaHQgfHwgY2FydEl0ZW0ubGVuZ3RoIHx8IGNhcnRJdGVtLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tTZXR0aW5ncy5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTIgIXNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC14LTIgdGV4dC14cyB0ZXh0LXR1aS1iYXNlLTA3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS5tYXJrZXJcIj7QnNCw0YDQutC40YDQvtCy0LrQsDoge3sgY2FydEl0ZW0ubWFya2VyIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY2FydEl0ZW0ud2lkdGhcIj7QqNC40YDQuNC90LA6IHt7IGNhcnRJdGVtLndpZHRoIH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydEl0ZW0uaGVpZ2h0OyBlbHNlIGxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QktGL0YHQvtGC0LA6IHt7IGNhcnRJdGVtLmhlaWdodCB9fSDQvC48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsZW5ndGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY2FydEl0ZW0ubGVuZ3RoXCI+0JTQu9C40L3QsDoge3sgY2FydEl0ZW0ubGVuZ3RoIH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAg0KHRg9C80LzQsDpcbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ge3sgY2FydEl0ZW0uY29zdFJ1YiB8IHR1aUZvcm1hdE51bWJlcjogeyBwcmVjaXNpb246IDIsIGRlY2ltYWxTZXBhcmF0b3I6ICcuJywgcm91bmRpbmc6ICdjZWlsJyB9IHwgYXN5bmMgfX0ge3sgJ1JVQicgfCB0dWlDdXJyZW5jeSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8c2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrIFtwcm9kdWN0XT1cInByb2R1Y3RcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkudHJhc2hcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0NsZWFyRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIhYWJzb2x1dGUgbGVmdC0xIHRvcC0xIGxnOiFyZWxhdGl2ZSBsZzpsZWZ0LTAgbGc6dG9wLTAgbGc6bWwtYXV0b1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2tlbGV0b24+XG4gICAgPGRpdiBjbGFzcz1cInR1aS1za2VsZXRvbiBmbGV4IGgtWzguMjVyZW1dIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bFwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
package/esm2022/cart/index.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
export * from './cart-item/sc-cart-item.component';
|
2
|
-
export * from './sc-
|
2
|
+
export * from './sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component';
|
3
3
|
export * from './add-or-editing-cart-item-dialog';
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsdUZBQXVGLENBQUM7QUFDdEcsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FydC1pdGVtL3NjLWNhcnQtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1jYXJ0LWFkZC1wcm9kdWN0cy1mcm9tLWNzdi1kaWFsb2cvc2MtY2FydC1hZGQtcHJvZHVjdHMtZnJvbS1jc3YtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FkZC1vci1lZGl0aW5nLWNhcnQtaXRlbS1kaWFsb2cnO1xuIl19
|
@@ -0,0 +1,110 @@
|
|
1
|
+
import { NgIf } from '@angular/common';
|
2
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
3
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
4
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
5
|
+
import { WA_WINDOW } from '@ng-web-apis/common';
|
6
|
+
import { ScCartService, ScUploadedFile } from '@snabcentr/client-core';
|
7
|
+
import { tuiIsPresent } from '@taiga-ui/cdk';
|
8
|
+
import { TuiButton, TuiLink, TuiLoader } from '@taiga-ui/core';
|
9
|
+
import { TuiButtonLoading, TuiFiles } from '@taiga-ui/kit';
|
10
|
+
import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
|
11
|
+
import { filter, map, Observable, share, startWith, Subject, switchMap, tap } from 'rxjs';
|
12
|
+
import * as i0 from "@angular/core";
|
13
|
+
import * as i1 from "@taiga-ui/kit";
|
14
|
+
import * as i2 from "@angular/forms";
|
15
|
+
/**
|
16
|
+
* Компонент диалога для добавления товаров в корзину из CSV файла.
|
17
|
+
*/
|
18
|
+
export class ScCartAddProductsFromCsvDialogComponent {
|
19
|
+
constructor() {
|
20
|
+
/**
|
21
|
+
* Контекст диалогового окна, в котором открыт компонент.
|
22
|
+
*/
|
23
|
+
this.context = inject(POLYMORPHEUS_CONTEXT);
|
24
|
+
/**
|
25
|
+
* Сервис для работы с корзиной.
|
26
|
+
*/
|
27
|
+
this.cartService = inject(ScCartService);
|
28
|
+
/**
|
29
|
+
* Объект окна.
|
30
|
+
*/
|
31
|
+
this.window = inject(WA_WINDOW);
|
32
|
+
/**
|
33
|
+
* {@link Subject} события скачивания цен каталога.
|
34
|
+
*/
|
35
|
+
this.onDownloadClick = new Subject();
|
36
|
+
/**
|
37
|
+
* {@link Observable} запроса на скачивание цен каталога.
|
38
|
+
*/
|
39
|
+
this.downloadRequest$ = this.onDownloadClick.pipe(switchMap(() => this.cartService.getCartCsvExample$().pipe(tap((blob) => {
|
40
|
+
this.downloadExampleFile(blob);
|
41
|
+
}), startWith(null))), share(),
|
42
|
+
// eslint-disable-next-line unicorn/no-useless-undefined
|
43
|
+
startWith(undefined));
|
44
|
+
/**
|
45
|
+
* Признак того, что запрос выполняется.
|
46
|
+
*/
|
47
|
+
this.isDownloadLoading = toSignal(this.downloadRequest$.pipe(map((value) => value === null)), {
|
48
|
+
initialValue: false,
|
49
|
+
});
|
50
|
+
/**
|
51
|
+
* {@link Subject} события отправки формы.
|
52
|
+
*/
|
53
|
+
this.onSubmit$ = new Subject();
|
54
|
+
/**
|
55
|
+
* {@link Observable} запроса на добавление товаров из CSV файла.
|
56
|
+
*/
|
57
|
+
this.submitRequest$ = this.onSubmit$.pipe(map(() => this.control.value), filter(tuiIsPresent), switchMap((file) => new Observable((observer) => {
|
58
|
+
const reader = new FileReader();
|
59
|
+
reader.addEventListener('load', () => {
|
60
|
+
observer.next(new ScUploadedFile(file.name, reader.result));
|
61
|
+
});
|
62
|
+
reader.addEventListener('error', (e) => {
|
63
|
+
observer.error(e);
|
64
|
+
});
|
65
|
+
reader.readAsDataURL(file);
|
66
|
+
return () => {
|
67
|
+
reader.abort();
|
68
|
+
};
|
69
|
+
})), switchMap((file) => this.cartService.addProductsFromCsv$(file).pipe(tap(() => {
|
70
|
+
this.context.$implicit.complete();
|
71
|
+
}), startWith(null))));
|
72
|
+
/**
|
73
|
+
* Признак того, что запрос на добавление товаров выполняется.
|
74
|
+
*/
|
75
|
+
this.isSubmitLoading = toSignal(this.submitRequest$.pipe(map((value) => value === null)), {
|
76
|
+
initialValue: false,
|
77
|
+
});
|
78
|
+
/**
|
79
|
+
* Поле для загрузки файла.
|
80
|
+
*/
|
81
|
+
this.control = new FormControl(null);
|
82
|
+
}
|
83
|
+
/**
|
84
|
+
* Метод для удаления загруженного файла.
|
85
|
+
*/
|
86
|
+
removeFile() {
|
87
|
+
this.control.setValue(null);
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* Метод для скачивания примера файла.
|
91
|
+
*
|
92
|
+
* @param blob Бинарный объект.
|
93
|
+
*/
|
94
|
+
downloadExampleFile(blob) {
|
95
|
+
const url = this.window.URL.createObjectURL(blob);
|
96
|
+
// используем ссылку и download, чтобы указать название файла.
|
97
|
+
const a = this.window.document.createElement('a');
|
98
|
+
a.href = url;
|
99
|
+
a.download = 'Пример файла добавления товаров в корзину.csv';
|
100
|
+
a.click();
|
101
|
+
this.window.URL.revokeObjectURL(url);
|
102
|
+
}
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScCartAddProductsFromCsvDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
104
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScCartAddProductsFromCsvDialogComponent, isStandalone: true, selector: "sc-cart-add-products-from-csv-dialog", ngImport: i0, template: "<div class=\"flex flex-col items-center gap-8\">\n <tui-loader\n [overlay]=\"true\"\n [showLoader]=\"isDownloadLoading()\"\n size=\"s\"\n class=\"mt-8\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"onDownloadClick.next()\"\n >\n \u041F\u0440\u0438\u043C\u0435\u0440 .csv \u0444\u0430\u0439\u043B\u0430\n </button>\n </tui-loader>\n\n <div class=\"flex w-full flex-col gap-1\">\n <label\n tuiInputFiles\n class=\"w-full\"\n >\n <input\n accept=\"text/csv\"\n tuiInputFiles\n [formControl]=\"control\"\n />\n </label>\n\n <tui-files class=\"tui-space_top-1\">\n <tui-file\n *ngIf=\"control.value as file\"\n [file]=\"file\"\n (remove)=\"removeFile()\"\n />\n </tui-files>\n </div>\n <div class=\"flex gap-2\">\n <button\n tuiButton\n [disabled]=\"!control.value\"\n [loading]=\"isSubmitLoading()\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n (click)=\"onSubmit$.next()\"\n >\n \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: i1.TuiFile, selector: "tui-file,a[tuiFile],button[tuiFile]", inputs: ["file", "state", "size", "showDelete", "showSize", "leftContent"], outputs: ["remove"] }, { kind: "component", type: i1.TuiInputFiles, selector: "label[tuiInputFiles]" }, { kind: "component", type: i1.TuiFilesComponent, selector: "tui-files", inputs: ["max", "expanded"], outputs: ["expandedChange"] }, { kind: "directive", type: i1.TuiInputFilesDirective, selector: "input[tuiInputFiles]", outputs: ["reject"] }, { 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
105
|
+
}
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScCartAddProductsFromCsvDialogComponent, decorators: [{
|
107
|
+
type: Component,
|
108
|
+
args: [{ standalone: true, selector: 'sc-cart-add-products-from-csv-dialog', imports: [TuiLink, TuiLoader, TuiFiles, ReactiveFormsModule, NgIf, TuiButton, TuiButtonLoading], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col items-center gap-8\">\n <tui-loader\n [overlay]=\"true\"\n [showLoader]=\"isDownloadLoading()\"\n size=\"s\"\n class=\"mt-8\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"onDownloadClick.next()\"\n >\n \u041F\u0440\u0438\u043C\u0435\u0440 .csv \u0444\u0430\u0439\u043B\u0430\n </button>\n </tui-loader>\n\n <div class=\"flex w-full flex-col gap-1\">\n <label\n tuiInputFiles\n class=\"w-full\"\n >\n <input\n accept=\"text/csv\"\n tuiInputFiles\n [formControl]=\"control\"\n />\n </label>\n\n <tui-files class=\"tui-space_top-1\">\n <tui-file\n *ngIf=\"control.value as file\"\n [file]=\"file\"\n (remove)=\"removeFile()\"\n />\n </tui-files>\n </div>\n <div class=\"flex gap-2\">\n <button\n tuiButton\n [disabled]=\"!control.value\"\n [loading]=\"isSubmitLoading()\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n (click)=\"onSubmit$.next()\"\n >\n \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</div>\n" }]
|
109
|
+
}] });
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1hZGQtcHJvZHVjdHMtZnJvbS1jc3YtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXJ0L3NjLWNhcnQtYWRkLXByb2R1Y3RzLWZyb20tY3N2LWRpYWxvZy9zYy1jYXJ0LWFkZC1wcm9kdWN0cy1mcm9tLWNzdi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvc2MtY2FydC1hZGQtcHJvZHVjdHMtZnJvbS1jc3YtZGlhbG9nL3NjLWNhcnQtYWRkLXByb2R1Y3RzLWZyb20tY3N2LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBRTFGOztHQUVHO0FBUUgsTUFBTSxPQUFPLHVDQUF1QztJQVBwRDtRQVFJOztXQUVHO1FBQ2dCLFlBQU8sR0FBcUIsTUFBTSxDQUFtQixvQkFBb0IsQ0FBQyxDQUFDO1FBRTlGOztXQUVHO1FBQ2MsZ0JBQVcsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBFOztXQUVHO1FBQ2MsV0FBTSxHQUErQixNQUFNLENBQTZCLFNBQVMsQ0FBQyxDQUFDO1FBRXBHOztXQUVHO1FBQ2dCLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFeEU7O1dBRUc7UUFDZ0IscUJBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLENBQ2xCLENBQ0osRUFDRCxLQUFLLEVBQUU7UUFDUCx3REFBd0Q7UUFDeEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUN2QixDQUFDO1FBRUY7O1dBRUc7UUFDZ0Isc0JBQWlCLEdBQW9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDekgsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDZ0IsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWxFOztXQUVHO1FBQ2dCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUM3QixNQUFNLENBQUMsWUFBWSxDQUFDLEVBQ3BCLFNBQVMsQ0FDTCxDQUFDLElBQVUsRUFBRSxFQUFFLENBQ1gsSUFBSSxVQUFVLENBQWlCLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUVoQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFnQixDQUFDLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0IsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUNULEVBQ0QsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDZixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDM0MsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FDSixDQUNKLENBQUM7UUFFRjs7V0FFRztRQUNnQixvQkFBZSxHQUFvQixRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNySCxZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNnQixZQUFPLEdBQTZCLElBQUksV0FBVyxDQUFjLElBQUksQ0FBQyxDQUFDO0tBd0I3RjtJQXRCRzs7T0FFRztJQUNPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxJQUFVO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCw4REFBOEQ7UUFDOUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxELENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRywrQ0FBK0MsQ0FBQztRQUM3RCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0F2SFEsdUNBQXVDO21HQUF2Qyx1Q0FBdUMsZ0dDdEJwRCx5bkRBMERBLDRDRHZDYyxPQUFPLDRGQUFFLFNBQVMsK25CQUFZLG1CQUFtQiwwa0JBQUUsSUFBSSw2RkFBRSxTQUFTLG9JQUFFLGdCQUFnQjs7NEZBR3JGLHVDQUF1QztrQkFQbkQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sc0NBQXNDLFdBRXZDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDOUUsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBXQV9XSU5ET1cgfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7IFNjQ2FydFNlcnZpY2UsIFNjVXBsb2FkZWRGaWxlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRGlhbG9nQ29udGV4dCwgVHVpTGluaywgVHVpTG9hZGVyIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTG9hZGluZywgVHVpRmlsZXMgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQuNCw0LvQvtCz0LAg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINGC0L7QstCw0YDQvtCyINCyINC60L7RgNC30LjQvdGDINC40LcgQ1NWINGE0LDQudC70LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1jYXJ0LWFkZC1wcm9kdWN0cy1mcm9tLWNzdi1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXJ0LWFkZC1wcm9kdWN0cy1mcm9tLWNzdi1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtUdWlMaW5rLCBUdWlMb2FkZXIsIFR1aUZpbGVzLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0lmLCBUdWlCdXR0b24sIFR1aUJ1dHRvbkxvYWRpbmddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhcnRBZGRQcm9kdWN0c0Zyb21Dc3ZEaWFsb2dDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dDogVHVpRGlhbG9nQ29udGV4dCA9IGluamVjdDxUdWlEaWFsb2dDb250ZXh0PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IFNjQ2FydFNlcnZpY2UgPSBpbmplY3QoU2NDYXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0L7QutC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IFdpbmRvdyAmIHR5cGVvZiBnbG9iYWxUaGlzID0gaW5qZWN0PFdpbmRvdyAmIHR5cGVvZiBnbG9iYWxUaGlzPihXQV9XSU5ET1cpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINGB0LrQsNGH0LjQstCw0L3QuNGPINGG0LXQvSDQutCw0YLQsNC70L7Qs9CwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvbkRvd25sb2FkQ2xpY2s6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC90LAg0YHQutCw0YfQuNCy0LDQvdC40LUg0YbQtdC9INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRvd25sb2FkUmVxdWVzdCQgPSB0aGlzLm9uRG93bmxvYWRDbGljay5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydENzdkV4YW1wbGUkKCkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEV4YW1wbGVGaWxlKGJsb2IpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11c2VsZXNzLXVuZGVmaW5lZFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0YfRgtC+INC30LDQv9GA0L7RgSDQstGL0L/QvtC70L3Rj9C10YLRgdGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0Rvd25sb2FkTG9hZGluZzogU2lnbmFsPGJvb2xlYW4+ID0gdG9TaWduYWwodGhpcy5kb3dubG9hZFJlcXVlc3QkLnBpcGUobWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IG51bGwpKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25TdWJtaXQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQvdCwINC00L7QsdCw0LLQu9C10L3QuNC1INGC0L7QstCw0YDQvtCyINC40LcgQ1NWINGE0LDQudC70LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Ym1pdFJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdCQucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY29udHJvbC52YWx1ZSksXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBzd2l0Y2hNYXAoXG4gICAgICAgICAgICAoZmlsZTogRmlsZSkgPT5cbiAgICAgICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZTxTY1VwbG9hZGVkRmlsZT4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG5ldyBTY1VwbG9hZGVkRmlsZShmaWxlLm5hbWUsIHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5hYm9ydCgpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcCgoZmlsZSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkUHJvZHVjdHNGcm9tQ3N2JChmaWxlKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0YfRgtC+INC30LDQv9GA0L7RgSDQvdCwINC00L7QsdCw0LLQu9C10L3QuNC1INGC0L7QstCw0YDQvtCyINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3VibWl0TG9hZGluZzogU2lnbmFsPGJvb2xlYW4+ID0gdG9TaWduYWwodGhpcy5zdWJtaXRSZXF1ZXN0JC5waXBlKG1hcCgodmFsdWUpID0+IHZhbHVlID09PSBudWxsKSksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INC00LvRjyDQt9Cw0LPRgNGD0LfQutC4INGE0LDQudC70LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRyb2w6IEZvcm1Db250cm9sPEZpbGUgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxGaWxlIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiDQnNC10YLQvtC0INC00LvRjyDRg9C00LDQu9C10L3QuNGPINC30LDQs9GA0YPQttC10L3QvdC+0LPQviDRhNCw0LnQu9CwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZW1vdmVGaWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JzQtdGC0L7QtCDQtNC70Y8g0YHQutCw0YfQuNCy0LDQvdC40Y8g0L/RgNC40LzQtdGA0LAg0YTQsNC50LvQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBibG9iINCR0LjQvdCw0YDQvdGL0Lkg0L7QsdGK0LXQutGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgZG93bmxvYWRFeGFtcGxlRmlsZShibG9iOiBCbG9iKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMud2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgIC8vINC40YHQv9C+0LvRjNC30YPQtdC8INGB0YHRi9C70LrRgyDQuCBkb3dubG9hZCwg0YfRgtC+0LHRiyDRg9C60LDQt9Cw0YLRjCDQvdCw0LfQstCw0L3QuNC1INGE0LDQudC70LAuXG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gJ9Cf0YDQuNC80LXRgCDRhNCw0LnQu9CwINC00L7QsdCw0LLQu9C10L3QuNGPINGC0L7QstCw0YDQvtCyINCyINC60L7RgNC30LjQvdGDLmNzdic7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgdGhpcy53aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtOFwiPlxuICAgIDx0dWktbG9hZGVyXG4gICAgICAgIFtvdmVybGF5XT1cInRydWVcIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJpc0Rvd25sb2FkTG9hZGluZygpXCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBjbGFzcz1cIm10LThcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRDbGljay5uZXh0KClcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQn9GA0LjQvNC10YAgLmNzdiDRhNCw0LnQu9CwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWxvYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIHR1aUlucHV0RmlsZXNcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgYWNjZXB0PVwidGV4dC9jc3ZcIlxuICAgICAgICAgICAgICAgIHR1aUlucHV0RmlsZXNcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDx0dWktZmlsZXMgY2xhc3M9XCJ0dWktc3BhY2VfdG9wLTFcIj5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC52YWx1ZSBhcyBmaWxlXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS1maWxlcz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJpc1N1Ym1pdExvYWRpbmcoKVwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLnNlbmRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQkLm5leHQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCX0LDQs9GA0YPQt9C40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
@@ -7,6 +7,7 @@ import * as i2 from "@angular/router";
|
|
7
7
|
import * as i3 from "@taiga-ui/kit";
|
8
8
|
import * as i4 from "@taiga-ui/cdk";
|
9
9
|
import * as i5 from "../sc-favorite-button/sc-favorite-button.component";
|
10
|
+
import * as i6 from "@snabcentr/client-core";
|
10
11
|
/**
|
11
12
|
* Карточка категории.
|
12
13
|
*/
|
@@ -64,14 +65,6 @@ export class ScCategoryCardComponent {
|
|
64
65
|
onHovered(isHover) {
|
65
66
|
this.isHover = isHover;
|
66
67
|
}
|
67
|
-
/**
|
68
|
-
* Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию ("product_not_found").
|
69
|
-
*
|
70
|
-
* @param category Данные о категории.
|
71
|
-
*/
|
72
|
-
getCategoryImgURL(category) {
|
73
|
-
return category.properties?.image ? `${this.urls.imgServerUrl}/${category.properties.image}` : this.pathImageNotFound;
|
74
|
-
}
|
75
68
|
/**
|
76
69
|
* Устанавливает компонент в очередь на обновление.
|
77
70
|
*
|
@@ -81,11 +74,11 @@ export class ScCategoryCardComponent {
|
|
81
74
|
this.cdr.markForCheck();
|
82
75
|
}
|
83
76
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: false, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button rounded-tui-radius-m border-tui-base-04
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: false, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button flex flex-col overflow-hidden rounded-tui-radius-m border border-tui-base-04 text-center\"\n >\n <div class=\"img-wrapper w-full grow overflow-hidden\">\n <picture *ngIf=\"category\">\n @if (category.properties?.imageWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"category.properties?.imageWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"category.properties?.image | scMediaImageTransformer: true\"\n [alt]=\"category.name\"\n [ngClass]=\"{ '!object-contain p-2': appearance() === 'normal' || !category.properties?.image }\"\n class=\"size-full rounded-xl object-cover\"\n />\n </picture>\n <!-- \u0411\u043B\u043E\u043A \u0434\u043B\u044F \u0441\u043A\u0435\u043B\u0435\u0442\u043E\u043D\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 -->\n <div\n *ngIf=\"!category\"\n class=\"img-wrapper size-full bg-tui-base-02\"\n ></div>\n </div>\n\n <div class=\"name flex w-full items-center justify-center\">\n @if (category) {\n @if (enableHover && !isMobile) {\n <tui-line-clamp\n [content]=\"category.name\"\n class=\"pointer-events-none\"\n [lineHeight]=\"size === 'm' ? 26 : 24\"\n [linesLimit]=\"isHover ? 4 : 2\"\n />\n } @else {\n {{ category.name }}\n }\n } @else {\n <div class=\"skeleton-name rounded-tui-radius-s bg-tui-base-02\"></div>\n }\n </div>\n </a>\n <sc-favorite-button\n *ngIf=\"category && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n />\n</div>\n", styles: [":host{--tui-duration: .15s}:host[data-size=m] a.category-button{width:100%;height:12.5rem}:host[data-size=m] a.category-button .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-button .name{padding:.25rem 1rem;margin-block:auto;font-size:.9375rem;line-height:1.5rem;font-weight:800}:host[data-size=m] a.category-button .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-button{width:100%;height:10rem}:host[data-size=s] a.category-button .img-wrapper{max-height:7rem}:host[data-size=s] a.category-button .name{padding:.25rem .5rem;margin-block:auto;font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=s] a.category-button .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.TuiLineClamp, selector: "tui-line-clamp", inputs: ["lineHeight", "content", "linesLimit"], outputs: ["overflownChange"] }, { kind: "directive", type: i4.TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "component", type: i5.ScFavoriteButtonComponent, selector: "sc-favorite-button", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.ScMediaImageTransformerPipe, name: "scMediaImageTransformer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
85
78
|
}
|
86
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
|
87
80
|
type: Component,
|
88
|
-
args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button rounded-tui-radius-m border-tui-base-04
|
81
|
+
args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button flex flex-col overflow-hidden rounded-tui-radius-m border border-tui-base-04 text-center\"\n >\n <div class=\"img-wrapper w-full grow overflow-hidden\">\n <picture *ngIf=\"category\">\n @if (category.properties?.imageWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"category.properties?.imageWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"category.properties?.image | scMediaImageTransformer: true\"\n [alt]=\"category.name\"\n [ngClass]=\"{ '!object-contain p-2': appearance() === 'normal' || !category.properties?.image }\"\n class=\"size-full rounded-xl object-cover\"\n />\n </picture>\n <!-- \u0411\u043B\u043E\u043A \u0434\u043B\u044F \u0441\u043A\u0435\u043B\u0435\u0442\u043E\u043D\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 -->\n <div\n *ngIf=\"!category\"\n class=\"img-wrapper size-full bg-tui-base-02\"\n ></div>\n </div>\n\n <div class=\"name flex w-full items-center justify-center\">\n @if (category) {\n @if (enableHover && !isMobile) {\n <tui-line-clamp\n [content]=\"category.name\"\n class=\"pointer-events-none\"\n [lineHeight]=\"size === 'm' ? 26 : 24\"\n [linesLimit]=\"isHover ? 4 : 2\"\n />\n } @else {\n {{ category.name }}\n }\n } @else {\n <div class=\"skeleton-name rounded-tui-radius-s bg-tui-base-02\"></div>\n }\n </div>\n </a>\n <sc-favorite-button\n *ngIf=\"category && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n />\n</div>\n", styles: [":host{--tui-duration: .15s}:host[data-size=m] a.category-button{width:100%;height:12.5rem}:host[data-size=m] a.category-button .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-button .name{padding:.25rem 1rem;margin-block:auto;font-size:.9375rem;line-height:1.5rem;font-weight:800}:host[data-size=m] a.category-button .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-button{width:100%;height:10rem}:host[data-size=s] a.category-button .img-wrapper{max-height:7rem}:host[data-size=s] a.category-button .name{padding:.25rem .5rem;margin-block:auto;font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=s] a.category-button .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
|
89
82
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
90
83
|
type: Inject,
|
91
84
|
args: [SC_URLS]
|
@@ -106,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
106
99
|
}], href: [{
|
107
100
|
type: Input
|
108
101
|
}] } });
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQUk3RDs7R0FFRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUEwRGhDOzs7Ozs7T0FNRztJQUNILFlBQ3NDLElBQWEsRUFDRyxpQkFBeUIsRUFDMUQsR0FBc0I7UUFGTCxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ0csc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQzFELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBN0QzQzs7V0FFRztRQUdJLFNBQUksR0FBYSxHQUFHLENBQUM7UUFFNUIsbUNBQW1DO1FBQ25DOztXQUVHO1FBQ0ksZUFBVSxHQUFrRCxLQUFLLENBQW1DLFFBQVEsQ0FBQyxDQUFDO1FBRXJIOztXQUVHO1FBQ0ksdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBd0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpGOztXQUVHO1FBQ08sWUFBTyxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUVJLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXBDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUVJLHlCQUFvQixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBbUJwRixDQUFDO0lBRUo7Ozs7T0FJRztJQUNPLFNBQVMsQ0FBQyxPQUFnQjtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGlCQUFpQixDQUFDLFFBQW9CO1FBQzVDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzFILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWTtRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQzsrR0FoR1EsdUJBQXVCLGtCQWtFcEIsT0FBTyxhQUNQLHVCQUF1QjttR0FuRTFCLHVCQUF1Qix3ekJDZnBDLG82REErQ0E7OzRGRGhDYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OzBCQW9FMUMsTUFBTTsyQkFBQyxPQUFPOzswQkFDZCxNQUFNOzJCQUFDLHVCQUF1Qjt5RUE5RDVCLFFBQVE7c0JBRGQsS0FBSztnQkFRQyxJQUFJO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQTRCdEIsV0FBVztzQkFEakIsS0FBSztnQkFZQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBT0EsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgaW5wdXQsIElucHV0U2lnbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5ELCBTQ19VUkxTLCBTY0F1dGhTZXJ2aWNlLCBTY0NhdGVnb3J5LCBTY0lVcmxzIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfSVNfTU9CSUxFLCBUdWlMb29zZVVuaW9uIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlTaXplUyB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQmtCw0YDRgtC+0YfQutCwINC60LDRgtC10LPQvtGA0LjQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1jYXRlZ29yeS1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhdGVnb3J5Q2FyZENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYXRlZ29yeT86IFNjQ2F0ZWdvcnk7XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0LfQvNC10YAg0LrQsNGA0YLQvtGH0LrQuCDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJylcbiAgICBwdWJsaWMgc2l6ZTogVHVpU2l6ZVMgPSAnbSc7XG5cbiAgICAvLyBUT0RPOiDQn9C10YDQtdC00LXQu9Cw0YLRjCDQvdCwIEhvc3RCaW5kaW5nLlxuICAgIC8qKlxuICAgICAqINCS0LjQtCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC60LDRgNGC0L7Rh9C60LguXG4gICAgICovXG4gICAgcHVibGljIGFwcGVhcmFuY2U6IElucHV0U2lnbmFsPFR1aUxvb3NlVW5pb248J3Jvb3QnIHwgJ25vcm1hbCc+PiA9IGlucHV0PFR1aUxvb3NlVW5pb248J3Jvb3QnIHwgJ25vcm1hbCc+Pignbm9ybWFsJyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC70L7QsNC00LXRgCDQtNC70Y8g0LrQvdC+0L/QutC4INC40LfQsdGA0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQuCDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIGZhdm9yaXRlU2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdXRoU3RhdHVzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGluamVjdChTY0F1dGhTZXJ2aWNlKS5nZXRBdXRoQ2hhbmdlKCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQvdCw0LLQtdC00LXQvdC40Y8g0L3QsCDQutCw0YDRgtC+0YfQutGDLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0hvdmVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRh9GC0L4g0LrQsNGC0LXQs9C+0YDQuNGPINC40LzQtdC10YIg0L/QvtCy0LXQtNC10L3QuNC1INC90LDQstC10LTQtdC90LjRjyDQuCDRgdC60YDRi9GC0LjRjyDQvdCw0LfQstCw0L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVuYWJsZUhvdmVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGN0YLQvtGCINC60L7QvNC/0L7QvdC10L3RgiDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtSDQuNC70Lgg0L3QtdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC40LfQsdGA0LDQvdC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrT25GYXZvcml0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDRgdGC0YDQsNC90LjRhtGDINC60LDRgtC10LPQvtGA0LjQuC4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC40LzQtdC90L3QviBgaHJlZmAsINGC0LDQuiDQutCw0Log0L7RgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtCx0YvRgtC40LUg0LrQu9C40LrQsCDQtNC70Y8gYHJvdXRlckxpbmtgINC90LUg0LLRi9GI0LvQvi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBDYXRlZ29yeUNhcmRDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gcGF0aEltYWdlTm90Rm91bmQg0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKiBAcGFyYW0gY2RyINCe0LHRitC10LrRgiDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC+0LHQvdCw0YDRg9C20LXQvdC40LXQvCDQuNC30LzQtdC90LXQvdC40LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyDQvdCw0LLQtdC00LXQvdC40Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXNIb3ZlciDQn9GA0LjQt9C90LDQuiDQvdCw0LLQtdC00LXQvdC40Y8g0L3QsCDQutCw0YDRgtC+0YfQutGDLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvbkhvdmVyZWQoaXNIb3ZlcjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSG92ZXIgPSBpc0hvdmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YPRgtGMINC6INC40LfQvtCx0YDQsNC20LXQvdC40Y4g0LrQsNGC0LXQs9C+0YDQuNC4LiDQldGB0LvQuCDQv9GD0YLRjCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCLCDRgtC+INCy0LXRgNC90ZHRgiDQuNC30L7QsdGA0LDQttC10L3QuNC1INC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOIChcInByb2R1Y3Rfbm90X2ZvdW5kXCIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5INCU0LDQvdC90YvQtSDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldENhdGVnb3J5SW1nVVJMKGNhdGVnb3J5OiBTY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlID8gYCR7dGhpcy51cmxzLmltZ1NlcnZlclVybH0vJHtjYXRlZ29yeS5wcm9wZXJ0aWVzLmltYWdlfWAgOiB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC60L7QvNC/0L7QvdC10L3RgiDQsiDQvtGH0LXRgNC10LTRjCDQvdCwINC+0LHQvdC+0LLQu9C10L3QuNC1LlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICA8YVxuICAgICAgICAodHVpSG92ZXJlZENoYW5nZSk9XCJvbkhvdmVyZWQoJGV2ZW50KVwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cImhyZWYgPz8gbnVsbFwiXG4gICAgICAgIGNsYXNzPVwiY2F0ZWdvcnktYnV0dG9uIHJvdW5kZWQtdHVpLXJhZGl1cy1tIGJvcmRlci10dWktYmFzZS0wNCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiBib3JkZXIgdGV4dC1jZW50ZXJcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltZy13cmFwcGVyIHctZnVsbCBncm93IG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0Q2F0ZWdvcnlJbWdVUkwoY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJyFvYmplY3QtY29udGFpbiBwLTInOiBhcHBlYXJhbmNlKCkgPT09ICdub3JtYWwnIHx8ICFnZXRDYXRlZ29yeUltZ1VSTChjYXRlZ29yeSkgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgcm91bmRlZC14bCBvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPCEtLSDQkdC70L7QuiDQtNC70Y8g0YHQutC10LvQtdGC0L7QvdCwINC60LDRgNGC0L7Rh9C60LggLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1nLXdyYXBwZXIgYmctdHVpLWJhc2UtMDIgc2l6ZS1mdWxsXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICBAaWYgKGNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgQGlmIChlbmFibGVIb3ZlciAmJiAhaXNNb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHR1aS1saW5lLWNsYW1wXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJjYXRlZ29yeS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGluZUhlaWdodF09XCJzaXplID09PSAnbScgPyAyNiA6IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lc0xpbWl0XT1cImlzSG92ZXIgPyA0IDogMlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IGNhdGVnb3J5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tbmFtZSByb3VuZGVkLXR1aS1yYWRpdXMtcyBiZy10dWktYmFzZS0wMlwiPjwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2E+XG4gICAgPHNjLWZhdm9yaXRlLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImNhdGVnb3J5ICYmIChhdXRoU3RhdHVzJCB8IGFzeW5jKVwiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhdm9yaXRlU2hvd0xvYWRlclwiXG4gICAgICAgIFtpc0Zhdm9yaXRlXT1cImNhdGVnb3J5LmlzRmF2b3JpdGVcIlxuICAgICAgICAoY2xpY2tFdmVudCk9XCJjbGlja09uRmF2b3JpdGVFdmVudC5lbWl0KClcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMSB0b3AtMVwiXG4gICAgLz5cbjwvZGl2PlxuIl19
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFJN0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBMERoQzs7Ozs7O09BTUc7SUFDSCxZQUNzQyxJQUFhLEVBQ0csaUJBQXlCLEVBQzFELEdBQXNCO1FBRkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNHLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUMxRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTdEM0M7O1dBRUc7UUFHSSxTQUFJLEdBQWEsR0FBRyxDQUFDO1FBRTVCLG1DQUFtQztRQUNuQzs7V0FFRztRQUNJLGVBQVUsR0FBa0QsS0FBSyxDQUFtQyxRQUFRLENBQUMsQ0FBQztRQUVySDs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUNhLGdCQUFXLEdBQXdCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV6Rjs7V0FFRztRQUNPLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFbkM7O1dBRUc7UUFFSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFFSSx5QkFBb0IsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQW1CcEYsQ0FBQztJQUVKOzs7O09BSUc7SUFDTyxTQUFTLENBQUMsT0FBZ0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQXZGUSx1QkFBdUIsa0JBa0VwQixPQUFPLGFBQ1AsdUJBQXVCO21HQW5FMUIsdUJBQXVCLHd6QkNmcEMsa3dFQXFEQTs7NEZEdENhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBb0UxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUNkLE1BQU07MkJBQUMsdUJBQXVCO3lFQTlENUIsUUFBUTtzQkFEZCxLQUFLO2dCQVFDLElBQUk7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBNEJ0QixXQUFXO3NCQURqQixLQUFLO2dCQVlDLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFPQSxJQUFJO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBpbmplY3QsIElucHV0LCBpbnB1dCwgSW5wdXRTaWduYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQsIFNDX1VSTFMsIFNjQXV0aFNlcnZpY2UsIFNjQ2F0ZWdvcnksIFNjSVVybHMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIFR1aUxvb3NlVW5pb24gfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aVNpemVTIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0LDRgNGC0L7Rh9C60LAg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNhdGVnb3J5LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0ZWdvcnlDYXJkQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3J5PzogU2NDYXRlZ29yeTtcblxuICAgIC8qKlxuICAgICAqINCg0LDQt9C80LXRgCDQutCw0YDRgtC+0YfQutC4INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIHB1YmxpYyBzaXplOiBUdWlTaXplUyA9ICdtJztcblxuICAgIC8vIFRPRE86INCf0LXRgNC10LTQtdC70LDRgtGMINC90LAgSG9zdEJpbmRpbmcuXG4gICAgLyoqXG4gICAgICog0JLQuNC0INC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LrQsNGA0YLQvtGH0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXBwZWFyYW5jZTogSW5wdXRTaWduYWw8VHVpTG9vc2VVbmlvbjwncm9vdCcgfCAnbm9ybWFsJz4+ID0gaW5wdXQ8VHVpTG9vc2VVbmlvbjwncm9vdCcgfCAnbm9ybWFsJz4+KCdub3JtYWwnKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LvQvtCw0LTQtdGAINC00LvRjyDQutC90L7Qv9C60Lgg0LjQt9Cx0YDQsNC90L3Ri9GFINGC0L7QstCw0YDQvtCyINC4INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmF2b3JpdGVTaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YPRgdCwINCw0LLRgtC+0YDQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF1dGhTdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gaW5qZWN0KFNjQXV0aFNlcnZpY2UpLmdldEF1dGhDaGFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC90LDQstC10LTQtdC90LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGH0YLQviDQutCw0YLQtdCz0L7RgNC40Y8g0LjQvNC10LXRgiDQv9C+0LLQtdC00LXQvdC40LUg0L3QsNCy0LXQtNC10L3QuNGPINC4INGB0LrRgNGL0YLQuNGPINC90LDQt9Cy0LDQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0Y3RgtC+0YIg0LrQvtC80L/QvtC90LXQvdGCINC90LAg0LzQvtCx0LjQu9GM0L3QvtC8INGD0YHRgtGA0L7QudGB0YLQstC1INC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LjQt9Cx0YDQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPbkZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwINGB0YLRgNCw0L3QuNGG0YMg0LrQsNGC0LXQs9C+0YDQuNC4LiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LjQvNC10L3QvdC+IGBocmVmYCwg0YLQsNC6INC60LDQuiDQvtGB0YLQsNC90L7QstC40YLRjCDRgdC+0LHRi9GC0LjQtSDQutC70LjQutCwINC00LvRjyBgcm91dGVyTGlua2Ag0L3QtSDQstGL0YjQu9C+LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIENhdGVnb3J5Q2FyZENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZCdhLlxuICAgICAqIEBwYXJhbSBwYXRoSW1hZ2VOb3RGb3VuZCDQn9GD0YLRjCDQtNC+INC40LfQvtCx0YDQsNC20LXQvdC40Y8gJ9Ci0L7QstCw0YAg0L3QtSDQvdCw0LnQtNC10L0nLlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBASW5qZWN0KFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5EKSBwcml2YXRlIHJlYWRvbmx5IHBhdGhJbWFnZU5vdEZvdW5kOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINC90LDQstC10LTQtdC90LjRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc0hvdmVyINCf0YDQuNC30L3QsNC6INC90LDQstC10LTQtdC90LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uSG92ZXJlZChpc0hvdmVyOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIb3ZlciA9IGlzSG92ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LrQvtC80L/QvtC90LXQvdGCINCyINC+0YfQtdGA0LXQtNGMINC90LAg0L7QsdC90L7QstC70LXQvdC40LUuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgIDxhXG4gICAgICAgICh0dWlIb3ZlcmVkQ2hhbmdlKT1cIm9uSG92ZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiaHJlZiA/PyBudWxsXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeS1idXR0b24gZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC10dWktcmFkaXVzLW0gYm9yZGVyIGJvcmRlci10dWktYmFzZS0wNCB0ZXh0LWNlbnRlclwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLXdyYXBwZXIgdy1mdWxsIGdyb3cgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8cGljdHVyZSAqbmdJZj1cImNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZVdlYnApIHtcbiAgICAgICAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImltYWdlL3dlYnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY3NldF09XCJjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZVdlYnAgfCBzY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZSB8IHNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyOiB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJjYXRlZ29yeS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnIW9iamVjdC1jb250YWluIHAtMic6IGFwcGVhcmFuY2UoKSA9PT0gJ25vcm1hbCcgfHwgIWNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlIH1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbCByb3VuZGVkLXhsIG9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgICAgIDwhLS0g0JHQu9C+0Log0LTQu9GPINGB0LrQtdC70LXRgtC+0L3QsCDQutCw0YDRgtC+0YfQutC4IC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImltZy13cmFwcGVyIHNpemUtZnVsbCBiZy10dWktYmFzZS0wMlwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmIChjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlSG92ZXIgJiYgIWlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0dWktbGluZS1jbGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiY2F0ZWdvcnkubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmVIZWlnaHRdPVwic2l6ZSA9PT0gJ20nID8gMjYgOiAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGluZXNMaW1pdF09XCJpc0hvdmVyID8gNCA6IDJcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeS5uYW1lIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLW5hbWUgcm91bmRlZC10dWktcmFkaXVzLXMgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICAgIDxzYy1mYXZvcml0ZS1idXR0b25cbiAgICAgICAgKm5nSWY9XCJjYXRlZ29yeSAmJiAoYXV0aFN0YXR1cyQgfCBhc3luYylcIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYXZvcml0ZVNob3dMb2FkZXJcIlxuICAgICAgICBbaXNGYXZvcml0ZV09XCJjYXRlZ29yeS5pc0Zhdm9yaXRlXCJcbiAgICAgICAgKGNsaWNrRXZlbnQpPVwiY2xpY2tPbkZhdm9yaXRlRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTFcIlxuICAgIC8+XG48L2Rpdj5cbiJdfQ==
|
@@ -0,0 +1,76 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';
|
2
|
+
import { TuiHovered, TuiRepeatTimes } from '@taiga-ui/cdk';
|
3
|
+
import { TuiButton } from '@taiga-ui/core';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
/**
|
6
|
+
* Компонент просмотра изображений через событие наведения.
|
7
|
+
*/
|
8
|
+
export class ScHoverImageCarouselComponent {
|
9
|
+
constructor() {
|
10
|
+
/**
|
11
|
+
* Массив изображений.
|
12
|
+
*/
|
13
|
+
this.images = input.required();
|
14
|
+
/**
|
15
|
+
* Признак что необходимо отобразить элементы управления.
|
16
|
+
*/
|
17
|
+
this.isShowActions = input(true);
|
18
|
+
/**
|
19
|
+
* {@link WritableSignal} для отслеживания текущего индекса изображения.
|
20
|
+
*/
|
21
|
+
this.currentIndex = signal(0);
|
22
|
+
/**
|
23
|
+
* {@link WritableSignal} для отслеживания текущего индекса изображения.
|
24
|
+
*/
|
25
|
+
this.currentImage = computed(() => this.images()[this.currentIndex()]);
|
26
|
+
/**
|
27
|
+
* Название товара.
|
28
|
+
*/
|
29
|
+
this.productName = input();
|
30
|
+
}
|
31
|
+
/**
|
32
|
+
* Обработчик события `mousemove.silent`.
|
33
|
+
*
|
34
|
+
* @param offsetX Отступ курсора мыши по оси X от края {@link HTMLElement}.
|
35
|
+
* @param target Объект {@link HTMLElement} в котором лежат изображения
|
36
|
+
*/
|
37
|
+
onHover(offsetX, target) {
|
38
|
+
if (this.images().length <= 1 || offsetX < 0) {
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
const elementWidth = target.offsetWidth;
|
42
|
+
const hoverPercentage = Math.min(offsetX / elementWidth, 1);
|
43
|
+
const newIndex = Math.min(Math.floor(hoverPercentage * this.images().length), this.images().length - 1);
|
44
|
+
this.currentIndex.set(newIndex);
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* Обработчик события `mouseleave.silent`.
|
48
|
+
*/
|
49
|
+
onLeave() {
|
50
|
+
if (this.images.length <= 1) {
|
51
|
+
return;
|
52
|
+
}
|
53
|
+
this.currentIndex.set(0);
|
54
|
+
}
|
55
|
+
/**
|
56
|
+
* Обработчик события наведения указателя мыши на точку.
|
57
|
+
*
|
58
|
+
* @param hovered Признак что указатель мыши наведен на точку.
|
59
|
+
* @param index Индекс изображения, который соответствует точке.
|
60
|
+
*/
|
61
|
+
onDotHovered(hovered, index) {
|
62
|
+
if (hovered) {
|
63
|
+
this.currentIndex.set(index);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScHoverImageCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScHoverImageCarouselComponent, isStandalone: true, selector: "sc-hover-image-carousel", inputs: { images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: true, transformFunction: null }, isShowActions: { classPropertyName: "isShowActions", publicName: "isShowActions", isSignal: true, isRequired: false, transformFunction: null }, productName: { classPropertyName: "productName", publicName: "productName", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousemove.silent": "onHover($event.offsetX, $event.target)", "mouseleave.silent": "onLeave()" } }, ngImport: i0, template: "<div\n class=\"overflow-hidden rounded-xl\"\n [class.mb-2]=\"images().length <= 1 && isShowActions()\"\n [style.aspect-ratio]=\"'20/19'\"\n>\n @let image = currentImage();\n <picture>\n @if (image.imageWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"image.imageWebp\"\n />\n }\n\n @if (image.image) {\n <img\n [src]=\"image.image\"\n [alt]=\"image.alt\"\n class=\"size-full rounded-xl object-contain\"\n />\n }\n </picture>\n</div>\n@if (images().length > 1 && isShowActions()) {\n <div\n (mousemove.silent)=\"$event.stopPropagation()\"\n class=\"flex justify-center\"\n >\n <button\n *tuiRepeatTimes=\"let indexItem of images().length\"\n #element\n tuiButton\n type=\"button\"\n class=\"button button_small\"\n [appearance]=\"indexItem === currentIndex() ? 'primary' : 'secondary'\"\n (tuiHoveredChange)=\"onDotHovered($event, indexItem)\"\n ></button>\n </div>\n}\n", styles: [".button{flex-shrink:0}.button:first-child{margin-inline-start:0}.button:last-child{margin-inline-end:0}.button_small{inline-size:.5rem;block-size:.5rem;font-size:0;padding:0;margin:0}.button_small:not(:first-child){margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
68
|
+
}
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScHoverImageCarouselComponent, decorators: [{
|
70
|
+
type: Component,
|
71
|
+
args: [{ standalone: true, selector: 'sc-hover-image-carousel', imports: [TuiRepeatTimes, TuiButton, TuiHovered], host: {
|
72
|
+
'(mousemove.silent)': 'onHover($event.offsetX, $event.target)',
|
73
|
+
'(mouseleave.silent)': 'onLeave()',
|
74
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"overflow-hidden rounded-xl\"\n [class.mb-2]=\"images().length <= 1 && isShowActions()\"\n [style.aspect-ratio]=\"'20/19'\"\n>\n @let image = currentImage();\n <picture>\n @if (image.imageWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"image.imageWebp\"\n />\n }\n\n @if (image.image) {\n <img\n [src]=\"image.image\"\n [alt]=\"image.alt\"\n class=\"size-full rounded-xl object-contain\"\n />\n }\n </picture>\n</div>\n@if (images().length > 1 && isShowActions()) {\n <div\n (mousemove.silent)=\"$event.stopPropagation()\"\n class=\"flex justify-center\"\n >\n <button\n *tuiRepeatTimes=\"let indexItem of images().length\"\n #element\n tuiButton\n type=\"button\"\n class=\"button button_small\"\n [appearance]=\"indexItem === currentIndex() ? 'primary' : 'secondary'\"\n (tuiHoveredChange)=\"onDotHovered($event, indexItem)\"\n ></button>\n </div>\n}\n", styles: [".button{flex-shrink:0}.button:first-child{margin-inline-start:0}.button:last-child{margin-inline-end:0}.button_small{inline-size:.5rem;block-size:.5rem;font-size:0;padding:0;margin:0}.button_small:not(:first-child){margin-left:.5rem}\n"] }]
|
75
|
+
}] });
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvaG92ZXItaW1hZ2UtY2Fyb3VzZWwvc2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvaG92ZXItaW1hZ2UtY2Fyb3VzZWwvc2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBRWpJLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFM0M7O0dBRUc7QUFhSCxNQUFNLE9BQU8sNkJBQTZCO0lBWjFDO1FBYUk7O1dBRUc7UUFDYSxXQUFNLEdBQTRCLEtBQUssQ0FBQyxRQUFRLEVBQWMsQ0FBQztRQUUvRTs7V0FFRztRQUNhLGtCQUFhLEdBQXlCLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUUzRTs7V0FFRztRQUNhLGlCQUFZLEdBQTJCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRTs7V0FFRztRQUNhLGlCQUFZLEdBQXFCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRzs7V0FFRztRQUNhLGdCQUFXLEdBQW9DLEtBQUssRUFBc0IsQ0FBQztLQTJDOUY7SUF6Q0c7Ozs7O09BS0c7SUFDSyxPQUFPLENBQUMsT0FBZSxFQUFFLE1BQW1CO1FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN4QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxPQUFPO1FBQ1gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFlBQVksQ0FBQyxPQUFnQixFQUFFLEtBQWE7UUFDbEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDTCxDQUFDOytHQWxFUSw2QkFBNkI7bUdBQTdCLDZCQUE2Qiw0bUJDcEIxQyxrb0NBdUNBLHFTRDVCYyxjQUFjLDZHQUFFLFNBQVMsb0lBQUUsVUFBVTs7NEZBU3RDLDZCQUE2QjtrQkFaekMsU0FBUztpQ0FDTSxJQUFJLFlBQ04seUJBQXlCLFdBQzFCLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsUUFHMUM7d0JBQ0Ysb0JBQW9CLEVBQUUsd0NBQXdDO3dCQUM5RCxxQkFBcUIsRUFBRSxXQUFXO3FCQUNyQyxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgSW5wdXRTaWduYWwsIFNpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NJSW1hZ2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUhvdmVyZWQsIFR1aVJlcGVhdFRpbWVzIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24gfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC/0YDQvtGB0LzQvtGC0YDQsCDQuNC30L7QsdGA0LDQttC10L3QuNC5INGH0LXRgNC10Lcg0YHQvtCx0YvRgtC40LUg0L3QsNCy0LXQtNC10L3QuNGPLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwnLFxuICAgIGltcG9ydHM6IFtUdWlSZXBlYXRUaW1lcywgVHVpQnV0dG9uLCBUdWlIb3ZlcmVkXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1ob3Zlci1pbWFnZS1jYXJvdXNlbC5jb21wb25lbnQuc2NzcycsXG4gICAgaG9zdDoge1xuICAgICAgICAnKG1vdXNlbW92ZS5zaWxlbnQpJzogJ29uSG92ZXIoJGV2ZW50Lm9mZnNldFgsICRldmVudC50YXJnZXQpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlLnNpbGVudCknOiAnb25MZWF2ZSgpJyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0hvdmVySW1hZ2VDYXJvdXNlbENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JzQsNGB0YHQuNCyINC40LfQvtCx0YDQsNC20LXQvdC40LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGltYWdlczogSW5wdXRTaWduYWw8U2NJSW1hZ2VbXT4gPSBpbnB1dC5yZXF1aXJlZDxTY0lJbWFnZVtdPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINGN0LvQtdC80LXQvdGC0Ysg0YPQv9GA0LDQstC70LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzU2hvd0FjdGlvbnM6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgV3JpdGFibGVTaWduYWx9INC00LvRjyDQvtGC0YHQu9C10LbQuNCy0LDQvdC40Y8g0YLQtdC60YPRidC10LPQviDQuNC90LTQtdC60YHQsCDQuNC30L7QsdGA0LDQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjdXJyZW50SW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgV3JpdGFibGVTaWduYWx9INC00LvRjyDQvtGC0YHQu9C10LbQuNCy0LDQvdC40Y8g0YLQtdC60YPRidC10LPQviDQuNC90LTQtdC60YHQsCDQuNC30L7QsdGA0LDQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjdXJyZW50SW1hZ2U6IFNpZ25hbDxTY0lJbWFnZT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmltYWdlcygpW3RoaXMuY3VycmVudEluZGV4KCldKTtcblxuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwcm9kdWN0TmFtZTogSW5wdXRTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPIGBtb3VzZW1vdmUuc2lsZW50YC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXRYINCe0YLRgdGC0YPQvyDQutGD0YDRgdC+0YDQsCDQvNGL0YjQuCDQv9C+INC+0YHQuCBYINC+0YIg0LrRgNCw0Y8ge0BsaW5rIEhUTUxFbGVtZW50fS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0INCe0LHRitC10LrRgiB7QGxpbmsgSFRNTEVsZW1lbnR9INCyINC60L7RgtC+0YDQvtC8INC70LXQttCw0YIg0LjQt9C+0LHRgNCw0LbQtdC90LjRj1xuICAgICAqL1xuICAgIHByaXZhdGUgb25Ib3ZlcihvZmZzZXRYOiBudW1iZXIsIHRhcmdldDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VzKCkubGVuZ3RoIDw9IDEgfHwgb2Zmc2V0WCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHRhcmdldC5vZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3QgaG92ZXJQZXJjZW50YWdlID0gTWF0aC5taW4ob2Zmc2V0WCAvIGVsZW1lbnRXaWR0aCwgMSk7XG5cbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBNYXRoLm1pbihNYXRoLmZsb29yKGhvdmVyUGVyY2VudGFnZSAqIHRoaXMuaW1hZ2VzKCkubGVuZ3RoKSwgdGhpcy5pbWFnZXMoKS5sZW5ndGggLSAxKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQobmV3SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPIGBtb3VzZWxlYXZlLnNpbGVudGAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbkxlYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbWFnZXMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCgwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyDQvdCw0LLQtdC00LXQvdC40Y8g0YPQutCw0LfQsNGC0LXQu9GPINC80YvRiNC4INC90LAg0YLQvtGH0LrRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBob3ZlcmVkINCf0YDQuNC30L3QsNC6INGH0YLQviDRg9C60LDQt9Cw0YLQtdC70Ywg0LzRi9GI0Lgg0L3QsNCy0LXQtNC10L0g0L3QsCDRgtC+0YfQutGDLlxuICAgICAqIEBwYXJhbSBpbmRleCDQmNC90LTQtdC60YEg0LjQt9C+0LHRgNCw0LbQtdC90LjRjywg0LrQvtGC0L7RgNGL0Lkg0YHQvtC+0YLQstC10YLRgdGC0LLRg9C10YIg0YLQvtGH0LrQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25Eb3RIb3ZlcmVkKGhvdmVyZWQ6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGhvdmVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bFwiXG4gICAgW2NsYXNzLm1iLTJdPVwiaW1hZ2VzKCkubGVuZ3RoIDw9IDEgJiYgaXNTaG93QWN0aW9ucygpXCJcbiAgICBbc3R5bGUuYXNwZWN0LXJhdGlvXT1cIicyMC8xOSdcIlxuPlxuICAgIEBsZXQgaW1hZ2UgPSBjdXJyZW50SW1hZ2UoKTtcbiAgICA8cGljdHVyZT5cbiAgICAgICAgQGlmIChpbWFnZS5pbWFnZVdlYnApIHtcbiAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICB0eXBlPVwiaW1hZ2Uvd2VicFwiXG4gICAgICAgICAgICAgICAgW3NyY3NldF09XCJpbWFnZS5pbWFnZVdlYnBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoaW1hZ2UuaW1hZ2UpIHtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlLmltYWdlXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImltYWdlLmFsdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgcm91bmRlZC14bCBvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9waWN0dXJlPlxuPC9kaXY+XG5AaWYgKGltYWdlcygpLmxlbmd0aCA+IDEgJiYgaXNTaG93QWN0aW9ucygpKSB7XG4gICAgPGRpdlxuICAgICAgICAobW91c2Vtb3ZlLnNpbGVudCk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXJcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGluZGV4SXRlbSBvZiBpbWFnZXMoKS5sZW5ndGhcIlxuICAgICAgICAgICAgI2VsZW1lbnRcbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b25fc21hbGxcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiaW5kZXhJdGVtID09PSBjdXJyZW50SW5kZXgoKSA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICh0dWlIb3ZlcmVkQ2hhbmdlKT1cIm9uRG90SG92ZXJlZCgkZXZlbnQsIGluZGV4SXRlbSlcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG59XG4iXX0=
|
@@ -1,5 +1,6 @@
|
|
1
1
|
export * from './download-price-list/sc-download-price-list.component';
|
2
2
|
export * from './category-card/sc-category-card.component';
|
3
|
+
export * from './hover-image-carousel/sc-hover-image-carousel.component';
|
3
4
|
export * from './input-quantity/sc-input-quantity.component';
|
4
5
|
export * from './notify-when-in-stock-dialog';
|
5
6
|
export * from './price-card/sc-price-card.component';
|
@@ -9,4 +10,4 @@ export * from './price-list-pagination/sc-price-list-pagination.component';
|
|
9
10
|
export * from './price-warehouse-stock/sc-price-warehouse-stock.component';
|
10
11
|
export * from './sc-favorite-button/sc-favorite-button.component';
|
11
12
|
export * from './sc-catalog.module';
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZG93bmxvYWQtcHJpY2UtbGlzdC9zYy1kb3dubG9hZC1wcmljZS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhdGVnb3J5LWNhcmQvc2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ob3Zlci1pbWFnZS1jYXJvdXNlbC9zYy1ob3Zlci1pbWFnZS1jYXJvdXNlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1xdWFudGl0eS9zYy1pbnB1dC1xdWFudGl0eS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS1jYXJkL3NjLXByaWNlLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2UtY2FyZC1pbmxpbmUvc2MtcHJpY2UtY2FyZC1pbmxpbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2UtaGlzdG9yeS9zYy1wcmljZS1oaXN0b3J5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ByaWNlLWxpc3QtcGFnaW5hdGlvbi9zYy1wcmljZS1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2Utd2FyZWhvdXNlLXN0b2NrL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1mYXZvcml0ZS1idXR0b24vc2MtZmF2b3JpdGUtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWNhdGFsb2cubW9kdWxlJztcbiJdfQ==
|