@snabcentr/client-core 2.62.1 → 2.62.2

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.
@@ -1,3 +1,7 @@
1
1
  export * from './sc-i-configurator-base';
2
+ export * from './sc-i-configurator-calculate-result';
3
+ export * from './sc-i-configurator-calculate-sheet';
2
4
  export * from './sc-i-configurator-search-product-base';
3
5
  export * from './sc-i-configurator-settings-base';
6
+ export * from './sc-i-sandwich-calculate';
7
+ export * from './sc-i-sandwich-calculate-item';
@@ -0,0 +1,18 @@
1
+ import { ScIConfiguratorCalculateSheet } from './sc-i-configurator-calculate-sheet';
2
+ /**
3
+ * Результат расчета конфигуратора распила сэндвич-панелей.
4
+ */
5
+ export interface ScIConfiguratorCalculateResult {
6
+ /**
7
+ * Идентификатор расчета.
8
+ */
9
+ id: string;
10
+ /**
11
+ * Количество листов.
12
+ */
13
+ quantity: number;
14
+ /**
15
+ * Список данных о листах.
16
+ */
17
+ sheets: ScIConfiguratorCalculateSheet[];
18
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Данные о листе результата расчета конфигуратора.
3
+ */
4
+ export interface ScIConfiguratorCalculateSheet {
5
+ /**
6
+ * Процент заполнения листа.
7
+ */
8
+ filledPercent: number;
9
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Данные изделия для расчета конфигуратора распила сэндвич-панелей.
3
+ */
4
+ export interface ISandwichCalculateItem {
5
+ /**
6
+ * Ширина изделия, мм.
7
+ */
8
+ width: number;
9
+ /**
10
+ * Длина изделия, мм.
11
+ */
12
+ length: number;
13
+ /**
14
+ * Количество изделий.
15
+ */
16
+ quantity: number;
17
+ }
@@ -0,0 +1,14 @@
1
+ import { ISandwichCalculateItem } from './sc-i-sandwich-calculate-item';
2
+ /**
3
+ * Параметры запроса расчета конфигуратора распила сэндвич-панелей.
4
+ */
5
+ export interface ISandwichCalculate {
6
+ /**
7
+ * Идентификатор продукта.
8
+ */
9
+ productId: number;
10
+ /**
11
+ * Список параметров изделий.
12
+ */
13
+ items: ISandwichCalculateItem[];
14
+ }
@@ -1,29 +1,36 @@
1
- import { HttpClient, HttpParams } from '@angular/common/http';
1
+ import { HttpParams } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
- import { ScCatalogService, ScProduct } from '../../catalog';
4
- import { ScIUrls } from '../../config';
5
- import { ScIConfiguratorBase, ScIConfiguratorSettingsBase } from '../dto';
6
- import { ScTypeByKey } from '../types';
3
+ import { ScProduct } from '../../catalog';
4
+ import { ISandwichCalculate, ScIConfiguratorCalculateResult, ScIConfiguratorSettingsBase } from '../dto';
7
5
  import * as i0 from "@angular/core";
8
6
  /**
9
7
  * Сервис для работы с конфигуратором.
10
8
  */
11
9
  export declare class ScConfiguratorService {
10
+ /**
11
+ * Список компонентов конфигураторов по их названию.
12
+ */
12
13
  private readonly configuratorComponents;
14
+ /**
15
+ * Список моделей настроек конфигураторов по их названию.
16
+ */
13
17
  private readonly configuratorSettings;
18
+ /**
19
+ * HTTP-клиент.
20
+ */
14
21
  private readonly http;
22
+ /**
23
+ * Список ссылок на разделы backend'a.
24
+ */
15
25
  private readonly urls;
26
+ /**
27
+ * Сервис для работы с каталогом.
28
+ */
16
29
  private readonly catalogService;
17
30
  /**
18
- * Инициализирует экземпляр класса {@link ScConfiguratorService}.
19
- *
20
- * @param configuratorComponents Список компонентов конфигураторов по их названию.
21
- * @param configuratorSettings Список моделей настроек конфигураторов по их названию.
22
- * @param http HTTP-клиент.
23
- * @param urls Список ссылок на разделы backend'a.
24
- * @param catalogService Сервис для работы с каталогом.
31
+ * Сервис конвертации данных.
25
32
  */
26
- constructor(configuratorComponents: ScTypeByKey<ScIConfiguratorBase>, configuratorSettings: ScTypeByKey<ScIConfiguratorSettingsBase> | undefined, http: HttpClient, urls: ScIUrls, catalogService: ScCatalogService);
33
+ private readonly convertersService;
27
34
  /**
28
35
  * Возвращает признак того, что конфигуратор с указанным названием существует и реализован.
29
36
  *
@@ -61,6 +68,14 @@ export declare class ScConfiguratorService {
61
68
  * @param templateId Идентификатор записи шаблона.
62
69
  */
63
70
  removeTemplate$(categoryId: number, editor: string, templateId: number): Observable<undefined>;
64
- static ɵfac: i0.ɵɵFactoryDeclaration<ScConfiguratorService, [null, { optional: true; }, null, null, null]>;
71
+ /**
72
+ * Выполняет расчет, через указанный конфигуратор с переданными параметрами.
73
+ *
74
+ * @param categoryIdOrSlug Идентификатор или slug категории товаров.
75
+ * @param editor Название конфигуратора.
76
+ * @param params Параметры запроса расчета конфигуратора.
77
+ */
78
+ calculate$(categoryIdOrSlug: string | number, editor: string, params: ISandwichCalculate): Observable<ScIConfiguratorCalculateResult>;
79
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScConfiguratorService, never>;
65
80
  static ɵprov: i0.ɵɵInjectableDeclaration<ScConfiguratorService>;
66
81
  }
@@ -1,4 +1,8 @@
1
1
  export * from './sc-i-configurator-base';
2
+ export * from './sc-i-configurator-calculate-result';
3
+ export * from './sc-i-configurator-calculate-sheet';
2
4
  export * from './sc-i-configurator-search-product-base';
3
5
  export * from './sc-i-configurator-settings-base';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9kdG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLWktY29uZmlndXJhdG9yLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNvbmZpZ3VyYXRvci1zZWFyY2gtcHJvZHVjdC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3Itc2V0dGluZ3MtYmFzZSc7XG4iXX0=
6
+ export * from './sc-i-sandwich-calculate';
7
+ export * from './sc-i-sandwich-calculate-item';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9kdG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3ItYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWktY29uZmlndXJhdG9yLWNhbGN1bGF0ZS1yZXN1bHQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNvbmZpZ3VyYXRvci1jYWxjdWxhdGUtc2hlZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNvbmZpZ3VyYXRvci1zZWFyY2gtcHJvZHVjdC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3Itc2V0dGluZ3MtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWktc2FuZHdpY2gtY2FsY3VsYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUtaXRlbSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb25maWd1cmF0b3ItY2FsY3VsYXRlLXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlndXJhdG9yL2R0by9zYy1pLWNvbmZpZ3VyYXRvci1jYWxjdWxhdGUtcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY0lDb25maWd1cmF0b3JDYWxjdWxhdGVTaGVldCB9IGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3ItY2FsY3VsYXRlLXNoZWV0JztcblxuLyoqXG4gKiDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAg0YDQsNGB0L/QuNC70LAg0YHRjdC90LTQstC40Yct0L/QsNC90LXQu9C10LkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0IHtcbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgNCw0YHRh9C10YLQsC5cbiAgICAgKi9cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LvQuNGB0YLQvtCyLlxuICAgICAqL1xuICAgIHF1YW50aXR5OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LTQsNC90L3Ri9GFINC+INC70LjRgdGC0LDRhS5cbiAgICAgKi9cbiAgICBzaGVldHM6IFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVNoZWV0W107XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb25maWd1cmF0b3ItY2FsY3VsYXRlLXNoZWV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb25maWd1cmF0b3IvZHRvL3NjLWktY29uZmlndXJhdG9yLWNhbGN1bGF0ZS1zaGVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQlNCw0L3QvdGL0LUg0L4g0LvQuNGB0YLQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDRgNCw0YHRh9C10YLQsCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lDb25maWd1cmF0b3JDYWxjdWxhdGVTaGVldCB7XG4gICAgLyoqXG4gICAgICog0J/RgNC+0YbQtdC90YIg0LfQsNC/0L7Qu9C90LXQvdC40Y8g0LvQuNGB0YLQsC5cbiAgICAgKi9cbiAgICBmaWxsZWRQZXJjZW50OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlndXJhdG9yL2R0by9zYy1pLXNhbmR3aWNoLWNhbGN1bGF0ZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCU0LDQvdC90YvQtSDQuNC30LTQtdC70LjRjyDQtNC70Y8g0YDQsNGB0YfQtdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAg0YDQsNGB0L/QuNC70LAg0YHRjdC90LTQstC40Yct0L/QsNC90LXQu9C10LkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNhbmR3aWNoQ2FsY3VsYXRlSXRlbSB7XG4gICAgLyoqXG4gICAgICog0KjQuNGA0LjQvdCwINC40LfQtNC10LvQuNGPLCDQvNC8LlxuICAgICAqL1xuICAgIHdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQlNC70LjQvdCwINC40LfQtNC10LvQuNGPLCDQvNC8LlxuICAgICAqL1xuICAgIGxlbmd0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LjQt9C00LXQu9C40LkuXG4gICAgICovXG4gICAgcXVhbnRpdHk6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9kdG8vc2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTYW5kd2ljaENhbGN1bGF0ZUl0ZW0gfSBmcm9tICcuL3NjLWktc2FuZHdpY2gtY2FsY3VsYXRlLWl0ZW0nO1xuXG4vKipcbiAqINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgNCw0YHRh9C10YLQsCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsCDRgNCw0YHQv9C40LvQsCDRgdGN0L3QtNCy0LjRhy3Qv9Cw0L3QtdC70LXQuS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FuZHdpY2hDYWxjdWxhdGUge1xuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC/0YDQvtC00YPQutGC0LAuXG4gICAgICovXG4gICAgcHJvZHVjdElkOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QsNGA0LDQvNC10YLRgNC+0LIg0LjQt9C00LXQu9C40LkuXG4gICAgICovXG4gICAgaXRlbXM6IElTYW5kd2ljaENhbGN1bGF0ZUl0ZW1bXTtcbn1cbiJdfQ==
@@ -1,29 +1,39 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
2
3
  import { map, of, tap } from 'rxjs';
3
- import { ScProduct } from '../../catalog';
4
+ import { ScCatalogService, ScProduct } from '../../catalog';
5
+ import { ScConvertersService } from '../../converters/services/sc-converters.service';
4
6
  import { SC_CONFIGURATOR_COMPONENTS, SC_CONFIGURATOR_SETTINGS, SC_URLS } from '../../tokens';
5
7
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- import * as i2 from "../../catalog";
8
8
  /**
9
9
  * Сервис для работы с конфигуратором.
10
10
  */
11
11
  export class ScConfiguratorService {
12
- /**
13
- * Инициализирует экземпляр класса {@link ScConfiguratorService}.
14
- *
15
- * @param configuratorComponents Список компонентов конфигураторов по их названию.
16
- * @param configuratorSettings Список моделей настроек конфигураторов по их названию.
17
- * @param http HTTP-клиент.
18
- * @param urls Список ссылок на разделы backend'a.
19
- * @param catalogService Сервис для работы с каталогом.
20
- */
21
- constructor(configuratorComponents, configuratorSettings, http, urls, catalogService) {
22
- this.configuratorComponents = configuratorComponents;
23
- this.configuratorSettings = configuratorSettings;
24
- this.http = http;
25
- this.urls = urls;
26
- this.catalogService = catalogService;
12
+ constructor() {
13
+ /**
14
+ * Список компонентов конфигураторов по их названию.
15
+ */
16
+ this.configuratorComponents = inject(SC_CONFIGURATOR_COMPONENTS);
17
+ /**
18
+ * Список моделей настроек конфигураторов по их названию.
19
+ */
20
+ this.configuratorSettings = inject(SC_CONFIGURATOR_SETTINGS, { optional: true }) ?? undefined;
21
+ /**
22
+ * HTTP-клиент.
23
+ */
24
+ this.http = inject(HttpClient);
25
+ /**
26
+ * Список ссылок на разделы backend'a.
27
+ */
28
+ this.urls = inject(SC_URLS);
29
+ /**
30
+ * Сервис для работы с каталогом.
31
+ */
32
+ this.catalogService = inject(ScCatalogService);
33
+ /**
34
+ * Сервис конвертации данных.
35
+ */
36
+ this.convertersService = inject(ScConvertersService);
27
37
  }
28
38
  /**
29
39
  * Возвращает признак того, что конфигуратор с указанным названием существует и реализован.
@@ -85,7 +95,19 @@ export class ScConfiguratorService {
85
95
  removeTemplate$(categoryId, editor, templateId) {
86
96
  return this.http.delete(`${this.urls.apiUrl}/catalog/categories/${categoryId}/configurators/${editor}/template/${templateId}`);
87
97
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [{ token: SC_CONFIGURATOR_COMPONENTS }, { token: SC_CONFIGURATOR_SETTINGS, optional: true }, { token: i1.HttpClient }, { token: SC_URLS }, { token: i2.ScCatalogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
98
+ /**
99
+ * Выполняет расчет, через указанный конфигуратор с переданными параметрами.
100
+ *
101
+ * @param categoryIdOrSlug Идентификатор или slug категории товаров.
102
+ * @param editor Название конфигуратора.
103
+ * @param params Параметры запроса расчета конфигуратора.
104
+ */
105
+ calculate$(categoryIdOrSlug, editor, params) {
106
+ return this.http.get(`${this.urls.apiUrl}/catalog/categories/${categoryIdOrSlug}/configurators/${editor}/calculate`, {
107
+ params: this.convertersService.toHttpParams({ ...params }, { nonNullable: true }),
108
+ });
109
+ }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
89
111
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, providedIn: 'root' }); }
90
112
  }
