@snabcentr/client-core 2.64.3 → 2.65.1
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/cart/internal/sc-i-cart-item-dto.d.ts +2 -2
- package/catalog/classes/index.d.ts +1 -0
- package/catalog/classes/sc-catalog-item.d.ts +31 -0
- package/catalog/dto/index.d.ts +0 -2
- package/catalog/dto/sc-category.d.ts +18 -51
- package/catalog/dto/sc-product.d.ts +26 -51
- package/catalog/dto/sc-virtual-category.d.ts +13 -30
- package/catalog/interfaces/index.d.ts +4 -0
- package/catalog/interfaces/sc-i-catalog-item.d.ts +16 -0
- package/catalog/interfaces/sc-i-category.d.ts +29 -0
- package/catalog/{internal/sc-i-product-dto.d.ts → interfaces/sc-i-product.d.ts} +8 -27
- package/catalog/interfaces/sc-i-virtual-category.d.ts +20 -0
- package/catalog/internal/index.d.ts +0 -4
- package/catalog/services/sc-catalog.service.d.ts +3 -2
- package/catalog/services/sc-favorite.service.d.ts +1 -1
- package/common/classes/index.d.ts +9 -0
- package/common/classes/sc-catalogable-item.d.ts +17 -0
- package/common/classes/sc-coded-identity.d.ts +17 -0
- package/common/classes/sc-deletable-named-identity.d.ts +17 -0
- package/common/classes/sc-hidden-catalogable-item.d.ts +17 -0
- package/common/classes/sc-identity.d.ts +25 -0
- package/common/classes/sc-image.d.ts +6 -8
- package/common/classes/sc-named-identity.d.ts +17 -0
- package/common/classes/sc-primary-catalogable-item.d.ts +17 -0
- package/common/classes/sc-reference.d.ts +21 -0
- package/common/classes/sc-updatable-named-identity.d.ts +17 -0
- package/common/index.d.ts +1 -1
- package/common/interfaces/index.d.ts +16 -0
- package/common/interfaces/sc-i-catalogable-item.d.ts +10 -0
- package/common/interfaces/sc-i-coded-identity.d.ts +10 -0
- package/common/interfaces/sc-i-created-at.d.ts +9 -0
- package/common/interfaces/sc-i-date-period.d.ts +6 -0
- package/common/interfaces/sc-i-deletable-named-identity.d.ts +7 -0
- package/common/interfaces/sc-i-deleted-at.d.ts +9 -0
- package/common/interfaces/sc-i-file.d.ts +13 -0
- package/common/interfaces/sc-i-hidden-catalogable-item.d.ts +10 -0
- package/common/interfaces/sc-i-identity.d.ts +13 -0
- package/common/interfaces/sc-i-image.d.ts +1 -1
- package/common/interfaces/sc-i-named-identity.d.ts +7 -0
- package/common/interfaces/sc-i-named.d.ts +9 -0
- package/common/interfaces/sc-i-primary-catalogable-item.d.ts +10 -0
- package/common/interfaces/sc-i-reference.d.ts +14 -0
- package/common/interfaces/sc-i-typed-nullable-range.d.ts +13 -0
- package/common/interfaces/sc-i-updatable-named-identity.d.ts +7 -0
- package/common/interfaces/sc-i-updated-at.d.ts +9 -0
- package/config/index.d.ts +0 -1
- package/esm2022/cart/internal/sc-i-cart-item-dto.mjs +1 -1
- package/esm2022/catalog/classes/index.mjs +2 -1
- package/esm2022/catalog/classes/sc-catalog-item.mjs +19 -0
- package/esm2022/catalog/dto/index.mjs +1 -3
- package/esm2022/catalog/dto/sc-category.mjs +20 -38
- package/esm2022/catalog/dto/sc-product.mjs +27 -32
- package/esm2022/catalog/dto/sc-virtual-category.mjs +11 -14
- package/esm2022/catalog/interfaces/index.mjs +5 -1
- package/esm2022/catalog/interfaces/sc-i-catalog-item.mjs +2 -0
- package/esm2022/catalog/interfaces/sc-i-category.mjs +3 -0
- package/esm2022/catalog/interfaces/sc-i-product.mjs +3 -0
- package/esm2022/catalog/interfaces/sc-i-virtual-category.mjs +2 -0
- package/esm2022/catalog/internal/index.mjs +1 -5
- package/esm2022/catalog/services/sc-catalog.service.mjs +1 -1
- package/esm2022/catalog/services/sc-favorite.service.mjs +2 -2
- package/esm2022/catalog/services/sc-recommendation.service.mjs +1 -1
- package/esm2022/common/classes/index.mjs +10 -1
- package/esm2022/common/classes/sc-catalogable-item.mjs +16 -0
- package/esm2022/common/classes/sc-coded-identity.mjs +21 -0
- package/esm2022/common/classes/sc-deletable-named-identity.mjs +18 -0
- package/esm2022/common/classes/sc-hidden-catalogable-item.mjs +16 -0
- package/esm2022/common/classes/sc-identity.mjs +23 -0
- package/esm2022/common/classes/sc-image.mjs +7 -9
- package/esm2022/common/classes/sc-named-identity.mjs +21 -0
- package/esm2022/common/classes/sc-primary-catalogable-item.mjs +16 -0
- package/esm2022/common/classes/sc-reference.mjs +17 -0
- package/esm2022/common/classes/sc-updatable-named-identity.mjs +18 -0
- package/esm2022/common/index.mjs +2 -2
- package/esm2022/common/interfaces/index.mjs +17 -1
- package/esm2022/common/interfaces/sc-i-catalogable-item.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-coded-identity.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-created-at.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-date-period.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-deletable-named-identity.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-deleted-at.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-file.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-hidden-catalogable-item.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-identity.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-image.mjs +1 -1
- package/esm2022/common/interfaces/sc-i-named-identity.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-named.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-primary-catalogable-item.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-reference.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-typed-nullable-range.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-updatable-named-identity.mjs +2 -0
- package/esm2022/common/interfaces/sc-i-updated-at.mjs +2 -0
- package/esm2022/config/index.mjs +1 -2
- package/esm2022/configurator/services/sc-configurator.service.mjs +1 -1
- package/esm2022/guards/index.mjs +1 -2
- package/esm2022/helpers/sc-image-helper.mjs +13 -3
- package/esm2022/helpers/sc-units-helper.mjs +1 -1
- package/esm2022/news/classes/index.mjs +1 -5
- package/esm2022/news/classes/sc-news.mjs +13 -12
- package/esm2022/news/index.mjs +4 -7
- package/esm2022/news/interfaces/index.mjs +3 -0
- package/esm2022/news/interfaces/sc-i-news-tile.mjs +2 -0
- package/esm2022/news/interfaces/sc-i-news.mjs +2 -0
- package/esm2022/news/services/index.mjs +2 -0
- package/esm2022/news/services/sc-news.service.mjs +2 -2
- package/esm2022/news/tokens/index.mjs +2 -0
- package/esm2022/providers/sc-category.providers.mjs +3 -3
- package/esm2022/public-api.mjs +2 -6
- package/esm2022/search/services/sc-search.service.mjs +5 -5
- package/esm2022/seo/classes/index.mjs +2 -0
- package/esm2022/seo/classes/schema-org-factory.mjs +269 -0
- package/esm2022/seo/index.mjs +5 -0
- package/esm2022/seo/interfaces/index.mjs +5 -0
- package/esm2022/seo/interfaces/sc-i-default-page-meta.mjs +2 -0
- package/esm2022/seo/interfaces/sc-i-schema-org-breadcrumb-list.mjs +2 -0
- package/esm2022/seo/interfaces/sc-i-seo-resource.mjs +2 -0
- package/esm2022/seo/interfaces/sc-i-seo.mjs +2 -0
- package/esm2022/seo/services/index.mjs +2 -0
- package/esm2022/seo/services/sc-seo.service.mjs +206 -0
- package/esm2022/seo/types/index.mjs +2 -0
- package/esm2022/seo/types/robots-tag-type.mjs +2 -0
- package/esm2022/tokens/sc-default-page-meta.mjs +1 -1
- package/fesm2022/snabcentr-client-core.mjs +784 -580
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/guards/index.d.ts +0 -1
- package/helpers/sc-image-helper.d.ts +1 -1
- package/helpers/sc-units-helper.d.ts +1 -1
- package/news/classes/index.d.ts +0 -1
- package/news/classes/sc-news.d.ts +18 -13
- package/news/index.d.ts +3 -3
- package/news/interfaces/index.d.ts +2 -0
- package/news/interfaces/sc-i-news-tile.d.ts +22 -0
- package/news/interfaces/sc-i-news.d.ts +11 -0
- package/news/services/index.d.ts +1 -0
- package/news/services/sc-news.service.d.ts +4 -3
- package/news/tokens/index.d.ts +1 -0
- package/package.json +1 -1
- package/providers/sc-category.providers.d.ts +1 -1
- package/public-api.d.ts +1 -2
- package/search/services/sc-search.service.d.ts +5 -4
- package/seo/classes/index.d.ts +1 -0
- package/seo/classes/schema-org-factory.d.ts +88 -0
- package/seo/index.d.ts +4 -0
- package/seo/interfaces/index.d.ts +4 -0
- package/seo/interfaces/sc-i-default-page-meta.d.ts +17 -0
- package/seo/interfaces/sc-i-schema-org-breadcrumb-list.d.ts +34 -0
- package/seo/interfaces/sc-i-seo-resource.d.ts +14 -0
- package/{catalog/dto → seo/interfaces}/sc-i-seo.d.ts +3 -14
- package/seo/services/index.d.ts +1 -0
- package/seo/services/sc-seo.service.d.ts +125 -0
- package/seo/types/index.d.ts +1 -0
- package/tokens/sc-default-page-meta.d.ts +1 -1
- package/catalog/dto/sc-i-seo-resource.d.ts +0 -10
- package/catalog/dto/sc-seo-resource.d.ts +0 -22
- package/catalog/internal/sc-i-category-dto.d.ts +0 -48
- package/catalog/internal/sc-i-seo-resource-dto.d.ts +0 -10
- package/catalog/internal/sc-i-virtual-category-dto.d.ts +0 -37
- package/config/sc-i-default-page-meta.d.ts +0 -17
- package/esm2022/catalog/dto/sc-i-seo-resource.mjs +0 -2
- package/esm2022/catalog/dto/sc-i-seo.mjs +0 -2
- package/esm2022/catalog/dto/sc-seo-resource.mjs +0 -23
- package/esm2022/catalog/internal/sc-i-category-dto.mjs +0 -3
- package/esm2022/catalog/internal/sc-i-product-dto.mjs +0 -2
- package/esm2022/catalog/internal/sc-i-seo-resource-dto.mjs +0 -2
- package/esm2022/catalog/internal/sc-i-virtual-category-dto.mjs +0 -2
- package/esm2022/config/sc-i-default-page-meta.mjs +0 -2
- package/esm2022/guards/catalog-seo.guard.mjs +0 -61
- package/esm2022/news/classes/sc-news-tile.mjs +0 -2
- package/esm2022/news/internal/sc-i-news-dto.mjs +0 -2
- package/esm2022/sc-json-ld/index.mjs +0 -3
- package/esm2022/sc-json-ld/sc-json-ld.component.mjs +0 -49
- package/esm2022/sc-json-ld/sc-json-ld.module.mjs +0 -19
- package/esm2022/services/index.mjs +0 -3
- package/esm2022/services/sc-seo.service.mjs +0 -271
- package/esm2022/services/types/robots-tag-type.mjs +0 -2
- package/guards/catalog-seo.guard.d.ts +0 -14
- package/news/classes/sc-news-tile.d.ts +0 -25
- package/news/internal/sc-i-news-dto.d.ts +0 -30
- package/sc-json-ld/index.d.ts +0 -2
- package/sc-json-ld/sc-json-ld.component.d.ts +0 -31
- package/sc-json-ld/sc-json-ld.module.d.ts +0 -10
- package/services/index.d.ts +0 -2
- package/services/sc-seo.service.d.ts +0 -184
- /package/{services → seo}/types/robots-tag-type.d.ts +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { inject, Injectable, RendererFactory2 } from '@angular/core';
|
|
3
|
+
import { Meta, Title } from '@angular/platform-browser';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
5
|
+
import { ScIdOrSlugPipe } from '../../pipes/sc-id-or-slug.pipe';
|
|
6
|
+
import { ScMediaImageTransformerPipe } from '../../pipes/sc-media-image-transformer.pipe';
|
|
7
|
+
import { SC_COMPANY_INFO } from '../../tokens/sc-company-info';
|
|
8
|
+
import { SC_CATALOG_PAGE_META, SC_DEFAULT_PAGE_META } from '../../tokens/sc-default-page-meta';
|
|
9
|
+
import { SC_ID_OR_SLUG_IN_ROUTE } from '../../tokens/sc-id-or-slug-in-route';
|
|
10
|
+
import { SC_URLS } from '../../tokens/sc-urls';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* Сервис управления SEO-параметрами.
|
|
14
|
+
*/
|
|
15
|
+
export class ScSeoService {
|
|
16
|
+
constructor() {
|
|
17
|
+
/**
|
|
18
|
+
* Данные о компании.
|
|
19
|
+
*/
|
|
20
|
+
this.companyInfo = inject(SC_COMPANY_INFO);
|
|
21
|
+
/**
|
|
22
|
+
* Метаданные по умолчанию.
|
|
23
|
+
*/
|
|
24
|
+
this.defaultSeo = inject(SC_DEFAULT_PAGE_META);
|
|
25
|
+
/**
|
|
26
|
+
* Метаданные страницы каталога по умолчанию.
|
|
27
|
+
*/
|
|
28
|
+
this.catalogDefaultSeo = inject(SC_CATALOG_PAGE_META);
|
|
29
|
+
/**
|
|
30
|
+
* Признак необходимости использовать Id или Slug при маршрутизации.
|
|
31
|
+
*/
|
|
32
|
+
this.idOrSlugInRoute = inject(SC_ID_OR_SLUG_IN_ROUTE);
|
|
33
|
+
/**
|
|
34
|
+
* Список ссылок приложения.
|
|
35
|
+
*/
|
|
36
|
+
this.urls = inject(SC_URLS);
|
|
37
|
+
/**
|
|
38
|
+
* Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
|
|
39
|
+
*/
|
|
40
|
+
this.idOrSlugPipe = inject(ScIdOrSlugPipe);
|
|
41
|
+
/**
|
|
42
|
+
* Пайп для формирования полного URI изображения на media сервере.
|
|
43
|
+
*/
|
|
44
|
+
this.mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
|
|
45
|
+
/**
|
|
46
|
+
* Сервис установки метаданных страницы.
|
|
47
|
+
*/
|
|
48
|
+
this.metaService = inject(Meta);
|
|
49
|
+
/**
|
|
50
|
+
* Сервис маршрутизации.
|
|
51
|
+
*/
|
|
52
|
+
this.router = inject(Router);
|
|
53
|
+
/**
|
|
54
|
+
* Сервис управления заголовком страницы.
|
|
55
|
+
*/
|
|
56
|
+
this.titleService = inject(Title);
|
|
57
|
+
/**
|
|
58
|
+
* Объект {@link Document}, предоставляющий доступ к DOM страницы.
|
|
59
|
+
*/
|
|
60
|
+
this.document = inject(DOCUMENT);
|
|
61
|
+
/**
|
|
62
|
+
* Фабрика для создания экземпляров {@link Renderer2}.
|
|
63
|
+
*/
|
|
64
|
+
this.rendererFactory = inject(RendererFactory2);
|
|
65
|
+
/**
|
|
66
|
+
* Экземпляр {@link Renderer2} для безопасной работы с DOM.
|
|
67
|
+
*/
|
|
68
|
+
this.renderer = this.rendererFactory.createRenderer(null, null);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Устанавливает seo параметры на основе указанного ресурса. Если какого-то тега нет, будет установлено значение по умолчанию.
|
|
72
|
+
*
|
|
73
|
+
* @param resource Ресурс на основе которого необходимо установить мета-теги.
|
|
74
|
+
* @param img Изображение. Если не пришло, то будет установлено значение по умолчанию.
|
|
75
|
+
* @param robots Список robots-тегов для страницы.
|
|
76
|
+
*/
|
|
77
|
+
setFromResource(resource, img = this.urls.logoUrl, robots = ['index', 'follow']) {
|
|
78
|
+
const updatedResource = {
|
|
79
|
+
title: resource?.title ?? this.defaultSeo.title,
|
|
80
|
+
description: resource?.description ?? this.defaultSeo.description,
|
|
81
|
+
keywords: resource?.keywords ?? this.defaultSeo.keywords,
|
|
82
|
+
meta: resource?.meta ?? [],
|
|
83
|
+
};
|
|
84
|
+
const url = `${this.urls.siteUrl}${this.router.url}`;
|
|
85
|
+
this.setMetaTags(updatedResource.title, updatedResource.description, updatedResource.keywords, updatedResource.meta, robots);
|
|
86
|
+
this.setOpenGraphMetaTags(updatedResource.title, updatedResource.description, url, img);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Устанавливает seo параметры со значением по умолчанию.
|
|
90
|
+
*
|
|
91
|
+
* @param title Заголовок страницы.
|
|
92
|
+
* @param robots Список robots тегов для страницы.
|
|
93
|
+
*/
|
|
94
|
+
setByDefault(title, robots = ['index', 'follow']) {
|
|
95
|
+
this.setFromResource({
|
|
96
|
+
title: `${title ?? this.defaultSeo.title} - ${this.companyInfo.name}`,
|
|
97
|
+
description: `${title}, ${this.defaultSeo.description}`,
|
|
98
|
+
}, this.urls.logoUrl, robots);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Устанавливает seo параметры со значением по умолчанию. Устанавливает значение "не индексировать" для поисковых роботов.
|
|
102
|
+
*
|
|
103
|
+
* @param title Заголовок страницы.
|
|
104
|
+
*/
|
|
105
|
+
setByDefaultAsNoIndexed(title) {
|
|
106
|
+
this.setByDefault(title, ['noindex', 'nofollow', 'noarchive']);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Устанавливает seo-параметры для указанного элемента каталога.
|
|
110
|
+
*
|
|
111
|
+
* @param item Данные об элементе каталога.
|
|
112
|
+
* @param urlPath Url путь к элементу каталога. В пути должен присутствовать шаблон ':id', обозначающий идентификатор элемента каталога для подстановки.
|
|
113
|
+
* @param schemaOrgData Данные Schema.org элемента каталога
|
|
114
|
+
*/
|
|
115
|
+
setForCategoryItem(item, urlPath, schemaOrgData) {
|
|
116
|
+
const url = `${this.urls.siteUrl}${urlPath.replace(':id', this.idOrSlugPipe.transform(item).toString())}`;
|
|
117
|
+
const title = item.seo?.title ?? `${item.name} - Купить в ${this.companyInfo.name}`;
|
|
118
|
+
const description = item.seo?.description ?? `${item.name} - Купить по выгодным ценам в ${this.companyInfo.name}`;
|
|
119
|
+
const keywords = item.seo?.keywords ?? `${item.name}, ${this.catalogDefaultSeo.keywords}`;
|
|
120
|
+
const meta = item.seo?.meta ?? [];
|
|
121
|
+
// Устанавливаем стандартные seo-параметры.
|
|
122
|
+
this.setMetaTags(title, description, keywords, meta, ['index', 'follow']);
|
|
123
|
+
this.setOpenGraphMetaTags(title, description, url, this.mediaImageTransformerPipe.transform(item.image, true));
|
|
124
|
+
// В том случае, если используется slug для формирования ссылок, то необходимо сформировать кононическую
|
|
125
|
+
// ссылку на страницу в которой используется slug (а не id).
|
|
126
|
+
if (this.idOrSlugInRoute === 'slug' && item.id && item.slug) {
|
|
127
|
+
this.setCanonicalLink(url);
|
|
128
|
+
}
|
|
129
|
+
// Устанавливаем Schema.org параметры.
|
|
130
|
+
if (schemaOrgData) {
|
|
131
|
+
this.setSchemaOrgData(schemaOrgData);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Устанавливает все meta-теги страницы. Если какой-либо из параметров не указан, для него устанавливается значение по умолчанию.
|
|
136
|
+
*
|
|
137
|
+
* @param title Заголовок страницы.
|
|
138
|
+
* @param description Описание страницы.
|
|
139
|
+
* @param keywords Ключевые слова страницы.
|
|
140
|
+
* @param meta Массив дополнительных значений метатегов.
|
|
141
|
+
* @param robots Список robots тегов для страницы.
|
|
142
|
+
*/
|
|
143
|
+
setMetaTags(title = this.defaultSeo.title, description = this.defaultSeo.description, keywords = this.defaultSeo.keywords, meta = [], robots = ['index', 'follow']) {
|
|
144
|
+
this.titleService.setTitle(title);
|
|
145
|
+
this.metaService.updateTag({ name: 'description', content: description });
|
|
146
|
+
this.metaService.updateTag({ name: 'keywords', content: keywords });
|
|
147
|
+
this.metaService.updateTag({ name: 'robots', content: robots.join(', ') });
|
|
148
|
+
meta.forEach((tag) => {
|
|
149
|
+
this.metaService.updateTag({ name: tag.name, content: tag.content });
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Устанавливает Open Graph meta-теги.
|
|
154
|
+
*
|
|
155
|
+
* @param ogTitle Заголовок.
|
|
156
|
+
* @param ogDescription Описание.
|
|
157
|
+
* @param ogUrl Url.
|
|
158
|
+
* @param ogImg Ссылка на изображение.
|
|
159
|
+
*/
|
|
160
|
+
setOpenGraphMetaTags(ogTitle, ogDescription, ogUrl, ogImg) {
|
|
161
|
+
this.metaService.updateTag({ property: 'og:type', content: 'website' });
|
|
162
|
+
this.metaService.updateTag({ property: 'og:title', content: ogTitle });
|
|
163
|
+
this.metaService.updateTag({ property: 'og:description', content: ogDescription });
|
|
164
|
+
this.metaService.updateTag({ property: 'og:url', content: ogUrl });
|
|
165
|
+
this.metaService.updateTag({ property: 'og:image', content: ogImg });
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Устанавливает тег канонической страницы <link rel="canonical" href="..." />.
|
|
169
|
+
*
|
|
170
|
+
* @param url URL который необходимо использовать в качестве ссылки.
|
|
171
|
+
*/
|
|
172
|
+
setCanonicalLink(url) {
|
|
173
|
+
// Удаляем существующий link canonical.
|
|
174
|
+
const existingLink = this.document.querySelector('link[rel="canonical"]');
|
|
175
|
+
if (existingLink?.parentNode) {
|
|
176
|
+
this.renderer.removeChild(existingLink.parentNode, existingLink);
|
|
177
|
+
}
|
|
178
|
+
// Создаём и устанавливаем новый тег.
|
|
179
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
180
|
+
const link = this.renderer.createElement('link');
|
|
181
|
+
this.renderer.setAttribute(link, 'rel', 'canonical');
|
|
182
|
+
this.renderer.setAttribute(link, 'href', url);
|
|
183
|
+
this.renderer.appendChild(this.document.head, link);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Устанавливает Schema.org объект страницы.
|
|
187
|
+
*
|
|
188
|
+
* @param data Данные Schema.org для встраивания на странице.
|
|
189
|
+
*/
|
|
190
|
+
setSchemaOrgData(data) {
|
|
191
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
192
|
+
const script = this.renderer.createElement('script');
|
|
193
|
+
this.renderer.setAttribute(script, 'type', 'application/ld+json');
|
|
194
|
+
this.renderer.appendChild(script, this.document.createTextNode(JSON.stringify(data)));
|
|
195
|
+
this.renderer.appendChild(this.document.head, script);
|
|
196
|
+
}
|
|
197
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSeoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
198
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSeoService, providedIn: 'root' }); }
|
|
199
|
+
}
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSeoService, decorators: [{
|
|
201
|
+
type: Injectable,
|
|
202
|
+
args: [{
|
|
203
|
+
providedIn: 'root',
|
|
204
|
+
}]
|
|
205
|
+
}] });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nlby9zZXJ2aWNlcy9zYy1zZW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSS9DOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFIekI7UUFJSTs7V0FFRztRQUNjLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXZEOztXQUVHO1FBQ2MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2Msc0JBQWlCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWxFOztXQUVHO1FB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LENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQWtCLElBQW9CO1FBQzFELG1FQUFtRTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7K0dBek5RLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGhpbmcsIFdpdGhDb250ZXh0IH0gZnJvbSAnc2NoZW1hLWR0cyc7XG5cbmltcG9ydCB7IFNjSUNhdGFsb2dJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9pbnRlcmZhY2VzL3NjLWktY2F0YWxvZy1pdGVtJztcbmltcG9ydCB7IFNjSUNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJZE9yU2x1Z1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYy1pZC1vci1zbHVnLnBpcGUnO1xuaW1wb3J0IHsgU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvc2MtbWVkaWEtaW1hZ2UtdHJhbnNmb3JtZXIucGlwZSc7XG5pbXBvcnQgeyBTQ19DT01QQU5ZX0lORk8gfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtY29tcGFueS1pbmZvJztcbmltcG9ydCB7IFNDX0NBVEFMT0dfUEFHRV9NRVRBLCBTQ19ERUZBVUxUX1BBR0VfTUVUQSB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1kZWZhdWx0LXBhZ2UtbWV0YSc7XG5pbXBvcnQgeyBTQ19JRF9PUl9TTFVHX0lOX1JPVVRFIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWlkLW9yLXNsdWctaW4tcm91dGUnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjSVNlbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1zZW8nO1xuaW1wb3J0IHsgUm9ib3RzVGFnVHlwZSB9IGZyb20gJy4uL3R5cGVzL3JvYm90cy10YWctdHlwZSc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINGD0L/RgNCw0LLQu9C10L3QuNGPIFNFTy3Qv9Cw0YDQsNC80LXRgtGA0LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Nlb1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcGFueUluZm8gPSBpbmplY3QoU0NfQ09NUEFOWV9JTkZPKTtcblxuICAgIC8qKlxuICAgICAqINCc0LXRgtCw0LTQsNC90L3Ri9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNlbyA9IGluamVjdChTQ19ERUZBVUxUX1BBR0VfTUVUQSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNC10YLQsNC00LDQvdC90YvQtSDRgdGC0YDQsNC90LjRhtGLINC60LDRgtCw0LvQvtCz0LAg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nRGVmYXVsdFNlbyA9IGluamVjdChTQ19DQVRBTE9HX1BBR0VfTUVUQSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgSWQg0LjQu9C4IFNsdWcg0L/RgNC4INC80LDRgNGI0YDRg9GC0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdJblJvdXRlID0gaW5qZWN0KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvywg0LLQvtC30LLRgNCw0YnQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCDRgdC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDQuNGB0YXQvtC00Y8g0LjQtyDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlkT3JTbHVnUGlwZTogU2NJZE9yU2x1Z1BpcGUgPSBpbmplY3QoU2NJZE9yU2x1Z1BpcGUpO1xuXG4gICAgLyoqXG4gICAgICog0J/QsNC50L8g0LTQu9GPINGE0L7RgNC80LjRgNC+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LPQviBVUkkg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdCwIG1lZGlhINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSA9IGluamVjdChTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINGD0YHRgtCw0L3QvtCy0LrQuCDQvNC10YLQsNC00LDQvdC90YvRhSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YVNlcnZpY2UgPSBpbmplY3QoTWV0YSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRg9C/0YDQsNCy0LvQtdC90LjRjyDQt9Cw0LPQvtC70L7QstC60L7QvCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlID0gaW5qZWN0KFRpdGxlKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiB7QGxpbmsgRG9jdW1lbnR9LCDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6IERPTSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICog0KTQsNCx0YDQuNC60LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0Y3QutC30LXQvNC/0LvRj9GA0L7QsiB7QGxpbmsgUmVuZGVyZXIyfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcblxuICAgIC8qKlxuICAgICAqINCt0LrQt9C10LzQv9C70Y/RgCB7QGxpbmsgUmVuZGVyZXIyfSDQtNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0Lkg0YDQsNCx0L7RgtGLINGBIERPTS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIHNlbyDQv9Cw0YDQsNC80LXRgtGA0Ysg0L3QsCDQvtGB0L3QvtCy0LUg0YPQutCw0LfQsNC90L3QvtCz0L4g0YDQtdGB0YPRgNGB0LAuINCV0YHQu9C4INC60LDQutC+0LPQvi3RgtC+INGC0LXQs9CwINC90LXRgiwg0LHRg9C00LXRgiDRg9GB0YLQsNC90L7QstC70LXQvdC+INC30L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVzb3VyY2Ug0KDQtdGB0YPRgNGBINC90LAg0L7RgdC90L7QstC1INC60L7RgtC+0YDQvtCz0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LzQtdGC0LAt0YLQtdCz0LguXG4gICAgICogQHBhcmFtIGltZyDQmNC30L7QsdGA0LDQttC10L3QuNC1LiDQldGB0LvQuCDQvdC1INC/0YDQuNGI0LvQviwg0YLQviDQsdGD0LTQtdGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L4g0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gcm9ib3RzINCh0L/QuNGB0L7QuiByb2JvdHMt0YLQtdCz0L7QsiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RnJvbVJlc291cmNlKHJlc291cmNlPzogU2NJU2VvLCBpbWc6IHN0cmluZyA9IHRoaXMudXJscy5sb2dvVXJsLCByb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSA9IFsnaW5kZXgnLCAnZm9sbG93J10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFJlc291cmNlID0ge1xuICAgICAgICAgICAgdGl0bGU6IHJlc291cmNlPy50aXRsZSA/PyB0aGlzLmRlZmF1bHRTZW8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzb3VyY2U/LmRlc2NyaXB0aW9uID8/IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGtleXdvcmRzOiByZXNvdXJjZT8ua2V5d29yZHMgPz8gdGhpcy5kZWZhdWx0U2VvLmtleXdvcmRzLFxuICAgICAgICAgICAgbWV0YTogcmVzb3VyY2U/Lm1ldGEgPz8gW10sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7dGhpcy5yb3V0ZXIudXJsfWA7XG5cbiAgICAgICAgdGhpcy5zZXRNZXRhVGFncyh1cGRhdGVkUmVzb3VyY2UudGl0bGUsIHVwZGF0ZWRSZXNvdXJjZS5kZXNjcmlwdGlvbiwgdXBkYXRlZFJlc291cmNlLmtleXdvcmRzLCB1cGRhdGVkUmVzb3VyY2UubWV0YSwgcm9ib3RzKTtcbiAgICAgICAgdGhpcy5zZXRPcGVuR3JhcGhNZXRhVGFncyh1cGRhdGVkUmVzb3VyY2UudGl0bGUsIHVwZGF0ZWRSZXNvdXJjZS5kZXNjcmlwdGlvbiwgdXJsLCBpbWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIHNlbyDQv9Cw0YDQsNC80LXRgtGA0Ysg0YHQviDQt9C90LDRh9C10L3QuNC10Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHNldEJ5RGVmYXVsdCh0aXRsZT86IHN0cmluZywgcm9ib3RzOiBSb2JvdHNUYWdUeXBlW10gPSBbJ2luZGV4JywgJ2ZvbGxvdyddKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RnJvbVJlc291cmNlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBgJHt0aXRsZSA/PyB0aGlzLmRlZmF1bHRTZW8udGl0bGV9IC0gJHt0aGlzLmNvbXBhbnlJbmZvLm5hbWV9YCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7dGl0bGV9LCAke3RoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbn1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudXJscy5sb2dvVXJsLFxuICAgICAgICAgICAgcm9ib3RzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgc2VvINC/0LDRgNCw0LzQtdGC0YDRiyDRgdC+INC30L3QsNGH0LXQvdC40LXQvCDQv9C+INGD0LzQvtC70YfQsNC90LjRji4g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LfQvdCw0YfQtdC90LjQtSBcItC90LUg0LjQvdC00LXQutGB0LjRgNC+0LLQsNGC0YxcIiDQtNC70Y8g0L/QvtC40YHQutC+0LLRi9GFINGA0L7QsdC+0YLQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpdGxlINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRCeURlZmF1bHRBc05vSW5kZXhlZCh0aXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEJ5RGVmYXVsdCh0aXRsZSwgWydub2luZGV4JywgJ25vZm9sbG93JywgJ25vYXJjaGl2ZSddKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBzZW8t0L/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRjdC70LXQvNC10L3RgtCwINC60LDRgtCw0LvQvtCz0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbSDQlNCw0L3QvdGL0LUg0L7QsSDRjdC70LXQvNC10L3RgtC1INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICogQHBhcmFtIHVybFBhdGggVXJsINC/0YPRgtGMINC6INGN0LvQtdC80LXQvdGC0YMg0LrQsNGC0LDQu9C+0LPQsC4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0Y3Qu9C10LzQtdC90YLQsCDQutCw0YLQsNC70L7Qs9CwINC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBzY2hlbWFPcmdEYXRhINCU0LDQvdC90YvQtSBTY2hlbWEub3JnINGN0LvQtdC80LXQvdGC0LAg0LrQsNGC0LDQu9C+0LPQsFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRGb3JDYXRlZ29yeUl0ZW0oaXRlbTogU2NJQ2F0YWxvZ0l0ZW08U2NJQ2F0ZWdvcnk+LCB1cmxQYXRoOiBzdHJpbmcsIHNjaGVtYU9yZ0RhdGE/OiBXaXRoQ29udGV4dDxUaGluZz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxzLnNpdGVVcmx9JHt1cmxQYXRoLnJlcGxhY2UoJzppZCcsIHRoaXMuaWRPclNsdWdQaXBlLnRyYW5zZm9ybShpdGVtKS50b1N0cmluZygpKX1gO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGl0ZW0uc2VvPy50aXRsZSA/PyBgJHtpdGVtLm5hbWV9IC0g0JrRg9C/0LjRgtGMINCyICR7dGhpcy5jb21wYW55SW5mby5uYW1lfWA7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gaXRlbS5zZW8/LmRlc2NyaXB0aW9uID8/IGAke2l0ZW0ubmFtZX0gLSDQmtGD0L/QuNGC0Ywg0L/QviDQstGL0LPQvtC00L3Ri9C8INGG0LXQvdCw0Lwg0LIgJHt0aGlzLmNvbXBhbnlJbmZvLm5hbWV9YDtcbiAgICAgICAgY29uc3Qga2V5d29yZHMgPSBpdGVtLnNlbz8ua2V5d29yZHMgPz8gYCR7aXRlbS5uYW1lfSwgJHt0aGlzLmNhdGFsb2dEZWZhdWx0U2VvLmtleXdvcmRzfWA7XG4gICAgICAgIGNvbnN0IG1ldGEgPSBpdGVtLnNlbz8ubWV0YSA/PyBbXTtcblxuICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDRgdGC0LDQvdC00LDRgNGC0L3Ri9C1IHNlby3Qv9Cw0YDQsNC80LXRgtGA0YsuXG4gICAgICAgIHRoaXMuc2V0TWV0YVRhZ3ModGl0bGUsIGRlc2NyaXB0aW9uLCBrZXl3b3JkcywgbWV0YSwgWydpbmRleCcsICdmb2xsb3cnXSk7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YVRhZ3ModGl0bGUsIGRlc2NyaXB0aW9uLCB1cmwsIHRoaXMubWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZS50cmFuc2Zvcm0oaXRlbS5pbWFnZSwgdHJ1ZSkpO1xuXG4gICAgICAgIC8vINCSINGC0L7QvCDRgdC70YPRh9Cw0LUsINC10YHQu9C4INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyBzbHVnINC00LvRjyDRhNC+0YDQvNC40YDQvtCy0LDQvdC40Y8g0YHRgdGL0LvQvtC6LCDRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INGB0YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQutC+0L3QvtC90LjRh9C10YHQutGD0Y5cbiAgICAgICAgLy8g0YHRgdGL0LvQutGDINC90LAg0YHRgtGA0LDQvdC40YbRgyDQsiDQutC+0YLQvtGA0L7QuSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gc2x1ZyAo0LAg0L3QtSBpZCkuXG4gICAgICAgIGlmICh0aGlzLmlkT3JTbHVnSW5Sb3V0ZSA9PT0gJ3NsdWcnICYmIGl0ZW0uaWQgJiYgaXRlbS5zbHVnKSB7XG4gICAgICAgICAgICB0aGlzLnNldENhbm9uaWNhbExpbmsodXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8IFNjaGVtYS5vcmcg0L/QsNGA0LDQvNC10YLRgNGLLlxuICAgICAgICBpZiAoc2NoZW1hT3JnRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTY2hlbWFPcmdEYXRhKHNjaGVtYU9yZ0RhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LLRgdC1IG1ldGEt0YLQtdCz0Lgg0YHRgtGA0LDQvdC40YbRiy4g0JXRgdC70Lgg0LrQsNC60L7QuS3Qu9C40LHQviDQuNC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINC90LUg0YPQutCw0LfQsNC9LCDQtNC70Y8g0L3QtdCz0L4g0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YLRgdGPINC30L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIGRlc2NyaXB0aW9uINCe0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0ga2V5d29yZHMg0JrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIG1ldGEg0JzQsNGB0YHQuNCyINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0YUg0LfQvdCw0YfQtdC90LjQuSDQvNC10YLQsNGC0LXQs9C+0LIuXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRNZXRhVGFncyhcbiAgICAgICAgdGl0bGU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAga2V5d29yZHM6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5rZXl3b3JkcyxcbiAgICAgICAgbWV0YTogU2NJU2VvWydtZXRhJ10gPSBbXSxcbiAgICAgICAgcm9ib3RzOiBSb2JvdHNUYWdUeXBlW10gPSBbJ2luZGV4JywgJ2ZvbGxvdyddXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlKTtcblxuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXB0aW9uIH0pO1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdrZXl3b3JkcycsIGNvbnRlbnQ6IGtleXdvcmRzIH0pO1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdyb2JvdHMnLCBjb250ZW50OiByb2JvdHMuam9pbignLCAnKSB9KTtcblxuICAgICAgICBtZXRhLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiB0YWcubmFtZSwgY29udGVudDogdGFnLmNvbnRlbnQgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIE9wZW4gR3JhcGggbWV0YS3RgtC10LPQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZ1RpdGxlINCX0LDQs9C+0LvQvtCy0L7Qui5cbiAgICAgKiBAcGFyYW0gb2dEZXNjcmlwdGlvbiDQntC/0LjRgdCw0L3QuNC1LlxuICAgICAqIEBwYXJhbSBvZ1VybCBVcmwuXG4gICAgICogQHBhcmFtIG9nSW1nINCh0YHRi9C70LrQsCDQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRPcGVuR3JhcGhNZXRhVGFncyhvZ1RpdGxlOiBzdHJpbmcsIG9nRGVzY3JpcHRpb246IHN0cmluZywgb2dVcmw6IHN0cmluZywgb2dJbWc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICd3ZWJzaXRlJyB9KTtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnRpdGxlJywgY29udGVudDogb2dUaXRsZSB9KTtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmRlc2NyaXB0aW9uJywgY29udGVudDogb2dEZXNjcmlwdGlvbiB9KTtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnVybCcsIGNvbnRlbnQ6IG9nVXJsIH0pO1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6aW1hZ2UnLCBjb250ZW50OiBvZ0ltZyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgtC10LMg0LrQsNC90L7QvdC40YfQtdGB0LrQvtC5INGB0YLRgNCw0L3QuNGG0YsgPGxpbmsgcmVsPVwiY2Fub25pY2FsXCIgaHJlZj1cIi4uLlwiIC8+LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybCBVUkwg0LrQvtGC0L7RgNGL0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0YHRgdGL0LvQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0Q2Fub25pY2FsTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyDQo9C00LDQu9GP0LXQvCDRgdGD0YnQtdGB0YLQstGD0Y7RidC40LkgbGluayBjYW5vbmljYWwuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTGluayA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tyZWw9XCJjYW5vbmljYWxcIl0nKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdMaW5rPy5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGV4aXN0aW5nTGluay5wYXJlbnROb2RlLCBleGlzdGluZ0xpbmspO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0KHQvtC30LTQsNGR0Lwg0Lgg0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0L3QvtCy0YvQuSDRgtC10LMuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgY29uc3QgbGluayA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShsaW5rLCAncmVsJywgJ2Nhbm9uaWNhbCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShsaW5rLCAnaHJlZicsIHVybCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBsaW5rKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBTY2hlbWEub3JnINC+0LHRitC10LrRgiDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEg0JTQsNC90L3Ri9C1IFNjaGVtYS5vcmcg0LTQu9GPINCy0YHRgtGA0LDQuNCy0LDQvdC40Y8g0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0U2NoZW1hT3JnRGF0YTxUIGV4dGVuZHMgVGhpbmc+KGRhdGE6IFdpdGhDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc2NyaXB0LCAndHlwZScsICdhcHBsaWNhdGlvbi9sZCtqc29uJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoc2NyaXB0LCB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKEpTT04uc3RyaW5naWZ5KGRhdGEpKSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzY3JpcHQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './robots-tag-type';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nlby90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb2JvdHMtdGFnLXR5cGUnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9ib3RzLXRhZy10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZW8vdHlwZXMvcm9ib3RzLXRhZy10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCi0LjQvyDQtNC+0L/Rg9GB0YLQuNC80YvRhSDQt9C90LDRh9C10L3QuNC5INC00LvRjyByb2JvdHMuXG4gKi9cbmV4cG9ydCB0eXBlIFJvYm90c1RhZ1R5cGUgPSAnaW5kZXgnIHwgJ25vaW5kZXgnIHwgJ2ZvbGxvdycgfCAnbm9mb2xsb3cnIHwgJ25vYXJjaGl2ZSc7XG4iXX0=
|
|
@@ -7,4 +7,4 @@ export const SC_DEFAULT_PAGE_META = new InjectionToken('SC_DEFAULT_PAGE_META');
|
|
|
7
7
|
* Токен внедрения мета-данных страницы каталога.
|
|
8
8
|
*/
|
|
9
9
|
export const SC_CATALOG_PAGE_META = new InjectionToken('SC_CATALOG_PAGE_META');
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVmYXVsdC1wYWdlLW1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy9zYy1kZWZhdWx0LXBhZ2UtbWV0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXFCLHNCQUFzQixDQUFDLENBQUM7QUFFbkc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNjSURlZmF1bHRQYWdlTWV0YSB9IGZyb20gJy4uL3Nlby9pbnRlcmZhY2VzL3NjLWktZGVmYXVsdC1wYWdlLW1ldGEnO1xuXG4vKipcbiAqINCi0L7QutC10L0g0LLQvdC10LTRgNC10L3QuNGPINC80LXRgtCwLdC00LDQvdC90YvRhSDRgdGC0YDQsNC90LjRhtGLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICovXG5leHBvcnQgY29uc3QgU0NfREVGQVVMVF9QQUdFX01FVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NJRGVmYXVsdFBhZ2VNZXRhPignU0NfREVGQVVMVF9QQUdFX01FVEEnKTtcblxuLyoqXG4gKiDQotC+0LrQtdC9INCy0L3QtdC00YDQtdC90LjRjyDQvNC10YLQsC3QtNCw0L3QvdGL0YUg0YHRgtGA0LDQvdC40YbRiyDQutCw0YLQsNC70L7Qs9CwLlxuICovXG5leHBvcnQgY29uc3QgU0NfQ0FUQUxPR19QQUdFX01FVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NJRGVmYXVsdFBhZ2VNZXRhPignU0NfQ0FUQUxPR19QQUdFX01FVEEnKTtcbiJdfQ==
|