@snabcentr/client-ui 3.48.0 → 3.49.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/auth/sc-auth.module.d.ts +8 -8
- package/banner/sc-banner.module.d.ts +2 -3
- package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +1 -1
- package/catalog/sc-catalog.module.d.ts +1 -1
- package/configurators/sandwich/sc-sandwich.component.d.ts +2 -2
- package/contacts/sc-contacts.module.d.ts +12 -13
- package/contacts/tokens/sc-manager-qr-handler.token.d.ts +1 -1
- package/contragents/sc-contragents.module.d.ts +8 -9
- package/delivery-address/sc-delivery-address.module.d.ts +11 -12
- package/error-handler/consts/error-change-handler.providers.d.ts +2 -1
- package/esm2022/auth/sc-auth.module.mjs +2 -4
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +5 -6
- package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +2 -1
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +10 -10
- package/esm2022/banner/sc-banner.component.mjs +4 -5
- package/esm2022/banner/sc-banner.module.mjs +3 -4
- package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +2 -2
- package/esm2022/cart/cart-item/sc-cart-item.component.mjs +3 -3
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +7 -7
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +3 -4
- package/esm2022/catalog/sc-catalog.module.mjs +2 -4
- package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +15 -15
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +6 -7
- package/esm2022/contacts/sc-contacts.module.mjs +1 -4
- package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +17 -16
- package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +6 -4
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +4 -5
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +4 -5
- package/esm2022/contragents/sc-contragents.module.mjs +1 -4
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +2 -4
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +6 -7
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +1 -4
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +2 -2
- package/esm2022/error-handler/consts/error-change-handler.providers.mjs +5 -3
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +2 -2
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +6 -7
- package/esm2022/form-fields/form-fields.module.mjs +1 -4
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +6 -7
- package/esm2022/news/news-card/sc-news-card.component.mjs +1 -1
- package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +5 -3
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +10 -11
- package/esm2022/profile/sc-profile.module.mjs +1 -4
- package/esm2022/providers/sc-allow-select-terminated.mjs +5 -3
- package/esm2022/providers/sc-banner-duration.mjs +5 -3
- package/esm2022/providers/sc-country-ids.mjs +5 -3
- package/esm2022/providers/sc-date-formatter.mjs +10 -7
- package/esm2022/providers/sc-help-notification-close.mjs +5 -3
- package/esm2022/providers/sc-help-notification-limit.mjs +5 -3
- package/esm2022/providers/sc-max-files-in-form-input.mjs +5 -3
- package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +5 -3
- package/esm2022/providers/sc-page-size-options.mjs +5 -3
- package/esm2022/providers/sc-user-providers.mjs +17 -12
- package/esm2022/providers/sc-verification-code-timeout.mjs +5 -3
- package/esm2022/public-api.mjs +1 -5
- package/esm2022/samples/sc-sample.module.mjs +2 -4
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +4 -5
- package/esm2022/user/sc-user.module.mjs +1 -4
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +11 -12
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +7 -8
- package/esm2022/verification/sc-verification.module.mjs +2 -4
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +6 -6
- package/fesm2022/snabcentr-client-ui.mjs +139 -317
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/form-fields/form-fields.module.d.ts +4 -5
- package/news/news-card/sc-news-card.component.d.ts +2 -2
- package/package.json +6 -7
- package/profile/sc-profile.module.d.ts +8 -9
- package/public-api.d.ts +0 -1
- package/samples/sc-sample.module.d.ts +1 -1
- package/styles/tailwind/tailwind.scss +1 -1
- package/user/sc-user.module.d.ts +7 -8
- package/verification/sc-verification.module.d.ts +7 -7
- package/esm2022/schemas/breadcrumb-list.interface.mjs +0 -2
- package/esm2022/schemas/index.mjs +0 -3
- package/esm2022/schemas/sc-json-ld-category/sc-json-ld-category.component.mjs +0 -192
- package/schemas/breadcrumb-list.interface.d.ts +0 -38
- package/schemas/index.d.ts +0 -2
- package/schemas/sc-json-ld-category/sc-json-ld-category.component.d.ts +0 -63
|
@@ -5,15 +5,14 @@ import * as i3 from "@angular/common";
|
|
|
5
5
|
import * as i4 from "@angular/forms";
|
|
6
6
|
import * as i5 from "@taiga-ui/legacy";
|
|
7
7
|
import * as i6 from "@taiga-ui/core";
|
|
8
|
-
import * as i7 from "@taiga-ui/
|
|
9
|
-
import * as i8 from "@taiga-ui/
|
|
10
|
-
import * as i9 from "@
|
|
11
|
-
import * as i10 from "@maskito/angular";
|
|
8
|
+
import * as i7 from "@taiga-ui/kit";
|
|
9
|
+
import * as i8 from "@taiga-ui/core/components/data-list";
|
|
10
|
+
import * as i9 from "@maskito/angular";
|
|
12
11
|
/**
|
|
13
12
|
* Модуль полей ввода.
|
|
14
13
|
*/
|
|
15
14
|
export declare class ScFormFieldsModule {
|
|
16
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScFormFieldsModule, never>;
|
|
17
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScFormFieldsModule, [typeof i1.ScAddressesSelectionFieldComponent, typeof i2.ScSuggestionFieldComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.TuiInputModule, typeof i5.TuiTextfieldControllerModule, typeof i6.TuiLabel, typeof i7.
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScFormFieldsModule, [typeof i1.ScAddressesSelectionFieldComponent, typeof i2.ScSuggestionFieldComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.TuiInputModule, typeof i5.TuiTextfieldControllerModule, typeof i6.TuiLabel, typeof i7.TuiFieldErrorPipe, typeof i6.TuiError, typeof i6.TuiDataListComponent, typeof i6.TuiDataListDirective, typeof i6.TuiOption, typeof i6.TuiOptionNew, typeof i6.TuiOptionWithValue, typeof i6.TuiOptGroup, typeof i6.TuiLoader, typeof i5.TuiComboBoxModule, typeof i7.TuiDataListWrapperComponent, typeof i7.TuiDataListGroupWrapperComponent, typeof i8.TuiDataListDirective, typeof i7.TuiFilterByInputPipe, typeof i7.TuiStringifyContentPipe, typeof i5.TuiInputPhoneModule, typeof i6.TuiButton, typeof i9.MaskitoDirective], [typeof i1.ScAddressesSelectionFieldComponent, typeof i2.ScSuggestionFieldComponent]>;
|
|
18
17
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScFormFieldsModule>;
|
|
19
18
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InputSignal } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { ScINewsTile } from '@snabcentr/client-core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Компонент карточки новости.
|
|
@@ -8,7 +8,7 @@ export declare class ScNewsCardComponent {
|
|
|
8
8
|
/**
|
|
9
9
|
* Данные о новости.
|
|
10
10
|
*/
|
|
11
|
-
news: InputSignal<
|
|
11
|
+
news: InputSignal<ScINewsTile>;
|
|
12
12
|
/**
|
|
13
13
|
* Ссылка на страницу новости. Используется именно `href`, так как остановить событие клика для `routerLink` не вышло.
|
|
14
14
|
*/
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snabcentr/client-ui",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.49.0",
|
|
4
4
|
"author": "Snabcentr Ltd.",
|
|
5
5
|
"repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-ui-lib",
|
|
6
6
|
"license": "Commercial",
|
|
7
7
|
"description": "Snabcentr client UI package.",
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"@angular/common": "^18.2.
|
|
10
|
-
"@angular/compiler": "^18.2.
|
|
11
|
-
"@angular/core": "^18.2.
|
|
12
|
-
"@angular/forms": "^18.2.
|
|
13
|
-
"@angular/router": "^18.2.
|
|
9
|
+
"@angular/common": "^18.2.14",
|
|
10
|
+
"@angular/compiler": "^18.2.14",
|
|
11
|
+
"@angular/core": "^18.2.14",
|
|
12
|
+
"@angular/forms": "^18.2.14",
|
|
13
|
+
"@angular/router": "^18.2.14",
|
|
14
14
|
"@maskito/angular": "^3.11.1",
|
|
15
15
|
"@maskito/core": "^3.11.1",
|
|
16
16
|
"@ng-web-apis/intersection-observer": "^4.14.0",
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"angularx-qrcode": "^18.0.2",
|
|
36
36
|
"lodash-es": "^4.17.21",
|
|
37
37
|
"rxjs": "^7.8.1",
|
|
38
|
-
"schema-dts": "^1.1.2",
|
|
39
38
|
"zone.js": "~0.14.10"
|
|
40
39
|
},
|
|
41
40
|
"dependencies": {
|
|
@@ -6,19 +6,18 @@ import * as i4 from "../accordion/sc-accordion.module";
|
|
|
6
6
|
import * as i5 from "../contragents/sc-contragents.module";
|
|
7
7
|
import * as i6 from "../delivery-address/sc-delivery-address.module";
|
|
8
8
|
import * as i7 from "@taiga-ui/core";
|
|
9
|
-
import * as i8 from "@
|
|
10
|
-
import * as i9 from "
|
|
11
|
-
import * as i10 from "../
|
|
12
|
-
import * as i11 from "../directives/
|
|
13
|
-
import * as i12 from "../directives/links/sc-
|
|
14
|
-
import * as i13 from "../
|
|
15
|
-
import * as i14 from "
|
|
16
|
-
import * as i15 from "@taiga-ui/kit";
|
|
9
|
+
import * as i8 from "@angular/forms";
|
|
10
|
+
import * as i9 from "../contacts/sc-contacts.module";
|
|
11
|
+
import * as i10 from "../directives/terminal-link/sc-terminal-link.directive";
|
|
12
|
+
import * as i11 from "../directives/links/sc-tel-link.directive";
|
|
13
|
+
import * as i12 from "../directives/links/sc-email-link.directive";
|
|
14
|
+
import * as i13 from "../pipes/sc-phone-format";
|
|
15
|
+
import * as i14 from "@taiga-ui/kit";
|
|
17
16
|
/**
|
|
18
17
|
* Модуль профиля пользователя.
|
|
19
18
|
*/
|
|
20
19
|
export declare class ScProfileModule {
|
|
21
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScProfileModule, never>;
|
|
22
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScProfileModule, [typeof i1.ScProfileAccordionsContentComponent], [typeof i2.CommonModule, typeof i3.ScUserModule, typeof i4.ScAccordionModule, typeof i5.ScContragentsModule, typeof i6.ScDeliveryAddressModule, typeof i7.TuiLoader, typeof
|
|
21
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScProfileModule, [typeof i1.ScProfileAccordionsContentComponent], [typeof i2.CommonModule, typeof i3.ScUserModule, typeof i4.ScAccordionModule, typeof i5.ScContragentsModule, typeof i6.ScDeliveryAddressModule, typeof i7.TuiLoader, typeof i7.TuiLink, typeof i7.TuiLabel, typeof i7.TuiIcon, typeof i8.FormsModule, typeof i8.ReactiveFormsModule, typeof i7.TuiButton, typeof i9.ScContactsModule, typeof i10.ScTerminalLinkDirective, typeof i11.ScTelLinkDirective, typeof i12.ScEmailLinkDirective, typeof i13.ScPhoneFormatPipe, typeof i14.TuiCheckbox], [typeof i1.ScProfileAccordionsContentComponent]>;
|
|
23
22
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScProfileModule>;
|
|
24
23
|
}
|
package/public-api.d.ts
CHANGED
|
@@ -14,6 +14,6 @@ import * as i10 from "ng-recaptcha-2";
|
|
|
14
14
|
*/
|
|
15
15
|
export declare class ScPreviewSampleModule {
|
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScPreviewSampleModule, never>;
|
|
17
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.TuiError, typeof i5.TuiFieldErrorPipe, typeof i6.ScFormFieldsModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i8.TuiItem, typeof i5.TuiCarouselComponent, typeof i5.TuiCarouselDirective, typeof i5.TuiCarouselAutoscroll, typeof i5.TuiCarouselButtons, typeof i5.TuiCarouselScroll, typeof i5.TuiAvatar, typeof i9.TuiHovered, typeof
|
|
17
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.TuiError, typeof i5.TuiFieldErrorPipe, typeof i6.ScFormFieldsModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i8.TuiItem, typeof i5.TuiCarouselComponent, typeof i5.TuiCarouselDirective, typeof i5.TuiCarouselAutoscroll, typeof i5.TuiCarouselButtons, typeof i5.TuiCarouselScroll, typeof i5.TuiAvatar, typeof i9.TuiHovered, typeof i4.TuiButton, typeof i5.TuiButtonLoading, typeof i4.TuiLabel, typeof i10.RecaptchaFormsModule, typeof i10.RecaptchaModule], [typeof i1.ScPreviewSampleComponent]>;
|
|
18
18
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScPreviewSampleModule>;
|
|
19
19
|
}
|
package/user/sc-user.module.d.ts
CHANGED
|
@@ -8,18 +8,17 @@ import * as i6 from "@angular/forms";
|
|
|
8
8
|
import * as i7 from "@taiga-ui/kit";
|
|
9
9
|
import * as i8 from "@taiga-ui/legacy";
|
|
10
10
|
import * as i9 from "@taiga-ui/core";
|
|
11
|
-
import * as i10 from "
|
|
12
|
-
import * as i11 from "../
|
|
13
|
-
import * as i12 from "../
|
|
14
|
-
import * as i13 from "../directives/
|
|
15
|
-
import * as i14 from "../directives/links/sc-
|
|
16
|
-
import * as i15 from "../
|
|
17
|
-
import * as i16 from "../pipes/sc-phone-format";
|
|
11
|
+
import * as i10 from "../verification/sc-verification.module";
|
|
12
|
+
import * as i11 from "../form-fields/form-fields.module";
|
|
13
|
+
import * as i12 from "../directives/terminal-link/sc-terminal-link.directive";
|
|
14
|
+
import * as i13 from "../directives/links/sc-tel-link.directive";
|
|
15
|
+
import * as i14 from "../directives/links/sc-email-link.directive";
|
|
16
|
+
import * as i15 from "../pipes/sc-phone-format";
|
|
18
17
|
/**
|
|
19
18
|
* Модуль компонентов пользователя.
|
|
20
19
|
*/
|
|
21
20
|
export declare class ScUserModule {
|
|
22
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScUserModule, never>;
|
|
23
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScUserModule, [typeof i1.ScResetUserPasswordComponent, typeof i2.ScUpdateUserInfoDialogComponent, typeof i3.ScUserPhoneApproveDialogComponent, typeof i4.ScUserManagersComponent], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i6.ReactiveFormsModule, typeof i7.TuiFieldErrorPipe, typeof i8.TuiInputPasswordModule, typeof i9.TuiButton, typeof i9.TuiError, typeof i9.TuiLabel, typeof i8.TuiTextfieldControllerModule, typeof i10.
|
|
22
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScUserModule, [typeof i1.ScResetUserPasswordComponent, typeof i2.ScUpdateUserInfoDialogComponent, typeof i3.ScUserPhoneApproveDialogComponent, typeof i4.ScUserManagersComponent], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i6.ReactiveFormsModule, typeof i7.TuiFieldErrorPipe, typeof i8.TuiInputPasswordModule, typeof i9.TuiButton, typeof i9.TuiError, typeof i9.TuiLabel, typeof i8.TuiTextfieldControllerModule, typeof i10.ScVerificationModule, typeof i11.ScFormFieldsModule, typeof i9.TuiLoader, typeof i8.TuiInputModule, typeof i8.TuiInputPhoneModule, typeof i7.TuiCheckbox, typeof i9.TuiDataListComponent, typeof i9.TuiDataListDirective, typeof i9.TuiOption, typeof i9.TuiOptionNew, typeof i9.TuiOptionWithValue, typeof i9.TuiOptGroup, typeof i8.TuiSelectModule, typeof i9.TuiLink, typeof i12.ScTerminalLinkDirective, typeof i13.ScTelLinkDirective, typeof i14.ScEmailLinkDirective, typeof i15.ScPhoneFormatPipe, typeof i7.TuiButtonLoading], [typeof i1.ScResetUserPasswordComponent, typeof i2.ScUpdateUserInfoDialogComponent, typeof i3.ScUserPhoneApproveDialogComponent, typeof i4.ScUserManagersComponent]>;
|
|
24
23
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScUserModule>;
|
|
25
24
|
}
|
|
@@ -5,17 +5,17 @@ import * as i3 from "@angular/forms";
|
|
|
5
5
|
import * as i4 from "@taiga-ui/legacy";
|
|
6
6
|
import * as i5 from "@taiga-ui/core";
|
|
7
7
|
import * as i6 from "@taiga-ui/kit";
|
|
8
|
-
import * as i7 from "@
|
|
9
|
-
import * as i8 from "
|
|
10
|
-
import * as i9 from "
|
|
11
|
-
import * as i10 from "@taiga-ui/
|
|
12
|
-
import * as i11 from "@taiga-ui/
|
|
13
|
-
import * as i12 from "@taiga-ui/
|
|
8
|
+
import * as i7 from "@maskito/angular";
|
|
9
|
+
import * as i8 from "../contacts/manager-card/sc-manager-card.component";
|
|
10
|
+
import * as i9 from "@taiga-ui/experimental";
|
|
11
|
+
import * as i10 from "@taiga-ui/cdk/directives/item";
|
|
12
|
+
import * as i11 from "@taiga-ui/core/components/label";
|
|
13
|
+
import * as i12 from "@taiga-ui/cdk";
|
|
14
14
|
/**
|
|
15
15
|
* Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).
|
|
16
16
|
*/
|
|
17
17
|
export declare class ScVerificationModule {
|
|
18
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScVerificationModule, never>;
|
|
19
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScVerificationModule, [typeof i1.ScVerificationPhoneCheckFormComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i3.ReactiveFormsModule, typeof i4.TuiInputPasswordModule, typeof i4.TuiInputModule, typeof i4.TuiTextfieldControllerModule, typeof i5.TuiLink, typeof i5.TuiButton, typeof i5.TuiLabel, typeof i6.TuiFieldErrorPipe, typeof i5.TuiError, typeof
|
|
19
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScVerificationModule, [typeof i1.ScVerificationPhoneCheckFormComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i3.ReactiveFormsModule, typeof i4.TuiInputPasswordModule, typeof i4.TuiInputModule, typeof i4.TuiTextfieldControllerModule, typeof i5.TuiLink, typeof i5.TuiButton, typeof i5.TuiLabel, typeof i6.TuiFieldErrorPipe, typeof i5.TuiError, typeof i5.TuiLoader, typeof i4.TuiInputPhoneModule, typeof i7.MaskitoDirective, typeof i6.TuiButtonLoading, typeof i8.ScManagerCardComponent, typeof i5.TuiTitle, typeof i5.TuiIcon, typeof i6.TuiPushComponent, typeof i6.TuiPushAlert, typeof i6.TuiPushDirective, typeof i9.TuiInputPhoneInternational, typeof i10.TuiItem, typeof i11.TuiLabel, typeof i5.TuiSelect, typeof i5.TuiTextfieldComponent, typeof i5.TuiTextfieldDirective, typeof i5.TuiTextfieldOptionsDirective, typeof i5.TuiTextfieldDropdownDirective, typeof i5.TuiTextfieldMultiComponent, typeof i6.TuiSortCountriesPipe, typeof i12.TuiAutoFocus], [typeof i1.ScVerificationPhoneCheckFormComponent]>;
|
|
20
20
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScVerificationModule>;
|
|
21
21
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1saXN0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zY2hlbWFzL2JyZWFkY3J1bWItbGlzdC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JjQvdGC0LXRgNGE0LXQudGBINC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3Ri9GFINC00LDQvdC90YvRhSDRhdC70LXQsdC90YvRhSDQutGA0L7RiNC10Log0YHQvtCz0LvQsNGB0L3QviBTY2hlbWEub3JnLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0XG4gKlxuICog0JvQvtC60LDQu9GM0L3Ri9C5INC40L3RgtC10YDRhNC10LnRgSDQtNC70Y8gQnJlYWRjcnVtYkxpc3QsINGH0YLQvtCx0Ysg0LjQt9Cx0LXQttCw0YLRjCDQvtGI0LjQsdC60LggVFM0MDI5INGBINGN0LrRgdC/0L7RgNGC0L7QvCDRgtC40L/QvtCyLlxuICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPIEpTT04tTEQg0YDQsNC30LzQtdGC0LrQuCDQvdCw0LLQuNCz0LDRhtC40L7QvdC90YvRhSDRhdC70LXQsdC90YvRhSDQutGA0L7RiNC10LpcbiAqINC90LAg0YHRgtGA0LDQvdC40YbQsNGFINC60LDRgtCw0LvQvtCz0LAg0YLQvtCy0LDRgNC+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJlYWRjcnVtYkxpc3Qge1xuICAgIC8qKlxuICAgICAqINCi0LjQvyDRgdGF0LXQvNGLIFNjaGVtYS5vcmcg0LTQu9GPINGF0LvQtdCx0L3Ri9GFINC60YDQvtGI0LXQui5cbiAgICAgKi9cbiAgICAnQHR5cGUnOiAnQnJlYWRjcnVtYkxpc3QnO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQvdCw0LLQuNCz0LDRhtC40LggKNGF0LvQtdCx0L3Ri9GFINC60YDQvtGI0LXQuikuXG4gICAgICog0JrQsNC20LTRi9C5INGN0LvQtdC80LXQvdGCINC/0YDQtdC00YHRgtCw0LLQu9GP0LXRgiDQvtC00LjQvSDRg9GA0L7QstC10L3RjCDQvdCw0LLQuNCz0LDRhtC40LguXG4gICAgICovXG4gICAgaXRlbUxpc3RFbGVtZW50OiBBcnJheTx7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQotC40L8g0Y3Qu9C10LzQtdC90YLQsCDRgdC/0LjRgdC60LAg0YHQvtCz0LvQsNGB0L3QviBTY2hlbWEub3JnLlxuICAgICAgICAgKi9cbiAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J/QvtC30LjRhtC40Y8g0Y3Qu9C10LzQtdC90YLQsCDQsiDRgdC/0LjRgdC60LUg0L3QsNCy0LjQs9Cw0YbQuNC4ICjQvdCw0YfQuNC90LDRjyDRgSAxKS5cbiAgICAgICAgICovXG4gICAgICAgIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCe0YLQvtCx0YDQsNC20LDQtdC80L7QtSDQvdCw0LfQstCw0L3QuNC1INGN0LvQtdC80LXQvdGC0LAg0L3QsNCy0LjQs9Cw0YbQuNC4LlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVUkwt0LDQtNGA0LXRgSDRgdGC0YDQsNC90LjRhtGLICjQvtC/0YbQuNC+0L3QsNC70YzQvdC+KS5cbiAgICAgICAgICog0JXRgdC70Lgg0L3QtSDRg9C60LDQt9Cw0L0sINGN0LvQtdC80LXQvdGCINGB0YfQuNGC0LDQtdGC0YHRjyDQvdC10LDQutGC0LjQstC90YvQvC5cbiAgICAgICAgICovXG4gICAgICAgIGl0ZW0/OiBzdHJpbmc7XG4gICAgfT47XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './breadcrumb-list.interface';
|
|
2
|
-
export * from './sc-json-ld-category/sc-json-ld-category.component';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvc2NoZW1hcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscURBQXFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWItbGlzdC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1qc29uLWxkLWNhdGVnb3J5L3NjLWpzb24tbGQtY2F0ZWdvcnkuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
|
|
2
|
-
import { SC_COMPANY_INFO, SC_URLS, ScIdOrSlugPipe, ScJsonLdModule, ScMediaImageTransformerPipe, } from '@snabcentr/client-core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@snabcentr/client-core";
|
|
5
|
-
/**
|
|
6
|
-
* Компонент для отображения структурированных данных @see [Schema.org](https://schema.org) для страниц каталога.
|
|
7
|
-
*/
|
|
8
|
-
export class ScJsonLdCategoryComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
/**
|
|
11
|
-
* Категория товаров (обычная или виртуальная).
|
|
12
|
-
*/
|
|
13
|
-
this.category = input.required();
|
|
14
|
-
/**
|
|
15
|
-
* Список товаров.
|
|
16
|
-
*/
|
|
17
|
-
this.products = input();
|
|
18
|
-
/**
|
|
19
|
-
* Хлебные крошки.
|
|
20
|
-
*/
|
|
21
|
-
this.breadcrumbs = input();
|
|
22
|
-
/**
|
|
23
|
-
* Пайп для формирования полного URI изображения на media сервере.
|
|
24
|
-
*/
|
|
25
|
-
this.mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
|
|
26
|
-
/**
|
|
27
|
-
* Пайп для преобразования идентификатора или slug в идентификатор.
|
|
28
|
-
*/
|
|
29
|
-
this.idOrSlugPipe = inject(ScIdOrSlugPipe);
|
|
30
|
-
/**
|
|
31
|
-
* Данные о компании.
|
|
32
|
-
*/
|
|
33
|
-
this.companyInfo = inject(SC_COMPANY_INFO);
|
|
34
|
-
/**
|
|
35
|
-
* Список ссылок приложения.
|
|
36
|
-
*/
|
|
37
|
-
this.urls = inject(SC_URLS);
|
|
38
|
-
/**
|
|
39
|
-
* Схема структурированных данных для CollectionPage.
|
|
40
|
-
*/
|
|
41
|
-
this.schema = computed(() => {
|
|
42
|
-
const category = this.category();
|
|
43
|
-
const products = this.products();
|
|
44
|
-
const breadcrumb = this.breadcrumbs();
|
|
45
|
-
return {
|
|
46
|
-
'@context': 'https://schema.org',
|
|
47
|
-
'@type': 'CollectionPage',
|
|
48
|
-
name: category.seo?.title ?? category.name,
|
|
49
|
-
description: category.seo?.description ?? category.properties?.description,
|
|
50
|
-
url: this.getCategoryUrl(category),
|
|
51
|
-
image: this.mediaImageTransformerPipe.transform(category.image, true),
|
|
52
|
-
// SEO данные.
|
|
53
|
-
...(category.seo?.keywords && { keywords: category.seo.keywords }),
|
|
54
|
-
// Основной контент страницы - список товаров и подкатегорий.
|
|
55
|
-
mainEntity: this.createMainEntity(category, products),
|
|
56
|
-
// Навигационные хлебные крошки
|
|
57
|
-
breadcrumb,
|
|
58
|
-
// Дополнительные метаданные для SEO
|
|
59
|
-
about: {
|
|
60
|
-
'@type': 'CategoryCode',
|
|
61
|
-
codeValue: category.slug,
|
|
62
|
-
name: category.name,
|
|
63
|
-
description: category.seo?.description ?? category.properties?.description,
|
|
64
|
-
},
|
|
65
|
-
// Информация о сайте
|
|
66
|
-
isPartOf: {
|
|
67
|
-
'@type': 'WebSite',
|
|
68
|
-
name: this.companyInfo.name,
|
|
69
|
-
url: this.urls.siteUrl,
|
|
70
|
-
},
|
|
71
|
-
// Связанные страницы
|
|
72
|
-
relatedLink: [
|
|
73
|
-
`${this.urls.siteUrl}/catalog`,
|
|
74
|
-
...(this.isVirtualCategory(category) || !category.parentCategory
|
|
75
|
-
? []
|
|
76
|
-
: [`${this.urls.siteUrl}/catalog/category${this.idOrSlugPipe.transform(category.parentCategory)}`]),
|
|
77
|
-
],
|
|
78
|
-
// Дополнительные изображения категории
|
|
79
|
-
additionalProperty: [
|
|
80
|
-
{
|
|
81
|
-
'@type': 'PropertyValue',
|
|
82
|
-
name: 'Количество товаров',
|
|
83
|
-
value: (products?.length ?? 0).toString(),
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
'@type': 'PropertyValue',
|
|
87
|
-
name: 'Slug категории',
|
|
88
|
-
value: category.slug,
|
|
89
|
-
},
|
|
90
|
-
// Добавляем SEO данные если есть
|
|
91
|
-
...(category.seo?.keywords
|
|
92
|
-
? [
|
|
93
|
-
{
|
|
94
|
-
'@type': 'PropertyValue',
|
|
95
|
-
name: 'SEO Keywords',
|
|
96
|
-
value: category.seo.keywords,
|
|
97
|
-
},
|
|
98
|
-
]
|
|
99
|
-
: []),
|
|
100
|
-
...(category.seo?.title
|
|
101
|
-
? [
|
|
102
|
-
{
|
|
103
|
-
'@type': 'PropertyValue',
|
|
104
|
-
name: 'SEO Title',
|
|
105
|
-
value: category.seo.title,
|
|
106
|
-
},
|
|
107
|
-
]
|
|
108
|
-
: []),
|
|
109
|
-
],
|
|
110
|
-
};
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Проверяет, является ли категория виртуальной.
|
|
115
|
-
*
|
|
116
|
-
* @param category Категория для проверки.
|
|
117
|
-
*/
|
|
118
|
-
// eslint-disable-next-line class-methods-use-this
|
|
119
|
-
isVirtualCategory(category) {
|
|
120
|
-
return 'childCategories' in category && 'productCategories' in category;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Получает URL для категории.
|
|
124
|
-
*
|
|
125
|
-
* @param category Категория для получения URL.
|
|
126
|
-
*/
|
|
127
|
-
getCategoryUrl(category) {
|
|
128
|
-
if (this.isVirtualCategory(category)) {
|
|
129
|
-
return `${this.urls.siteUrl}/catalog/virtual/${category.slug}`;
|
|
130
|
-
}
|
|
131
|
-
return `${this.urls.siteUrl}/catalog/${this.idOrSlugPipe.transform(category)}`;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Создает mainEntity для схемы.
|
|
135
|
-
*
|
|
136
|
-
* @param category Категория.
|
|
137
|
-
* @param products Список товаров.
|
|
138
|
-
*/
|
|
139
|
-
createMainEntity(category, products) {
|
|
140
|
-
const childCategories = this.isVirtualCategory(category) ? [...(category.childCategories ?? []), ...(category.productCategories ?? [])] : (category.categories ?? []);
|
|
141
|
-
return {
|
|
142
|
-
'@type': 'ItemList',
|
|
143
|
-
numberOfItems: (products?.length ?? 0) + childCategories.length,
|
|
144
|
-
itemListOrder: 'https://schema.org/ItemListUnordered',
|
|
145
|
-
itemListElement: [
|
|
146
|
-
// Добавляем подкатегории в начало списка.
|
|
147
|
-
...childCategories.slice(0, 5).map((subCategory, index) => ({
|
|
148
|
-
'@type': 'ListItem',
|
|
149
|
-
position: index + 1,
|
|
150
|
-
name: subCategory.name,
|
|
151
|
-
url: this.getCategoryUrl(subCategory),
|
|
152
|
-
image: this.mediaImageTransformerPipe.transform(subCategory.image, true),
|
|
153
|
-
description: subCategory.seo?.description ?? subCategory.properties?.description,
|
|
154
|
-
})),
|
|
155
|
-
// Добавляем товары после подкатегорий.
|
|
156
|
-
...(products?.slice(0, 10).map((product, index) => ({
|
|
157
|
-
'@type': 'ListItem',
|
|
158
|
-
position: childCategories.length + index + 1,
|
|
159
|
-
item: {
|
|
160
|
-
'@type': 'Product',
|
|
161
|
-
name: product.name,
|
|
162
|
-
url: `${this.urls.siteUrl}/catalog/${this.idOrSlugPipe.transform(product)}`,
|
|
163
|
-
image: this.mediaImageTransformerPipe.transform(product.image, true),
|
|
164
|
-
description: product.seo?.description ?? product.properties?.description,
|
|
165
|
-
offers: [
|
|
166
|
-
{
|
|
167
|
-
'@type': 'Offer',
|
|
168
|
-
priceCurrency: 'RUB',
|
|
169
|
-
priceValidUntil: product.discount?.expiredAt ? product.discount.expiredAt.toString() : undefined,
|
|
170
|
-
price: product.costRub,
|
|
171
|
-
mpn: product.code,
|
|
172
|
-
availability: !product.onOrder && product.stockCount?.length ? 'InStock' : 'OutOfStock',
|
|
173
|
-
seller: {
|
|
174
|
-
'@type': 'Organization',
|
|
175
|
-
name: this.companyInfo.name,
|
|
176
|
-
},
|
|
177
|
-
url: `${this.urls.siteUrl}/catalog/product/${this.idOrSlugPipe.transform(product)}`,
|
|
178
|
-
},
|
|
179
|
-
],
|
|
180
|
-
},
|
|
181
|
-
})) ?? []),
|
|
182
|
-
],
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScJsonLdCategoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScJsonLdCategoryComponent, isStandalone: true, selector: "sc-json-ld-category", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: true, transformFunction: null }, products: { classPropertyName: "products", publicName: "products", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<!-- \u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0434\u043B\u044F CollectionPage -->\n<sc-json-ld [json]=\"schema()\" />\n", dependencies: [{ kind: "ngmodule", type: ScJsonLdModule }, { kind: "component", type: i1.ScJsonLdComponent, selector: "sc-json-ld", inputs: ["json"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
187
|
-
}
|
|
188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScJsonLdCategoryComponent, decorators: [{
|
|
189
|
-
type: Component,
|
|
190
|
-
args: [{ standalone: true, selector: 'sc-json-ld-category', imports: [ScJsonLdModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- \u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0434\u043B\u044F CollectionPage -->\n<sc-json-ld [json]=\"schema()\" />\n" }]
|
|
191
|
-
}] });
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtanNvbi1sZC1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvc2NoZW1hcy9zYy1qc29uLWxkLWNhdGVnb3J5L3NjLWpzb24tbGQtY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3NjaGVtYXMvc2MtanNvbi1sZC1jYXRlZ29yeS9zYy1qc29uLWxkLWNhdGVnb3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUNILGVBQWUsRUFDZixPQUFPLEVBR1AsY0FBYyxFQUVkLGNBQWMsRUFDZCwyQkFBMkIsR0FHOUIsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBS2hDOztHQUVHO0FBUUgsTUFBTSxPQUFPLHlCQUF5QjtJQVB0QztRQVFJOztXQUVHO1FBQ2EsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWtDLENBQUM7UUFFNUU7O1dBRUc7UUFDYSxhQUFRLEdBQUcsS0FBSyxFQUFlLENBQUM7UUFFaEQ7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLEtBQUssRUFBa0IsQ0FBQztRQUV0RDs7V0FFRztRQUNjLDhCQUF5QixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRWpGOztXQUVHO1FBQ2MsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDZ0IsZ0JBQVcsR0FBaUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXZGOztXQUVHO1FBQ2dCLFNBQUksR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQ7O1dBRUc7UUFDYSxXQUFNLEdBQXdDLFFBQVEs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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFNDX0NPTVBBTllfSU5GTyxcbiAgICBTQ19VUkxTLFxuICAgIFNjQ2F0ZWdvcnksXG4gICAgU2NJQ29tcGFueUJhc2VJbmZvLFxuICAgIFNjSWRPclNsdWdQaXBlLFxuICAgIFNjSVVybHMsXG4gICAgU2NKc29uTGRNb2R1bGUsXG4gICAgU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLFxuICAgIFNjUHJvZHVjdCxcbiAgICBTY1ZpcnR1YWxDYXRlZ29yeSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uUGFnZSwgV2l0aENvbnRleHQgfSBmcm9tICdzY2hlbWEtZHRzJztcblxuaW1wb3J0IHsgQnJlYWRjcnVtYkxpc3QgfSBmcm9tICcuLi9icmVhZGNydW1iLWxpc3QuaW50ZXJmYWNlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgtGA0YPQutGC0YPRgNC40YDQvtCy0LDQvdC90YvRhSDQtNCw0L3QvdGL0YUgQHNlZSBbU2NoZW1hLm9yZ10oaHR0cHM6Ly9zY2hlbWEub3JnKSDQtNC70Y8g0YHRgtGA0LDQvdC40YYg0LrQsNGC0LDQu9C+0LPQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLWpzb24tbGQtY2F0ZWdvcnknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1qc29uLWxkLWNhdGVnb3J5LmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbU2NKc29uTGRNb2R1bGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0pzb25MZENhdGVnb3J5Q29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQmtCw0YLQtdCz0L7RgNC40Y8g0YLQvtCy0LDRgNC+0LIgKNC+0LHRi9GH0L3QsNGPINC40LvQuCDQstC40YDRgtGD0LDQu9GM0L3QsNGPKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2F0ZWdvcnkgPSBpbnB1dC5yZXF1aXJlZDxTY0NhdGVnb3J5IHwgU2NWaXJ0dWFsQ2F0ZWdvcnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RzID0gaW5wdXQ8U2NQcm9kdWN0W10+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQpdC70LXQsdC90YvQtSDQutGA0L7RiNC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGJyZWFkY3J1bWJzID0gaW5wdXQ8QnJlYWRjcnVtYkxpc3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvyDQtNC70Y8g0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9C90L7Qs9C+IFVSSSDQuNC30L7QsdGA0LDQttC10L3QuNGPINC90LAgbWVkaWEg0YHQtdGA0LLQtdGA0LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlID0gaW5qZWN0KFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvyDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNCwINC40LvQuCBzbHVnINCyINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGALlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdQaXBlID0gaW5qZWN0KFNjSWRPclNsdWdQaXBlKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb21wYW55SW5mbzogUmVhZG9ubHk8U2NJQ29tcGFueUJhc2VJbmZvPiA9IGluamVjdChTQ19DT01QQU5ZX0lORk8pO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqINCh0YXQtdC80LAg0YHRgtGA0YPQutGC0YPRgNC40YDQvtCy0LDQvdC90YvRhSDQtNCw0L3QvdGL0YUg0LTQu9GPIENvbGxlY3Rpb25QYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzY2hlbWE6IFNpZ25hbDxXaXRoQ29udGV4dDxDb2xsZWN0aW9uUGFnZT4+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcnkoKTtcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzKCk7XG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmJyZWFkY3J1bWJzKCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLFxuICAgICAgICAgICAgJ0B0eXBlJzogJ0NvbGxlY3Rpb25QYWdlJyxcbiAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5LnNlbz8udGl0bGUgPz8gY2F0ZWdvcnkubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjYXRlZ29yeS5zZW8/LmRlc2NyaXB0aW9uID8/IGNhdGVnb3J5LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdXJsOiB0aGlzLmdldENhdGVnb3J5VXJsKGNhdGVnb3J5KSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLm1lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUudHJhbnNmb3JtKGNhdGVnb3J5LmltYWdlLCB0cnVlKSxcbiAgICAgICAgICAgIC8vIFNFTyDQtNCw0L3QvdGL0LUuXG4gICAgICAgICAgICAuLi4oY2F0ZWdvcnkuc2VvPy5rZXl3b3JkcyAmJiB7IGtleXdvcmRzOiBjYXRlZ29yeS5zZW8ua2V5d29yZHMgfSksXG4gICAgICAgICAgICAvLyDQntGB0L3QvtCy0L3QvtC5INC60L7QvdGC0LXQvdGCINGB0YLRgNCw0L3QuNGG0YsgLSDRgdC/0LjRgdC+0Log0YLQvtCy0LDRgNC+0LIg0Lgg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAgICAgICAgbWFpbkVudGl0eTogdGhpcy5jcmVhdGVNYWluRW50aXR5KGNhdGVnb3J5LCBwcm9kdWN0cyksXG4gICAgICAgICAgICAvLyDQndCw0LLQuNCz0LDRhtC40L7QvdC90YvQtSDRhdC70LXQsdC90YvQtSDQutGA0L7RiNC60LhcbiAgICAgICAgICAgIGJyZWFkY3J1bWIsXG4gICAgICAgICAgICAvLyDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C1INC80LXRgtCw0LTQsNC90L3Ri9C1INC00LvRjyBTRU9cbiAgICAgICAgICAgIGFib3V0OiB7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0NhdGVnb3J5Q29kZScsXG4gICAgICAgICAgICAgICAgY29kZVZhbHVlOiBjYXRlZ29yeS5zbHVnLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5Lm5hbWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNhdGVnb3J5LnNlbz8uZGVzY3JpcHRpb24gPz8gY2F0ZWdvcnkucHJvcGVydGllcz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YHQsNC50YLQtVxuICAgICAgICAgICAgaXNQYXJ0T2Y6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnV2ViU2l0ZScsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5jb21wYW55SW5mby5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogdGhpcy51cmxzLnNpdGVVcmwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g0KHQstGP0LfQsNC90L3Ri9C1INGB0YLRgNCw0L3QuNGG0YtcbiAgICAgICAgICAgIHJlbGF0ZWRMaW5rOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy51cmxzLnNpdGVVcmx9L2NhdGFsb2dgLFxuICAgICAgICAgICAgICAgIC4uLih0aGlzLmlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5KSB8fCAhY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgICAgICA6IFtgJHt0aGlzLnVybHMuc2l0ZVVybH0vY2F0YWxvZy9jYXRlZ29yeSR7dGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKGNhdGVnb3J5LnBhcmVudENhdGVnb3J5KX1gXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8g0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDQuNC30L7QsdGA0LDQttC10L3QuNGPINC60LDRgtC10LPQvtGA0LjQuFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnR5OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvcGVydHlWYWx1ZScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgtC+0LLQsNGA0L7QsicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAocHJvZHVjdHM/Lmxlbmd0aCA/PyAwKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvcGVydHlWYWx1ZScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTbHVnINC60LDRgtC10LPQvtGA0LjQuCcsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeS5zbHVnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8IFNFTyDQtNCw0L3QvdGL0LUg0LXRgdC70Lgg0LXRgdGC0YxcbiAgICAgICAgICAgICAgICAuLi4oY2F0ZWdvcnkuc2VvPy5rZXl3b3Jkc1xuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NFTyBLZXl3b3JkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnkuc2VvLmtleXdvcmRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKGNhdGVnb3J5LnNlbz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAdHlwZSc6ICdQcm9wZXJ0eVZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTRU8gVGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNhdGVnb3J5LnNlby50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSBhcyBXaXRoQ29udGV4dDxDb2xsZWN0aW9uUGFnZT47XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIsINGP0LLQu9GP0LXRgtGB0Y8g0LvQuCDQutCw0YLQtdCz0L7RgNC40Y8g0LLQuNGA0YLRg9Cw0LvRjNC90L7QuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQmtCw0YLQtdCz0L7RgNC40Y8g0LTQu9GPINC/0YDQvtCy0LXRgNC60LguXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwcml2YXRlIGlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5OiBTY0NhdGVnb3J5IHwgU2NWaXJ0dWFsQ2F0ZWdvcnkpOiBjYXRlZ29yeSBpcyBTY1ZpcnR1YWxDYXRlZ29yeSB7XG4gICAgICAgIHJldHVybiAnY2hpbGRDYXRlZ29yaWVzJyBpbiBjYXRlZ29yeSAmJiAncHJvZHVjdENhdGVnb3JpZXMnIGluIGNhdGVnb3J5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9GD0YfQsNC10YIgVVJMINC00LvRjyDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkg0JrQsNGC0LXQs9C+0YDQuNGPINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8gVVJMLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcnlVcmwoY2F0ZWdvcnk6IFNjQ2F0ZWdvcnkgfCBTY1ZpcnR1YWxDYXRlZ29yeSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMudXJscy5zaXRlVXJsfS9jYXRhbG9nL3ZpcnR1YWwvJHtjYXRlZ29yeS5zbHVnfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7dGhpcy51cmxzLnNpdGVVcmx9L2NhdGFsb2cvJHt0aGlzLmlkT3JTbHVnUGlwZS50cmFuc2Zvcm0oY2F0ZWdvcnkpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIgbWFpbkVudGl0eSDQtNC70Y8g0YHRhdC10LzRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQmtCw0YLQtdCz0L7RgNC40Y8uXG4gICAgICogQHBhcmFtIHByb2R1Y3RzINCh0L/QuNGB0L7QuiDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZU1haW5FbnRpdHkoY2F0ZWdvcnk6IFNjQ2F0ZWdvcnkgfCBTY1ZpcnR1YWxDYXRlZ29yeSwgcHJvZHVjdHM6IFNjUHJvZHVjdFtdIHwgdW5kZWZpbmVkKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgY2hpbGRDYXRlZ29yaWVzID0gdGhpcy5pc1ZpcnR1YWxDYXRlZ29yeShjYXRlZ29yeSkgPyBbLi4uKGNhdGVnb3J5LmNoaWxkQ2F0ZWdvcmllcyA/PyBbXSksIC4uLihjYXRlZ29yeS5wcm9kdWN0Q2F0ZWdvcmllcyA/PyBbXSldIDogKGNhdGVnb3J5LmNhdGVnb3JpZXMgPz8gW10pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQHR5cGUnOiAnSXRlbUxpc3QnLFxuICAgICAgICAgICAgbnVtYmVyT2ZJdGVtczogKHByb2R1Y3RzPy5sZW5ndGggPz8gMCkgKyBjaGlsZENhdGVnb3JpZXMubGVuZ3RoLFxuICAgICAgICAgICAgaXRlbUxpc3RPcmRlcjogJ2h0dHBzOi8vc2NoZW1hLm9yZy9JdGVtTGlzdFVub3JkZXJlZCcsXG4gICAgICAgICAgICBpdGVtTGlzdEVsZW1lbnQ6IFtcbiAgICAgICAgICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC4INCyINC90LDRh9Cw0LvQviDRgdC/0LjRgdC60LAuXG4gICAgICAgICAgICAgICAgLi4uY2hpbGRDYXRlZ29yaWVzLnNsaWNlKDAsIDUpLm1hcCgoc3ViQ2F0ZWdvcnksIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdWJDYXRlZ29yeS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMuZ2V0Q2F0ZWdvcnlVcmwoc3ViQ2F0ZWdvcnkpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybShzdWJDYXRlZ29yeS5pbWFnZSwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdWJDYXRlZ29yeS5zZW8/LmRlc2NyaXB0aW9uID8/IHN1YkNhdGVnb3J5LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0YLQvtCy0LDRgNGLINC/0L7RgdC70LUg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAgICAgICAgICAgIC4uLihwcm9kdWN0cz8uc2xpY2UoMCwgMTApLm1hcCgocHJvZHVjdCwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBjaGlsZENhdGVnb3JpZXMubGVuZ3RoICsgaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvZHVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9kdWN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMudXJscy5zaXRlVXJsfS9jYXRhbG9nLyR7dGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKHByb2R1Y3QpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybShwcm9kdWN0LmltYWdlLCB0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9kdWN0LnNlbz8uZGVzY3JpcHRpb24gPz8gcHJvZHVjdC5wcm9wZXJ0aWVzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ09mZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VDdXJyZW5jeTogJ1JVQicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlVmFsaWRVbnRpbDogcHJvZHVjdC5kaXNjb3VudD8uZXhwaXJlZEF0ID8gcHJvZHVjdC5kaXNjb3VudC5leHBpcmVkQXQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHByb2R1Y3QuY29zdFJ1YixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBuOiBwcm9kdWN0LmNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eTogIXByb2R1Y3Qub25PcmRlciAmJiBwcm9kdWN0LnN0b2NrQ291bnQ/Lmxlbmd0aCA/ICdJblN0b2NrJyA6ICdPdXRPZlN0b2NrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsbGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuY29tcGFueUluZm8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLnVybHMuc2l0ZVVybH0vY2F0YWxvZy9wcm9kdWN0LyR7dGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKHByb2R1Y3QpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpID8/IFtdKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPCEtLSDQodGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3Ri9C1INC00LDQvdC90YvQtSDQtNC70Y8gQ29sbGVjdGlvblBhZ2UgLS0+XG48c2MtanNvbi1sZCBbanNvbl09XCJzY2hlbWEoKVwiIC8+XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Интерфейс для структурированных данных хлебных крошек согласно Schema.org.
|
|
3
|
-
*
|
|
4
|
-
* @see https://schema.org/BreadcrumbList
|
|
5
|
-
*
|
|
6
|
-
* Локальный интерфейс для BreadcrumbList, чтобы избежать ошибки TS4029 с экспортом типов.
|
|
7
|
-
* Используется для создания JSON-LD разметки навигационных хлебных крошек
|
|
8
|
-
* на страницах каталога товаров.
|
|
9
|
-
*/
|
|
10
|
-
export interface BreadcrumbList {
|
|
11
|
-
/**
|
|
12
|
-
* Тип схемы Schema.org для хлебных крошек.
|
|
13
|
-
*/
|
|
14
|
-
'@type': 'BreadcrumbList';
|
|
15
|
-
/**
|
|
16
|
-
* Список элементов навигации (хлебных крошек).
|
|
17
|
-
* Каждый элемент представляет один уровень навигации.
|
|
18
|
-
*/
|
|
19
|
-
itemListElement: Array<{
|
|
20
|
-
/**
|
|
21
|
-
* Тип элемента списка согласно Schema.org.
|
|
22
|
-
*/
|
|
23
|
-
'@type': 'ListItem';
|
|
24
|
-
/**
|
|
25
|
-
* Позиция элемента в списке навигации (начиная с 1).
|
|
26
|
-
*/
|
|
27
|
-
position: number;
|
|
28
|
-
/**
|
|
29
|
-
* Отображаемое название элемента навигации.
|
|
30
|
-
*/
|
|
31
|
-
name: string;
|
|
32
|
-
/**
|
|
33
|
-
* URL-адрес страницы (опционально).
|
|
34
|
-
* Если не указан, элемент считается неактивным.
|
|
35
|
-
*/
|
|
36
|
-
item?: string;
|
|
37
|
-
}>;
|
|
38
|
-
}
|
package/schemas/index.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { Signal } from '@angular/core';
|
|
2
|
-
import { ScCategory, ScICompanyBaseInfo, ScIUrls, ScProduct, ScVirtualCategory } from '@snabcentr/client-core';
|
|
3
|
-
import { CollectionPage, WithContext } from 'schema-dts';
|
|
4
|
-
import { BreadcrumbList } from '../breadcrumb-list.interface';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
/**
|
|
7
|
-
* Компонент для отображения структурированных данных @see [Schema.org](https://schema.org) для страниц каталога.
|
|
8
|
-
*/
|
|
9
|
-
export declare class ScJsonLdCategoryComponent {
|
|
10
|
-
/**
|
|
11
|
-
* Категория товаров (обычная или виртуальная).
|
|
12
|
-
*/
|
|
13
|
-
readonly category: import("@angular/core").InputSignal<ScCategory | ScVirtualCategory>;
|
|
14
|
-
/**
|
|
15
|
-
* Список товаров.
|
|
16
|
-
*/
|
|
17
|
-
readonly products: import("@angular/core").InputSignal<ScProduct[] | undefined>;
|
|
18
|
-
/**
|
|
19
|
-
* Хлебные крошки.
|
|
20
|
-
*/
|
|
21
|
-
readonly breadcrumbs: import("@angular/core").InputSignal<BreadcrumbList | undefined>;
|
|
22
|
-
/**
|
|
23
|
-
* Пайп для формирования полного URI изображения на media сервере.
|
|
24
|
-
*/
|
|
25
|
-
private readonly mediaImageTransformerPipe;
|
|
26
|
-
/**
|
|
27
|
-
* Пайп для преобразования идентификатора или slug в идентификатор.
|
|
28
|
-
*/
|
|
29
|
-
private readonly idOrSlugPipe;
|
|
30
|
-
/**
|
|
31
|
-
* Данные о компании.
|
|
32
|
-
*/
|
|
33
|
-
protected readonly companyInfo: Readonly<ScICompanyBaseInfo>;
|
|
34
|
-
/**
|
|
35
|
-
* Список ссылок приложения.
|
|
36
|
-
*/
|
|
37
|
-
protected readonly urls: ScIUrls;
|
|
38
|
-
/**
|
|
39
|
-
* Схема структурированных данных для CollectionPage.
|
|
40
|
-
*/
|
|
41
|
-
readonly schema: Signal<WithContext<CollectionPage>>;
|
|
42
|
-
/**
|
|
43
|
-
* Проверяет, является ли категория виртуальной.
|
|
44
|
-
*
|
|
45
|
-
* @param category Категория для проверки.
|
|
46
|
-
*/
|
|
47
|
-
private isVirtualCategory;
|
|
48
|
-
/**
|
|
49
|
-
* Получает URL для категории.
|
|
50
|
-
*
|
|
51
|
-
* @param category Категория для получения URL.
|
|
52
|
-
*/
|
|
53
|
-
private getCategoryUrl;
|
|
54
|
-
/**
|
|
55
|
-
* Создает mainEntity для схемы.
|
|
56
|
-
*
|
|
57
|
-
* @param category Категория.
|
|
58
|
-
* @param products Список товаров.
|
|
59
|
-
*/
|
|
60
|
-
private createMainEntity;
|
|
61
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ScJsonLdCategoryComponent, never>;
|
|
62
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScJsonLdCategoryComponent, "sc-json-ld-category", never, { "category": { "alias": "category"; "required": true; "isSignal": true; }; "products": { "alias": "products"; "required": false; "isSignal": true; }; "breadcrumbs": { "alias": "breadcrumbs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
63
|
-
}
|