91
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, decorators: [{
@@ -93,16 +115,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
93
115
  args: [{
94
116
  providedIn: 'root',
95
117
  }]
96
- }], ctorParameters: () => [{ type: undefined, decorators: [{
97
- type: Inject,
98
- args: [SC_CONFIGURATOR_COMPONENTS]
99
- }] }, { type: undefined, decorators: [{
100
- type: Optional
101
- }, {
102
- type: Inject,
103
- args: [SC_CONFIGURATOR_SETTINGS]
104
- }] }, { type: i1.HttpClient }, { type: undefined, decorators: [{
105
- type: Inject,
106
- args: [SC_URLS]
107
- }] }, { type: i2.ScCatalogService }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uZmlndXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9zZXJ2aWNlcy9zYy1jb25maWd1cmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBbUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFJN0Y7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBQzlCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDeUQsc0JBQXdELEVBQzlDLG9CQUEwRSxFQUN4SCxJQUFnQixFQUNDLElBQWEsRUFDOUIsY0FBZ0M7UUFKSSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWtDO1FBQzlDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0Q7UUFDeEgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO0lBQ2xELENBQUM7SUFFSjs7OztPQUlHO0lBQ0ksb0JBQW9CLENBQUMsSUFBWTtRQUNwQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxnQkFBaUMsRUFBRSxNQUFjO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUxRSxJQUFJLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSx1QkFBdUIsZ0JBQWdCLGtCQUFrQixNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7UUFDakosNERBQTREO1FBQzVELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ2xKLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxRQUFRLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDO1lBQzdDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxnQkFBaUMsRUFBRSxNQUFjLEVBQUUsTUFBa0I7UUFDcEYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sdUJBQXVCLGdCQUFnQixrQkFBa0IsTUFBTSxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDcEksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw2RUFBNkU7SUFDdEUsYUFBYSxDQUFJLFVBQWtCLEVBQUUsTUFBYyxFQUFFLFdBQWM7UUFDdEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSx1QkFBdUIsVUFBVSxrQkFBa0IsTUFBTSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0ksQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWUsQ0FBQyxVQUFrQixFQUFFLE1BQWMsRUFBRSxVQUFrQjtRQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLHVCQUF1QixVQUFVLGtCQUFrQixNQUFNLGFBQWEsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM5SSxDQUFDOytHQXJGUSxxQkFBcUIsa0JBV2xCLDBCQUEwQixhQUNkLHdCQUF3Qix1REFFcEMsT0FBTzttSEFkVixxQkFBcUIsY0FGbEIsTUFBTTs7NEZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBWVEsTUFBTTsyQkFBQywwQkFBMEI7OzBCQUNqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBRTNDLE1BQU07MkJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSwgU2NJUHJvZHVjdERUTywgU2NQcm9kdWN0IH0gZnJvbSAnLi4vLi4vY2F0YWxvZyc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNDX0NPTkZJR1VSQVRPUl9DT01QT05FTlRTLCBTQ19DT05GSUdVUkFUT1JfU0VUVElOR1MsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NJQ29uZmlndXJhdG9yQmFzZSwgU2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlIH0gZnJvbSAnLi4vZHRvJztcbmltcG9ydCB7IFNjVHlwZUJ5S2V5IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNC+0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29uZmlndXJhdG9yU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NvbmZpZ3VyYXRvclNlcnZpY2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZ3VyYXRvckNvbXBvbmVudHMg0KHQv9C40YHQvtC6INC60L7QvNC/0L7QvdC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0L7QsiDQv9C+INC40YUg0L3QsNC30LLQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gY29uZmlndXJhdG9yU2V0dGluZ3Mg0KHQv9C40YHQvtC6INC80L7QtNC10LvQtdC5INC90LDRgdGC0YDQvtC10Log0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0L7QsiDQv9C+INC40YUg0L3QsNC30LLQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gaHR0cCBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZCdhLlxuICAgICAqIEBwYXJhbSBjYXRhbG9nU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNDX0NPTkZJR1VSQVRPUl9DT01QT05FTlRTKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRvckNvbXBvbmVudHM6IFNjVHlwZUJ5S2V5PFNjSUNvbmZpZ3VyYXRvckJhc2U+LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNDX0NPTkZJR1VSQVRPUl9TRVRUSU5HUykgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0b3JTZXR0aW5nczogU2NUeXBlQnlLZXk8U2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlPiB8IHVuZGVmaW5lZCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGAINGBINGD0LrQsNC30LDQvdC90YvQvCDQvdCw0LfQstCw0L3QuNC10Lwg0YHRg9GJ0LXRgdGC0LLRg9C10YIg0Lgg0YDQtdCw0LvQuNC30L7QstCw0L0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSDQndCw0LfQstCw0L3QuNC1INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NvbmZpZ3VyYXRvckV4aXN0cyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uZmlndXJhdG9yQ29tcG9uZW50cykuaW5jbHVkZXMobmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L3QsNGB0YLRgNC+0LnQutC4INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKiBAcGFyYW0gZWRpdG9yINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFNldHRpbmdzJChjYXRlZ29yeUlkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGVkaXRvcjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5jYXRhbG9nU2VydmljZS5nZXRDYXRlZ29yeUZyb21NYXAoY2F0ZWdvcnlJZE9yU2x1Zyk7XG5cbiAgICAgICAgaWYgKGNhdGVnb3J5Py5jb25maWd1cmF0b3JTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGNhdGVnb3J5LmNvbmZpZ3VyYXRvclNldHRpbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSUNvbmZpZ3VyYXRvclNldHRpbmdzQmFzZT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1Z30vY29uZmlndXJhdG9ycy8ke2VkaXRvcn0vc2V0dGluZ3NgKS5waXBlKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBtYXAoKHNldHRpbmdzKSA9PiAodGhpcy5jb25maWd1cmF0b3JTZXR0aW5ncyAmJiBlZGl0b3IgaW4gdGhpcy5jb25maWd1cmF0b3JTZXR0aW5ncyA/IG5ldyB0aGlzLmNvbmZpZ3VyYXRvclNldHRpbmdzW2VkaXRvcl0oc2V0dGluZ3MpIDogc2V0dGluZ3MpKSxcbiAgICAgICAgICAgIHRhcCgoc2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkuY29uZmlndXJhdG9yU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC/0YDQvtC00YPQutGC0LUsINC/0L4g0YPQutCw0LfQsNC90L3Ri9C8INC/0LDRgNCw0LzQtdGC0YDQsNC8INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsCDQtNC70Y8g0L/QvtC40YHQutCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdCQoY2F0ZWdvcnlJZE9yU2x1Zzogc3RyaW5nIHwgbnVtYmVyLCBlZGl0b3I6IHN0cmluZywgcGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxTY0lQcm9kdWN0RFRPPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkT3JTbHVnfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS9wcm9kdWN0YCwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChwcm9kdWN0RFRPKSA9PiBuZXcgU2NQcm9kdWN0KHByb2R1Y3REVE8pKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40Lkg0YjQsNCx0LvQvtC9INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKiBAcGFyYW0gZWRpdG9yINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICogQHBhcmFtIG5ld1RlbXBsYXRlINCf0LDRgNCw0LzQtdGC0YDRiyDRiNCw0LHQu9C+0L3QsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuICAgIHB1YmxpYyBzYXZlVGVtcGxhdGUkPFQ+KGNhdGVnb3J5SWQ6IG51bWJlciwgZWRpdG9yOiBzdHJpbmcsIG5ld1RlbXBsYXRlOiBUKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZH0vY29uZmlndXJhdG9ycy8ke2VkaXRvcn0vdGVtcGxhdGVgLCBuZXdUZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40Lkg0YjQsNCx0LvQvtC9INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKiBAcGFyYW0gZWRpdG9yINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICogQHBhcmFtIHRlbXBsYXRlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INGI0LDQsdC70L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVUZW1wbGF0ZSQoY2F0ZWdvcnlJZDogbnVtYmVyLCBlZGl0b3I6IHN0cmluZywgdGVtcGxhdGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS90ZW1wbGF0ZS8ke3RlbXBsYXRlSWR9YCk7XG4gICAgfVxufVxuIl19
118
+ }] });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uZmlndXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9zZXJ2aWNlcy9zYy1jb25maWd1cmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBSTdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUhsQztRQUlJOztXQUVHO1FBQ2MsMkJBQXNCLEdBQXFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRS9HOztXQUVHO1FBQ2MseUJBQW9CLEdBQXlELE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUVoSzs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsbUJBQWMsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0U7O1dBRUc7UUFDYyxzQkFBaUIsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixD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UCxDQUFDOytHQS9HUSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UsIFNjSVByb2R1Y3REVE8sIFNjUHJvZHVjdCB9IGZyb20gJy4uLy4uL2NhdGFsb2cnO1xuaW1wb3J0IHsgU2NJVXJscyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTY0NvbnZlcnRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udmVydGVycy9zZXJ2aWNlcy9zYy1jb252ZXJ0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0NfQ09ORklHVVJBVE9SX0NPTVBPTkVOVFMsIFNDX0NPTkZJR1VSQVRPUl9TRVRUSU5HUywgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBJU2FuZHdpY2hDYWxjdWxhdGUsIFNjSUNvbmZpZ3VyYXRvckJhc2UsIFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdCwgU2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlIH0gZnJvbSAnLi4vZHRvJztcbmltcG9ydCB7IFNjVHlwZUJ5S2V5IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNC+0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29uZmlndXJhdG9yU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC60L7QvNC/0L7QvdC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0L7QsiDQv9C+INC40YUg0L3QsNC30LLQsNC90LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRvckNvbXBvbmVudHM6IFNjVHlwZUJ5S2V5PFNjSUNvbmZpZ3VyYXRvckJhc2U+ID0gaW5qZWN0KFNDX0NPTkZJR1VSQVRPUl9DT01QT05FTlRTKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQvNC+0LTQtdC70LXQuSDQvdCw0YHRgtGA0L7QtdC6INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNC+0LIg0L/QviDQuNGFINC90LDQt9Cy0LDQvdC40Y4uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0b3JTZXR0aW5nczogU2NUeXBlQnlLZXk8U2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlPiB8IHVuZGVmaW5lZCA9IGluamVjdChTQ19DT05GSUdVUkFUT1JfU0VUVElOR1MsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogSFRUUC3QutC70LjQtdC90YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udmVydGVyc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0YEg0YPQutCw0LfQsNC90L3Ri9C8INC90LDQt9Cy0LDQvdC40LXQvCDRgdGD0YnQtdGB0YLQstGD0LXRgiDQuCDRgNC10LDQu9C40LfQvtCy0LDQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGlzQ29uZmlndXJhdG9yRXhpc3RzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb25maWd1cmF0b3JDb21wb25lbnRzKS5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvdCw0YHRgtGA0L7QudC60Lgg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2V0dGluZ3MkKGNhdGVnb3J5SWRPclNsdWc6IHN0cmluZyB8IG51bWJlciwgZWRpdG9yOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldENhdGVnb3J5RnJvbU1hcChjYXRlZ29yeUlkT3JTbHVnKTtcblxuICAgICAgICBpZiAoY2F0ZWdvcnk/LmNvbmZpZ3VyYXRvclNldHRpbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoY2F0ZWdvcnkuY29uZmlndXJhdG9yU2V0dGluZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkT3JTbHVnfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS9zZXR0aW5nc2ApLnBpcGUoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgIG1hcCgoc2V0dGluZ3MpID0+ICh0aGlzLmNvbmZpZ3VyYXRvclNldHRpbmdzICYmIGVkaXRvciBpbiB0aGlzLmNvbmZpZ3VyYXRvclNldHRpbmdzID8gbmV3IHRoaXMuY29uZmlndXJhdG9yU2V0dGluZ3NbZWRpdG9yXShzZXR0aW5ncykgOiBzZXR0aW5ncykpLFxuICAgICAgICAgICAgdGFwKChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5jb25maWd1cmF0b3JTZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LjQvdGE0L7RgNC80LDRhtC40Y4g0L4g0L/RgNC+0LTRg9C60YLQtSwg0L/QviDRg9C60LDQt9Cw0L3QvdGL0Lwg0L/QsNGA0LDQvNC10YLRgNCw0Lwg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICogQHBhcmFtIGVkaXRvciDQndCw0LfQstCw0L3QuNC1INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwINC00LvRjyDQv9C+0LjRgdC60LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0JChjYXRlZ29yeUlkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGVkaXRvcjogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSVByb2R1Y3REVE8+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWRPclNsdWd9L2NvbmZpZ3VyYXRvcnMvJHtlZGl0b3J9L3Byb2R1Y3RgLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHByb2R1Y3REVE8pID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdERUTykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDRiNCw0LHQu9C+0L0g0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0Lgg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gbmV3VGVtcGxhdGUg0J/QsNGA0LDQvNC10YLRgNGLINGI0LDQsdC70L7QvdCwINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzXG4gICAgcHVibGljIHNhdmVUZW1wbGF0ZSQ8VD4oY2F0ZWdvcnlJZDogbnVtYmVyLCBlZGl0b3I6IHN0cmluZywgbmV3VGVtcGxhdGU6IFQpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS90ZW1wbGF0ZWAsIG5ld1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDRiNCw0LHQu9C+0L0g0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0Lgg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gdGVtcGxhdGVJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0Lgg0YjQsNCx0LvQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVRlbXBsYXRlJChjYXRlZ29yeUlkOiBudW1iZXIsIGVkaXRvcjogc3RyaW5nLCB0ZW1wbGF0ZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWR9L2NvbmZpZ3VyYXRvcnMvJHtlZGl0b3J9L3RlbXBsYXRlLyR7dGVtcGxhdGVJZH1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0YDQsNGB0YfQtdGCLCDRh9C10YDQtdC3INGD0LrQsNC30LDQvdC90YvQuSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0YEg0L/QtdGA0LXQtNCw0L3QvdGL0LzQuCDQv9Cw0YDQsNC80LXRgtGA0LDQvNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgNCw0YHRh9C10YLQsCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlJChjYXRlZ29yeUlkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGVkaXRvcjogc3RyaW5nLCBwYXJhbXM6IElTYW5kd2ljaENhbGN1bGF0ZSk6IE9ic2VydmFibGU8U2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1Z30vY29uZmlndXJhdG9ycy8ke2VkaXRvcn0vY2FsY3VsYXRlYCwge1xuICAgICAgICAgICAgcGFyYW1zOiB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnRvSHR0cFBhcmFtcyh7IC4uLnBhcmFtcyB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -3427,21 +3427,31 @@ var ScRouteKeys;
3427
3427
  * Сервис для работы с конфигуратором.
3428
3428
  */
3429
3429
  class ScConfiguratorService {
3430
- /**
3431
- * Инициализирует экземпляр класса {@link ScConfiguratorService}.
3432
- *
3433
- * @param configuratorComponents Список компонентов конфигураторов по их названию.
3434
- * @param configuratorSettings Список моделей настроек конфигураторов по их названию.
3435
- * @param http HTTP-клиент.
3436
- * @param urls Список ссылок на разделы backend'a.
3437
- * @param catalogService Сервис для работы с каталогом.
3438
- */
3439
- constructor(configuratorComponents, configuratorSettings, http, urls, catalogService) {
3440
- this.configuratorComponents = configuratorComponents;
3441
- this.configuratorSettings = configuratorSettings;
3442
- this.http = http;
3443
- this.urls = urls;
3444
- this.catalogService = catalogService;
3430
+ constructor() {
3431
+ /**
3432
+ * Список компонентов конфигураторов по их названию.
3433
+ */
3434
+ this.configuratorComponents = inject(SC_CONFIGURATOR_COMPONENTS);
3435
+ /**
3436
+ * Список моделей настроек конфигураторов по их названию.
3437
+ */
3438
+ this.configuratorSettings = inject(SC_CONFIGURATOR_SETTINGS, { optional: true }) ?? undefined;
3439
+ /**
3440
+ * HTTP-клиент.
3441
+ */
3442
+ this.http = inject(HttpClient);
3443
+ /**
3444
+ * Список ссылок на разделы backend'a.
3445
+ */
3446
+ this.urls = inject(SC_URLS);
3447
+ /**
3448
+ * Сервис для работы с каталогом.
3449
+ */
3450
+ this.catalogService = inject(ScCatalogService);
3451
+ /**
3452
+ * Сервис конвертации данных.
3453
+ */
3454
+ this.convertersService = inject(ScConvertersService);
3445
3455
  }
3446
3456
  /**
3447
3457
  * Возвращает признак того, что конфигуратор с указанным названием существует и реализован.
@@ -3503,7 +3513,19 @@ class ScConfiguratorService {
3503
3513
  removeTemplate$(categoryId, editor, templateId) {
3504
3514
  return this.http.delete(`${this.urls.apiUrl}/catalog/categories/${categoryId}/configurators/${editor}/template/${templateId}`);
3505
3515
  }
3506
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [{ token: SC_CONFIGURATOR_COMPONENTS }, { token: SC_CONFIGURATOR_SETTINGS, optional: true }, { token: i1$1.HttpClient }, { token: SC_URLS }, { token: ScCatalogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3516
+ /**
3517
+ * Выполняет расчет, через указанный конфигуратор с переданными параметрами.
3518
+ *
3519
+ * @param categoryIdOrSlug Идентификатор или slug категории товаров.
3520
+ * @param editor Название конфигуратора.
3521
+ * @param params Параметры запроса расчета конфигуратора.
3522
+ */
3523
+ calculate$(categoryIdOrSlug, editor, params) {
3524
+ return this.http.get(`${this.urls.apiUrl}/catalog/categories/${categoryIdOrSlug}/configurators/${editor}/calculate`, {
3525
+ params: this.convertersService.toHttpParams({ ...params }, { nonNullable: true }),
3526
+ });
3527
+ }
3528
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3507
3529
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, providedIn: 'root' }); }
3508
3530
  }
3509
3531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, decorators: [{
@@ -3511,18 +3533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
3511
3533
  args: [{
3512
3534
  providedIn: 'root',
3513
3535
  }]
3514
- }], ctorParameters: () => [{ type: undefined, decorators: [{
3515
- type: Inject,
3516
- args: [SC_CONFIGURATOR_COMPONENTS]
3517
- }] }, { type: undefined, decorators: [{
3518
- type: Optional
3519
- }, {
3520
- type: Inject,
3521
- args: [SC_CONFIGURATOR_SETTINGS]
3522
- }] }, { type: i1$1.HttpClient }, { type: undefined, decorators: [{
3523
- type: Inject,
3524
- args: [SC_URLS]
3525
- }] }, { type: ScCatalogService }] });
3536
+ }] });
3526
3537
 
3527
3538
  /**
3528
3539
  * Перечисление, представляющее различные формы обратной связи.