@veloceapps/sdk 3.0.5 → 3.0.6

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.
Files changed (40) hide show
  1. package/bundles/veloce-sdk-cms.umd.js +157 -18
  2. package/bundles/veloce-sdk-cms.umd.js.map +1 -1
  3. package/bundles/veloce-sdk-runtime.umd.js +3 -0
  4. package/bundles/veloce-sdk-runtime.umd.js.map +1 -1
  5. package/bundles/veloce-sdk.umd.js +202 -122
  6. package/bundles/veloce-sdk.umd.js.map +1 -1
  7. package/cms/modules/flow-configuration/index.d.ts +2 -0
  8. package/cms/modules/flow-configuration/services/flow-configuration.service.d.ts +10 -1
  9. package/cms/modules/flow-configuration/services/flow-update.service.d.ts +13 -0
  10. package/cms/modules/flow-configuration/types/update.types.d.ts +12 -0
  11. package/cms/utils/line-item.utils.d.ts +1 -0
  12. package/esm2015/cms/modules/flow-configuration/flow-configuration.module.js +4 -3
  13. package/esm2015/cms/modules/flow-configuration/index.js +3 -1
  14. package/esm2015/cms/modules/flow-configuration/services/flow-configuration.service.js +31 -12
  15. package/esm2015/cms/modules/flow-configuration/services/flow-update.service.js +97 -0
  16. package/esm2015/cms/modules/flow-configuration/types/update.types.js +2 -0
  17. package/esm2015/cms/utils/line-item.utils.js +14 -4
  18. package/esm2015/runtime/execution/directives/vl-ramp.directive.js +1 -1
  19. package/esm2015/runtime/services/quote.service.js +4 -1
  20. package/esm2015/src/components/header/cart-overlay/cart-overlay.component.js +60 -0
  21. package/esm2015/src/components/header/cart-overlay/cart-overlay.module.js +21 -0
  22. package/esm2015/src/components/header/header.component.js +16 -10
  23. package/esm2015/src/components/header/header.module.js +6 -4
  24. package/esm2015/src/components/header/header.types.js +1 -1
  25. package/esm2015/src/pages/debug/debug.component.js +16 -11
  26. package/fesm2015/veloce-sdk-cms.js +142 -18
  27. package/fesm2015/veloce-sdk-cms.js.map +1 -1
  28. package/fesm2015/veloce-sdk-runtime.js +3 -0
  29. package/fesm2015/veloce-sdk-runtime.js.map +1 -1
  30. package/fesm2015/veloce-sdk.js +133 -62
  31. package/fesm2015/veloce-sdk.js.map +1 -1
  32. package/package.json +1 -1
  33. package/runtime/execution/directives/vl-ramp.directive.d.ts +1 -1
  34. package/runtime/services/quote.service.d.ts +1 -0
  35. package/src/components/header/cart-overlay/cart-overlay.component.d.ts +21 -0
  36. package/src/components/header/cart-overlay/cart-overlay.module.d.ts +11 -0
  37. package/src/components/header/header.component.d.ts +5 -2
  38. package/src/components/header/header.module.d.ts +3 -1
  39. package/src/components/header/header.types.d.ts +1 -0
  40. package/src/pages/debug/debug.component.d.ts +5 -2
@@ -4,22 +4,31 @@ import { ContextService } from '@veloce/sdk/runtime';
4
4
  import { Dictionary } from 'lodash';
5
5
  import { MessageService } from 'primeng/api';
6
6
  import { Observable } from 'rxjs';
7
+ import { FlowUpdateParams } from '../types/update.types';
8
+ import { FlowUpdateService } from './flow-update.service';
7
9
  import * as i0 from "@angular/core";
8
10
  export declare class FlowConfigurationService {
9
11
  private priceApiService;
10
12
  private contextService;
11
13
  private messageService;
14
+ private updateService;
12
15
  private lineItems;
13
16
  private charges;
14
- constructor(priceApiService: PriceApiService, contextService: ContextService, messageService: MessageService);
17
+ constructor(priceApiService: PriceApiService, contextService: ContextService, messageService: MessageService, updateService: FlowUpdateService);
18
+ reset(): void;
15
19
  calculate$(currentState: LineItem[]): Observable<PriceSummary>;
16
20
  calculate(currentState: LineItem[]): void;
21
+ update$(params: FlowUpdateParams): Observable<PriceSummary>;
22
+ update(params: FlowUpdateParams): void;
23
+ delete$(id: string): Observable<PriceSummary>;
24
+ delete(id: string): void;
17
25
  get(): Observable<LineItem[]>;
18
26
  getSnapshot(): LineItem[];
19
27
  get charges$(): Observable<Dictionary<PricePlanCharge>>;
20
28
  get chargesSnapshot(): Dictionary<PricePlanCharge>;
21
29
  get contextSnapshot(): ConfigurationContext | null;
22
30
  get context$(): Observable<ConfigurationContext | null>;
31
+ private handleError;
23
32
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowConfigurationService, never>;
24
33
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowConfigurationService>;
25
34
  }
@@ -0,0 +1,13 @@
1
+ import { LineItem } from '@veloce/core';
2
+ import { FlowUpdateParams } from '../types/update.types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FlowUpdateService {
5
+ update(rootLineItem: LineItem, params: FlowUpdateParams): LineItem;
6
+ delete(lineItems: LineItem[], id: string): LineItem[];
7
+ private updateQty;
8
+ private updateStartDate;
9
+ private updateEndDate;
10
+ private updatePriceAdjustment;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowUpdateService, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<FlowUpdateService>;
13
+ }
@@ -0,0 +1,12 @@
1
+ export declare type FlowUpdateDataType = 'LINEITEM' | 'CHARGE' | 'GROUP_CHARGE';
2
+ export declare type FlowUpdateAttributeType = 'QTY' | 'START_DATE' | 'END_DATE' | 'PRICE_ADJUSTMENT';
3
+ export interface FlowUpdateParams {
4
+ id: string;
5
+ dataType: FlowUpdateDataType;
6
+ attributeType: FlowUpdateAttributeType;
7
+ newValue: any;
8
+ }
9
+ export interface FlowDeleteParams {
10
+ id: string;
11
+ dataType: FlowUpdateDataType;
12
+ }
@@ -3,6 +3,7 @@ import { Dictionary } from 'lodash';
3
3
  import { PathBlock } from '../types/configuration.types';
4
4
  export declare const parseBoundPath: (path: string) => PathBlock[];
5
5
  export declare const findLineItem: (id: string, lineItems: LineItem[]) => LineItem | undefined;
6
+ export declare const findLineItemWithComparator: (lineItems: LineItem[], comparator: (li: LineItem) => boolean) => LineItem | undefined;
6
7
  export declare const insertLineItem: (lineItem: LineItem, parentId: string, toInsert: LineItem) => LineItem;
7
8
  export declare const removeLineItem: (lineItem: LineItem, idToRemove: string) => LineItem;
8
9
  export declare const replaceLineItem: (lineItem: LineItem, replaceTo: LineItem) => LineItem;
@@ -2,16 +2,17 @@ import { NgModule } from '@angular/core';
2
2
  import { PriceApiService } from '@veloce/api';
3
3
  import { ContextService } from '@veloce/sdk/runtime';
4
4
  import { FlowConfigurationService } from './services/flow-configuration.service';
5
+ import { FlowUpdateService } from './services/flow-update.service';
5
6
  import * as i0 from "@angular/core";
6
7
  export class FlowConfigurationModule {
7
8
  }
8
9
  FlowConfigurationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
10
  FlowConfigurationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationModule });
10
- FlowConfigurationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationModule, providers: [FlowConfigurationService, ContextService, PriceApiService] });
11
+ FlowConfigurationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationModule, providers: [FlowConfigurationService, FlowUpdateService, ContextService, PriceApiService] });
11
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationModule, decorators: [{
12
13
  type: NgModule,
13
14
  args: [{
14
- providers: [FlowConfigurationService, ContextService, PriceApiService],
15
+ providers: [FlowConfigurationService, FlowUpdateService, ContextService, PriceApiService],
15
16
  }]
16
17
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL2Zsb3ctY29uZmlndXJhdGlvbi9mbG93LWNvbmZpZ3VyYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBS2pGLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QjtzSEFBdkIsdUJBQXVCLGFBRnZCLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQzs0RkFFM0QsdUJBQXVCO2tCQUhuQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUM7aUJBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaWNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9zZGsvcnVudGltZSc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgUHJpY2VBcGlTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRmxvd0NvbmZpZ3VyYXRpb25Nb2R1bGUge31cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL2Zsb3ctY29uZmlndXJhdGlvbi9mbG93LWNvbmZpZ3VyYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBS25FLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QjtzSEFBdkIsdUJBQXVCLGFBRnZCLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQzs0RkFFOUUsdUJBQXVCO2tCQUhuQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUM7aUJBQzFGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaWNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9zZGsvcnVudGltZSc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dVcGRhdGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mbG93LXVwZGF0ZS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBGbG93VXBkYXRlU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFByaWNlQXBpU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dDb25maWd1cmF0aW9uTW9kdWxlIHt9XG4iXX0=
@@ -1,3 +1,5 @@
1
1
  export * from './flow-configuration.module';
2
2
  export * from './services/flow-configuration.service';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mbG93LWNvbmZpZ3VyYXRpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuIl19
3
+ export * from './services/flow-update.service';
4
+ export * from './types/update.types';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmxvdy11cGRhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL3VwZGF0ZS50eXBlcyc7XG4iXX0=
@@ -1,17 +1,23 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { BehaviorSubject, catchError, shareReplay, tap, throwError } from 'rxjs';
2
+ import { BehaviorSubject, catchError, map, of, shareReplay, switchMap, tap, throwError } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@veloce/api";
5
5
  import * as i2 from "@veloce/sdk/runtime";
6
6
  import * as i3 from "primeng/api";
7
+ import * as i4 from "./flow-update.service";
7
8
  export class FlowConfigurationService {
8
- constructor(priceApiService, contextService, messageService) {
9
+ constructor(priceApiService, contextService, messageService, updateService) {
9
10
  this.priceApiService = priceApiService;
10
11
  this.contextService = contextService;
11
12
  this.messageService = messageService;
13
+ this.updateService = updateService;
12
14
  this.lineItems = new BehaviorSubject([]);
13
15
  this.charges = new BehaviorSubject({});
14
16
  }
17
+ reset() {
18
+ this.lineItems.next([]);
19
+ this.charges.next({});
20
+ }
15
21
  calculate$(currentState) {
16
22
  const context = this.contextService.resolve();
17
23
  return this.priceApiService.calculate({ context, currentState }).pipe(tap((result) => {
@@ -20,17 +26,23 @@ export class FlowConfigurationService {
20
26
  if (context) {
21
27
  this.contextService.update({ properties: context.properties });
22
28
  }
23
- }), catchError(error => {
24
- console.error(error);
25
- this.messageService.add({ severity: 'error', summary: error });
26
- // bounce back if configuration call has failed
27
- this.lineItems.next(this.lineItems.value.slice());
28
- return throwError(() => error);
29
- }));
29
+ }), catchError(error => this.handleError(error)));
30
30
  }
31
31
  calculate(currentState) {
32
32
  this.calculate$(currentState).subscribe();
33
33
  }
34
+ update$(params) {
35
+ return of([]).pipe(map(() => this.lineItems.value.map(li => this.updateService.update(li, params))), catchError(error => this.handleError(error)), switchMap(currentState => this.calculate$(currentState)));
36
+ }
37
+ update(params) {
38
+ this.update$(params).subscribe();
39
+ }
40
+ delete$(id) {
41
+ return of([]).pipe(map(() => this.updateService.delete(this.lineItems.value, id)), catchError(error => this.handleError(error)), switchMap(currentState => this.calculate$(currentState)));
42
+ }
43
+ delete(id) {
44
+ this.delete$(id).subscribe();
45
+ }
34
46
  get() {
35
47
  return this.lineItems.asObservable().pipe(shareReplay());
36
48
  }
@@ -49,10 +61,17 @@ export class FlowConfigurationService {
49
61
  get context$() {
50
62
  return this.contextService.resolve$();
51
63
  }
64
+ handleError(error) {
65
+ console.error(error);
66
+ this.messageService.add({ severity: 'error', summary: error });
67
+ // bounce back if configuration call has failed
68
+ this.lineItems.next(this.lineItems.value.slice());
69
+ return throwError(() => error);
70
+ }
52
71
  }
53
- FlowConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.PriceApiService }, { token: i2.ContextService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
72
+ FlowConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.PriceApiService }, { token: i2.ContextService }, { token: i3.MessageService }, { token: i4.FlowUpdateService }], target: i0.ɵɵFactoryTarget.Injectable });
54
73
  FlowConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService });
55
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService, decorators: [{
56
75
  type: Injectable
57
- }], ctorParameters: function () { return [{ type: i1.PriceApiService }, { type: i2.ContextService }, { type: i3.MessageService }]; } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vc2VydmljZXMvZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBYyxXQUFXLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFHN0YsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxZQUNVLGVBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLGNBQThCO1FBRjlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTmhDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBYSxFQUFFLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQThCLEVBQUUsQ0FBQyxDQUFDO0lBTXBFLENBQUM7SUFFSixVQUFVLENBQUMsWUFBd0I7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUU5QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuRSxHQUFHLENBQUMsQ0FBQyxNQUFvQixFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQyxJQUFJLE9BQU8sRUFBRTtnQkFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzthQUNoRTtRQUNILENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUUvRCwrQ0FBK0M7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUVsRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxZQUF3QjtRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxHQUFHO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7O3NIQTVEVSx3QkFBd0I7MEhBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpY2VBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9hcGknO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkNvbnRleHQsIExpbmVJdGVtLCBQcmljZVBsYW5DaGFyZ2UsIFByaWNlU3VtbWFyeSB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL3J1bnRpbWUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBsaW5lSXRlbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExpbmVJdGVtW10+KFtdKTtcbiAgcHJpdmF0ZSBjaGFyZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEaWN0aW9uYXJ5PFByaWNlUGxhbkNoYXJnZT4+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHByaWNlQXBpU2VydmljZTogUHJpY2VBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICApIHt9XG5cbiAgY2FsY3VsYXRlJChjdXJyZW50U3RhdGU6IExpbmVJdGVtW10pOiBPYnNlcnZhYmxlPFByaWNlU3VtbWFyeT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcblxuICAgIHJldHVybiB0aGlzLnByaWNlQXBpU2VydmljZS5jYWxjdWxhdGUoeyBjb250ZXh0LCBjdXJyZW50U3RhdGUgfSkucGlwZShcbiAgICAgIHRhcCgocmVzdWx0OiBQcmljZVN1bW1hcnkpID0+IHtcbiAgICAgICAgdGhpcy5saW5lSXRlbXMubmV4dChyZXN1bHQubGluZUl0ZW1zKTtcbiAgICAgICAgdGhpcy5jaGFyZ2VzLm5leHQocmVzdWx0LmNoYXJnZXMpO1xuXG4gICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoeyBwcm9wZXJ0aWVzOiBjb250ZXh0LnByb3BlcnRpZXMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiBlcnJvciB9KTtcblxuICAgICAgICAvLyBib3VuY2UgYmFjayBpZiBjb25maWd1cmF0aW9uIGNhbGwgaGFzIGZhaWxlZFxuICAgICAgICB0aGlzLmxpbmVJdGVtcy5uZXh0KHRoaXMubGluZUl0ZW1zLnZhbHVlLnNsaWNlKCkpO1xuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBjYWxjdWxhdGUoY3VycmVudFN0YXRlOiBMaW5lSXRlbVtdKTogdm9pZCB7XG4gICAgdGhpcy5jYWxjdWxhdGUkKGN1cnJlbnRTdGF0ZSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KCk6IE9ic2VydmFibGU8TGluZUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLmxpbmVJdGVtcy5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KCkpO1xuICB9XG5cbiAgcHVibGljIGdldFNuYXBzaG90KCk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmxpbmVJdGVtcy52YWx1ZS5zbGljZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFyZ2VzJCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8UHJpY2VQbGFuQ2hhcmdlPj4ge1xuICAgIHJldHVybiB0aGlzLmNoYXJnZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYXJnZXNTbmFwc2hvdCgpOiBEaWN0aW9uYXJ5PFByaWNlUGxhbkNoYXJnZT4ge1xuICAgIHJldHVybiB0aGlzLmNoYXJnZXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHRTbmFwc2hvdCgpOiBDb25maWd1cmF0aW9uQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dCQoKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uQ29udGV4dCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlJCgpO1xuICB9XG59XG4iXX0=
76
+ }], ctorParameters: function () { return [{ type: i1.PriceApiService }, { type: i2.ContextService }, { type: i3.MessageService }, { type: i4.FlowUpdateService }]; } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vc2VydmljZXMvZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBS2pILE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFDVSxlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixjQUE4QixFQUM5QixhQUFnQztRQUhoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFQbEMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBOEIsRUFBRSxDQUFDLENBQUM7SUFPcEUsQ0FBQztJQUVHLEtBQUs7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLFlBQXdCO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFF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YyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUUvRCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDOztzSEE1RlUsd0JBQXdCOzBIQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaWNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Db250ZXh0LCBMaW5lSXRlbSwgUHJpY2VQbGFuQ2hhcmdlLCBQcmljZVN1bW1hcnkgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9ydW50aW1lJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd1VwZGF0ZVBhcmFtcyB9IGZyb20gJy4uL3R5cGVzL3VwZGF0ZS50eXBlcyc7XG5pbXBvcnQgeyBGbG93VXBkYXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy11cGRhdGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGxpbmVJdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGluZUl0ZW1bXT4oW10pO1xuICBwcml2YXRlIGNoYXJnZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpY3Rpb25hcnk8UHJpY2VQbGFuQ2hhcmdlPj4oe30pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcHJpY2VBcGlTZXJ2aWNlOiBQcmljZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGRhdGVTZXJ2aWNlOiBGbG93VXBkYXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICB0aGlzLmxpbmVJdGVtcy5uZXh0KFtdKTtcbiAgICB0aGlzLmNoYXJnZXMubmV4dCh7fSk7XG4gIH1cblxuICBjYWxjdWxhdGUkKGN1cnJlbnRTdGF0ZTogTGluZUl0ZW1bXSk6IE9ic2VydmFibGU8UHJpY2VTdW1tYXJ5PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJpY2VBcGlTZXJ2aWNlLmNhbGN1bGF0ZSh7IGNvbnRleHQsIGN1cnJlbnRTdGF0ZSB9KS5waXBlKFxuICAgICAgdGFwKChyZXN1bHQ6IFByaWNlU3VtbWFyeSkgPT4ge1xuICAgICAgICB0aGlzLmxpbmVJdGVtcy5uZXh0KHJlc3VsdC5saW5lSXRlbXMpO1xuICAgICAgICB0aGlzLmNoYXJnZXMubmV4dChyZXN1bHQuY2hhcmdlcyk7XG5cbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IGNvbnRleHQucHJvcGVydGllcyB9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSxcbiAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlKGN1cnJlbnRTdGF0ZTogTGluZUl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuY2FsY3VsYXRlJChjdXJyZW50U3RhdGUpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdXBkYXRlJChwYXJhbXM6IEZsb3dVcGRhdGVQYXJhbXMpOiBPYnNlcnZhYmxlPFByaWNlU3VtbWFyeT4ge1xuICAgIHJldHVybiBvZihbXSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmxpbmVJdGVtcy52YWx1ZS5tYXAobGkgPT4gdGhpcy51cGRhdGVTZXJ2aWNlLnVwZGF0ZShsaSwgcGFyYW1zKSkpLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSksXG4gICAgICBzd2l0Y2hNYXAoY3VycmVudFN0YXRlID0+IHRoaXMuY2FsY3VsYXRlJChjdXJyZW50U3RhdGUpKSxcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlKHBhcmFtczogRmxvd1VwZGF0ZVBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlJChwYXJhbXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZGVsZXRlJChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcmljZVN1bW1hcnk+IHtcbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy51cGRhdGVTZXJ2aWNlLmRlbGV0ZSh0aGlzLmxpbmVJdGVtcy52YWx1ZSwgaWQpKSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcikpLFxuICAgICAgc3dpdGNoTWFwKGN1cnJlbnRTdGF0ZSA9PiB0aGlzLmNhbGN1bGF0ZSQoY3VycmVudFN0YXRlKSksXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUkKGlkKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGluZUl0ZW1zLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U25hcHNob3QoKTogTGluZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMubGluZUl0ZW1zLnZhbHVlLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYXJnZXMkKCk6IE9ic2VydmFibGU8RGljdGlvbmFyeTxQcmljZVBsYW5DaGFyZ2U+PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhcmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8UHJpY2VQbGFuQ2hhcmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhcmdlcy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dFNuYXBzaG90KCk6IENvbmZpZ3VyYXRpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0JCgpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25Db250ZXh0IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IGVycm9yIH0pO1xuXG4gICAgLy8gYm91bmNlIGJhY2sgaWYgY29uZmlndXJhdGlvbiBjYWxsIGhhcyBmYWlsZWRcbiAgICB0aGlzLmxpbmVJdGVtcy5uZXh0KHRoaXMubGluZUl0ZW1zLnZhbHVlLnNsaWNlKCkpO1xuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,97 @@
1
+ import { Injectable } from '@angular/core';
2
+ import moment from 'moment';
3
+ import { LineItemWorker } from '../../../types/line-item.types';
4
+ import { findLineItem, findLineItemWithComparator } from '../../../utils/line-item.utils';
5
+ import * as i0 from "@angular/core";
6
+ export class FlowUpdateService {
7
+ update(rootLineItem, params) {
8
+ switch (params.attributeType) {
9
+ case 'QTY':
10
+ return this.updateQty(rootLineItem, params);
11
+ case 'START_DATE':
12
+ return this.updateStartDate(rootLineItem, params);
13
+ case 'END_DATE':
14
+ return this.updateEndDate(rootLineItem, params);
15
+ case 'PRICE_ADJUSTMENT':
16
+ return this.updatePriceAdjustment(rootLineItem, params);
17
+ default:
18
+ return rootLineItem;
19
+ }
20
+ }
21
+ delete(lineItems, id) {
22
+ const filtered = lineItems.filter(lineItem => lineItem.id !== id);
23
+ return filtered.map(lineItem => new LineItemWorker(lineItem).remove(id).li);
24
+ }
25
+ updateQty(rootLineItem, params) {
26
+ // change quantity allowed only for lineItem
27
+ if (params.dataType !== 'LINEITEM') {
28
+ return rootLineItem;
29
+ }
30
+ const lineItem = findLineItem(params.id, [rootLineItem]);
31
+ if (!lineItem) {
32
+ return rootLineItem;
33
+ }
34
+ if (lineItem.id !== rootLineItem.id) {
35
+ throw new Error('Quantity can be changed only for root product');
36
+ }
37
+ const updated = new LineItemWorker(rootLineItem).replace(Object.assign(Object.assign({}, lineItem), { qty: params.newValue }));
38
+ return updated.li;
39
+ }
40
+ updateStartDate(rootLineItem, params) {
41
+ const lineItem = findLineItem(params.id, [rootLineItem]);
42
+ if (!lineItem) {
43
+ return rootLineItem;
44
+ }
45
+ const updated = new LineItemWorker(rootLineItem).replace(Object.assign(Object.assign({}, lineItem), { effectiveDate: moment(params.newValue).format('YYYY-MM-DD') }));
46
+ return updated.li;
47
+ }
48
+ updateEndDate(rootLineItem, params) {
49
+ const lineItem = findLineItem(params.id, [rootLineItem]);
50
+ if (!lineItem) {
51
+ return rootLineItem;
52
+ }
53
+ const updated = new LineItemWorker(rootLineItem).replace(Object.assign(Object.assign({}, lineItem), { endDate: moment(params.newValue).format('YYYY-MM-DD') }));
54
+ return updated.li;
55
+ }
56
+ updatePriceAdjustment(rootLineItem, params) {
57
+ const comparator = params.dataType === 'LINEITEM'
58
+ ? (li) => li.id === params.id
59
+ : params.dataType === 'CHARGE'
60
+ ? (li) => li.chargeItems.some(({ id }) => id === params.id)
61
+ : params.dataType === 'GROUP_CHARGE'
62
+ ? (li) => li.chargeGroupItems.some(({ id }) => id === params.id)
63
+ : undefined;
64
+ if (!comparator) {
65
+ return rootLineItem;
66
+ }
67
+ const lineItem = findLineItemWithComparator([rootLineItem], comparator);
68
+ if (!lineItem) {
69
+ return rootLineItem;
70
+ }
71
+ let updated;
72
+ if (params.dataType === 'LINEITEM') {
73
+ updated = Object.assign(Object.assign({}, lineItem), { chargeItems: lineItem.chargeItems.map((chargeItem, index) => {
74
+ return index === 0 ? Object.assign(Object.assign({}, chargeItem), { priceAdjustment: params.newValue }) : chargeItem;
75
+ }) });
76
+ }
77
+ else if (params.dataType === 'CHARGE') {
78
+ updated = Object.assign(Object.assign({}, lineItem), { chargeItems: lineItem.chargeItems.map(chargeItem => {
79
+ return chargeItem.id === params.id ? Object.assign(Object.assign({}, chargeItem), { priceAdjustment: params.newValue }) : chargeItem;
80
+ }) });
81
+ }
82
+ else if (params.dataType === 'GROUP_CHARGE') {
83
+ updated = Object.assign(Object.assign({}, lineItem), { chargeGroupItems: lineItem.chargeGroupItems.map(chargeGroupItem => {
84
+ return chargeGroupItem.id === params.id
85
+ ? Object.assign(Object.assign({}, chargeGroupItem), { priceAdjustment: params.newValue }) : chargeGroupItem;
86
+ }) });
87
+ }
88
+ const updatedRootLineItem = updated ? new LineItemWorker(rootLineItem).replace(updated).li : rootLineItem;
89
+ return updatedRootLineItem;
90
+ }
91
+ }
92
+ FlowUpdateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowUpdateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
93
+ FlowUpdateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowUpdateService });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowUpdateService, decorators: [{
95
+ type: Injectable
96
+ }] });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy11cGRhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL2Zsb3ctY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9mbG93LXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBSTFGLE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsTUFBTSxDQUFDLFlBQXNCLEVBQUUsTUFBd0I7UUFDNUQsUUFBUSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzVCLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLEtBQUssWUFBWTtnQkFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELEtBQUssVUFBVTtnQkFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUQ7Z0JBQ0UsT0FBTyxZQUFZLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQXFCLEVBQUUsRUFBVTtRQUM3QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxF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QUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDaEUsT0FBTyxlQUFlLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFO3dCQUNyQyxDQUFDLGlDQUFNLGVBQWUsS0FBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFDeEQsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLEdBQ0gsQ0FBQztTQUNIO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUUxRyxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7OytHQXJIVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGluZUl0ZW0gfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTGluZUl0ZW1Xb3JrZXIgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9saW5lLWl0ZW0udHlwZXMnO1xuaW1wb3J0IHsgZmluZExpbmVJdGVtLCBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xpbmUtaXRlbS51dGlscyc7XG5pbXBvcnQgeyBGbG93VXBkYXRlUGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMvdXBkYXRlLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dVcGRhdGVTZXJ2aWNlIHtcbiAgcHVibGljIHVwZGF0ZShyb290TGluZUl0ZW06IExpbmVJdGVtLCBwYXJhbXM6IEZsb3dVcGRhdGVQYXJhbXMpOiBMaW5lSXRlbSB7XG4gICAgc3dpdGNoIChwYXJhbXMuYXR0cmlidXRlVHlwZSkge1xuICAgICAgY2FzZSAnUVRZJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlUXR5KHJvb3RMaW5lSXRlbSwgcGFyYW1zKTtcbiAgICAgIGNhc2UgJ1NUQVJUX0RBVEUnOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVTdGFydERhdGUocm9vdExpbmVJdGVtLCBwYXJhbXMpO1xuICAgICAgY2FzZSAnRU5EX0RBVEUnOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVFbmREYXRlKHJvb3RMaW5lSXRlbSwgcGFyYW1zKTtcbiAgICAgIGNhc2UgJ1BSSUNFX0FESlVTVE1FTlQnOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVQcmljZUFkanVzdG1lbnQocm9vdExpbmVJdGVtLCBwYXJhbXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJvb3RMaW5lSXRlbTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKGxpbmVJdGVtczogTGluZUl0ZW1bXSwgaWQ6IHN0cmluZyk6IExpbmVJdGVtW10ge1xuICAgIGNvbnN0IGZpbHRlcmVkID0gbGluZUl0ZW1zLmZpbHRlcihsaW5lSXRlbSA9PiBsaW5lSXRlbS5pZCAhPT0gaWQpO1xuICAgIHJldHVybiBmaWx0ZXJlZC5tYXAobGluZUl0ZW0gPT4gbmV3IExpbmVJdGVtV29ya2VyKGxpbmVJdGVtKS5yZW1vdmUoaWQpLmxpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUXR5KHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sIHBhcmFtczogRmxvd1VwZGF0ZVBhcmFtcyk6IExpbmVJdGVtIHtcbiAgICAvLyBjaGFuZ2UgcXVhbnRpdHkgYWxsb3dlZCBvbmx5IGZvciBsaW5lSXRlbVxuICAgIGlmIChwYXJhbXMuZGF0YVR5cGUgIT09ICdMSU5FSVRFTScpIHtcbiAgICAgIHJldHVybiByb290TGluZUl0ZW07XG4gICAgfVxuXG4gICAgY29uc3QgbGluZUl0ZW0gPSBmaW5kTGluZUl0ZW0ocGFyYW1zLmlkLCBbcm9vdExpbmVJdGVtXSk7XG5cbiAgICBpZiAoIWxpbmVJdGVtKSB7XG4gICAgICByZXR1cm4gcm9vdExpbmVJdGVtO1xuICAgIH1cblxuICAgIGlmIChsaW5lSXRlbS5pZCAhPT0gcm9vdExpbmVJdGVtLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1F1YW50aXR5IGNhbiBiZSBjaGFuZ2VkIG9ubHkgZm9yIHJvb3QgcHJvZHVjdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgTGluZUl0ZW1Xb3JrZXIocm9vdExpbmVJdGVtKS5yZXBsYWNlKHsgLi4ubGluZUl0ZW0sIHF0eTogcGFyYW1zLm5ld1ZhbHVlIH0pO1xuICAgIHJldHVybiB1cGRhdGVkLmxpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGFydERhdGUocm9vdExpbmVJdGVtOiBMaW5lSXRlbSwgcGFyYW1zOiBGbG93VXBkYXRlUGFyYW1zKTogTGluZUl0ZW0ge1xuICAgIGNvbnN0IGxpbmVJdGVtID0gZmluZExpbmVJdGVtKHBhcmFtcy5pZCwgW3Jvb3RMaW5lSXRlbV0pO1xuXG4gICAgaWYgKCFsaW5lSXRlbSkge1xuICAgICAgcmV0dXJuIHJvb3RMaW5lSXRlbTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkID0gbmV3IExpbmVJdGVtV29ya2VyKHJvb3RMaW5lSXRlbSkucmVwbGFjZSh7XG4gICAgICAuLi5saW5lSXRlbSxcbiAgICAgIGVmZmVjdGl2ZURhdGU6IG1vbWVudChwYXJhbXMubmV3VmFsdWUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgIH0pO1xuICAgIHJldHVybiB1cGRhdGVkLmxpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFbmREYXRlKHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sIHBhcmFtczogRmxvd1VwZGF0ZVBhcmFtcyk6IExpbmVJdGVtIHtcbiAgICBjb25zdCBsaW5lSXRlbSA9IGZpbmRMaW5lSXRlbShwYXJhbXMuaWQsIFtyb290TGluZUl0ZW1dKTtcblxuICAgIGlmICghbGluZUl0ZW0pIHtcbiAgICAgIHJldHVybiByb290TGluZUl0ZW07XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZCA9IG5ldyBMaW5lSXRlbVdvcmtlcihyb290TGluZUl0ZW0pLnJlcGxhY2Uoe1xuICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICBlbmREYXRlOiBtb21lbnQocGFyYW1zLm5ld1ZhbHVlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcbiAgICB9KTtcbiAgICByZXR1cm4gdXBkYXRlZC5saTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJpY2VBZGp1c3RtZW50KHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sIHBhcmFtczogRmxvd1VwZGF0ZVBhcmFtcyk6IExpbmVJdGVtIHtcbiAgICBjb25zdCBjb21wYXJhdG9yID1cbiAgICAgIHBhcmFtcy5kYXRhVHlwZSA9PT0gJ0xJTkVJVEVNJ1xuICAgICAgICA/IChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBwYXJhbXMuaWRcbiAgICAgICAgOiBwYXJhbXMuZGF0YVR5cGUgPT09ICdDSEFSR0UnXG4gICAgICAgID8gKGxpOiBMaW5lSXRlbSkgPT4gbGkuY2hhcmdlSXRlbXMuc29tZSgoeyBpZCB9KSA9PiBpZCA9PT0gcGFyYW1zLmlkKVxuICAgICAgICA6IHBhcmFtcy5kYXRhVHlwZSA9PT0gJ0dST1VQX0NIQVJHRSdcbiAgICAgICAgPyAobGk6IExpbmVJdGVtKSA9PiBsaS5jaGFyZ2VHcm91cEl0ZW1zLnNvbWUoKHsgaWQgfSkgPT4gaWQgPT09IHBhcmFtcy5pZClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIWNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiByb290TGluZUl0ZW07XG4gICAgfVxuXG4gICAgY29uc3QgbGluZUl0ZW0gPSBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihbcm9vdExpbmVJdGVtXSwgY29tcGFyYXRvcik7XG4gICAgaWYgKCFsaW5lSXRlbSkge1xuICAgICAgcmV0dXJuIHJvb3RMaW5lSXRlbTtcbiAgICB9XG5cbiAgICBsZXQgdXBkYXRlZDogTGluZUl0ZW0gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmFtcy5kYXRhVHlwZSA9PT0gJ0xJTkVJVEVNJykge1xuICAgICAgdXBkYXRlZCA9IHtcbiAgICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICAgIGNoYXJnZUl0ZW1zOiBsaW5lSXRlbS5jaGFyZ2VJdGVtcy5tYXAoKGNoYXJnZUl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8geyAuLi5jaGFyZ2VJdGVtLCBwcmljZUFkanVzdG1lbnQ6IHBhcmFtcy5uZXdWYWx1ZSB9IDogY2hhcmdlSXRlbTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLmRhdGFUeXBlID09PSAnQ0hBUkdFJykge1xuICAgICAgdXBkYXRlZCA9IHtcbiAgICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICAgIGNoYXJnZUl0ZW1zOiBsaW5lSXRlbS5jaGFyZ2VJdGVtcy5tYXAoY2hhcmdlSXRlbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNoYXJnZUl0ZW0uaWQgPT09IHBhcmFtcy5pZCA/IHsgLi4uY2hhcmdlSXRlbSwgcHJpY2VBZGp1c3RtZW50OiBwYXJhbXMubmV3VmFsdWUgfSA6IGNoYXJnZUl0ZW07XG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5kYXRhVHlwZSA9PT0gJ0dST1VQX0NIQVJHRScpIHtcbiAgICAgIHVwZGF0ZWQgPSB7XG4gICAgICAgIC4uLmxpbmVJdGVtLFxuICAgICAgICBjaGFyZ2VHcm91cEl0ZW1zOiBsaW5lSXRlbS5jaGFyZ2VHcm91cEl0ZW1zLm1hcChjaGFyZ2VHcm91cEl0ZW0gPT4ge1xuICAgICAgICAgIHJldHVybiBjaGFyZ2VHcm91cEl0ZW0uaWQgPT09IHBhcmFtcy5pZFxuICAgICAgICAgICAgPyB7IC4uLmNoYXJnZUdyb3VwSXRlbSwgcHJpY2VBZGp1c3RtZW50OiBwYXJhbXMubmV3VmFsdWUgfVxuICAgICAgICAgICAgOiBjaGFyZ2VHcm91cEl0ZW07XG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkUm9vdExpbmVJdGVtID0gdXBkYXRlZCA/IG5ldyBMaW5lSXRlbVdvcmtlcihyb290TGluZUl0ZW0pLnJlcGxhY2UodXBkYXRlZCkubGkgOiByb290TGluZUl0ZW07XG5cbiAgICByZXR1cm4gdXBkYXRlZFJvb3RMaW5lSXRlbTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3R5cGVzL3VwZGF0ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRmxvd1VwZGF0ZURhdGFUeXBlID0gJ0xJTkVJVEVNJyB8ICdDSEFSR0UnIHwgJ0dST1VQX0NIQVJHRSc7XG5leHBvcnQgdHlwZSBGbG93VXBkYXRlQXR0cmlidXRlVHlwZSA9ICdRVFknIHwgJ1NUQVJUX0RBVEUnIHwgJ0VORF9EQVRFJyB8ICdQUklDRV9BREpVU1RNRU5UJztcblxuZXhwb3J0IGludGVyZmFjZSBGbG93VXBkYXRlUGFyYW1zIHtcbiAgaWQ6IHN0cmluZztcbiAgZGF0YVR5cGU6IEZsb3dVcGRhdGVEYXRhVHlwZTtcbiAgYXR0cmlidXRlVHlwZTogRmxvd1VwZGF0ZUF0dHJpYnV0ZVR5cGU7XG4gIG5ld1ZhbHVlOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0RlbGV0ZVBhcmFtcyB7XG4gIGlkOiBzdHJpbmc7XG4gIGRhdGFUeXBlOiBGbG93VXBkYXRlRGF0YVR5cGU7XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
- import { EntityUtil } from '@veloce/core';
2
- import { compact, sortBy } from 'lodash';
1
+ import { compact, flatten, sortBy } from 'lodash';
3
2
  export const parseBoundPath = (path) => {
4
3
  var _a, _b;
5
4
  const regexp = new RegExp(`(?:\\/)(?:\\w+)(?:\\/)(?:ports|attributes)(?:\\/)(?:\\w+)|(?:\\/)(?:\\w+)`, 'g');
@@ -10,7 +9,18 @@ export const parseBoundPath = (path) => {
10
9
  return blocks;
11
10
  };
12
11
  export const findLineItem = (id, lineItems) => {
13
- return EntityUtil.findByFieldHierarchically('id', id, lineItems, 'lineItems');
12
+ return findLineItemWithComparator(lineItems, (li) => li.id === id);
13
+ };
14
+ export const findLineItemWithComparator = (lineItems, comparator) => {
15
+ let currentLevel = lineItems;
16
+ while (currentLevel.length) {
17
+ const found = currentLevel.find(comparator);
18
+ if (found) {
19
+ return found;
20
+ }
21
+ currentLevel = flatten(currentLevel.map(parent => parent.lineItems));
22
+ }
23
+ return;
14
24
  };
15
25
  export const insertLineItem = (lineItem, parentId, toInsert) => {
16
26
  const insertData = lineItem.id === parentId ? [toInsert] : [];
@@ -94,4 +104,4 @@ export const getRecommendedPrices = (portDomain, type) => {
94
104
  }, [0, 0])) !== null && _b !== void 0 ? _b : [0, 0];
95
105
  return { net, list };
96
106
  };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL3V0aWxzL2xpbmUtaXRlbS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLFVBQVUsRUFBd0IsTUFBTSxjQUFjLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFlLEVBQUU7O0lBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLDJFQUEyRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLE1BQU0sTUFBTSxHQUNWLE1BQUEsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQywwQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBRVgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBVSxFQUFFLFNBQXFCLEVBQXdCLEVBQUU7SUFDdEYsT0FBTyxVQUFVLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWtCLEVBQVksRUFBRTtJ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LG1DQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENmZ1N0YXR1cywgRW50aXR5VXRpbCwgTGluZUl0ZW0sIFBvcnREb21haW4gfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgY29tcGFjdCwgRGljdGlvbmFyeSwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBhdGhCbG9jayB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VCb3VuZFBhdGggPSAocGF0aDogc3RyaW5nKTogUGF0aEJsb2NrW10gPT4ge1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGAoPzpcXFxcLykoPzpcXFxcdyspKD86XFxcXC8pKD86cG9ydHN8YXR0cmlidXRlcykoPzpcXFxcLykoPzpcXFxcdyspfCg/OlxcXFwvKSg/OlxcXFx3KylgLCAnZycpO1xuICBjb25zdCBibG9ja3M6IFBhdGhCbG9ja1tdID1cbiAgICBwYXRoLm1hdGNoKHJlZ2V4cCk/Lm1hcChtYXRjaCA9PiB7XG4gICAgICBjb25zdCBbdHlwZSwgcHJvcGVydHksIG5hbWVdID0gY29tcGFjdChtYXRjaC5zcGxpdCgnLycpKTtcbiAgICAgIHJldHVybiB7IHR5cGUsIHByb3BlcnR5LCBuYW1lIH07XG4gICAgfSkgPz8gW107XG5cbiAgcmV0dXJuIGJsb2Nrcztcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGluZUl0ZW0gPSAoaWQ6IHN0cmluZywgbGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogTGluZUl0ZW0gfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gRW50aXR5VXRpbC5maW5kQnlGaWVsZEhpZXJhcmNoaWNhbGx5KCdpZCcsIGlkLCBsaW5lSXRlbXMsICdsaW5lSXRlbXMnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAobGluZUl0ZW06IExpbmVJdGVtLCByZXBsYWNlVG86IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBpZiAobGluZUl0ZW0uaWQgPT09IHJlcGxhY2VUby5pZCkge1xuICAgIHJldHVybiB7IC4uLnJlcGxhY2VUbyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtcy5tYXAobGkgPT4ge1xuICAgICAgaWYgKGxpLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUbztcbiAgICAgIH0gZWxzZSBpZiAobGkubGluZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVwbGFjZUxpbmVJdGVtKGxpLCByZXBsYWNlVG8pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpO1xuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSkgPT4ge1xuICBjb25zdCBmaWx0ZXJlZCA9IGF0dHJpYnV0ZXMuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZXMuaW5jbHVkZXMobmFtZSkpO1xuICByZXR1cm4gc29ydEJ5KGZpbHRlcmVkLCBbKHsgbmFtZSB9KSA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChcbiAgb3JpZ2luYWxBdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSxcbiAgYXR0cmlidXRlc1RvVXBzZXJ0OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10sXG4pID0+IHtcbiAgcmV0dXJuIGF0dHJpYnV0ZXNUb1Vwc2VydC5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiB7XG4gICAgY29uc3QgW29yaWdBdHRyXSA9IGdldEF0dHJpYnV0ZXMoYWNjLCBbbmFtZV0pO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5hY2MuZmlsdGVyKGF0dHIgPT4gYXR0ci5uYW1lICE9PSBuYW1lKSxcbiAgICAgIHsgLi4uKG9yaWdBdHRyID8/IHsgbmFtZSB9KSwgY2ZnU3RhdHVzOiAnVXNlcicgYXMgQ2ZnU3RhdHVzLCB2YWx1ZSB9LFxuICAgIF07XG4gIH0sIG9yaWdpbmFsQXR0cmlidXRlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgcGF0Y2hBdHRyaWJ1dGVzID0gKHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sIGlkOiBzdHJpbmcsIGF0dHJzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10pID0+IHtcbiAgY29uc3QgbGluZUl0ZW0gPSBmaW5kTGluZUl0ZW0oaWQsIFtyb290TGluZUl0ZW1dKTtcblxuICBpZiAoIWxpbmVJdGVtKSB7XG4gICAgcmV0dXJuIHJvb3RMaW5lSXRlbTtcbiAgfVxuXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB1cHNlcnRBdHRyaWJ1dGVzKGxpbmVJdGVtLmF0dHJpYnV0ZXMsIGF0dHJzKTtcbiAgcmV0dXJuIHJlcGxhY2VMaW5lSXRlbShyb290TGluZUl0ZW0sIHsgLi4ubGluZUl0ZW0sIGF0dHJpYnV0ZXMgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlVmFsdWUgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10sIG5hbWU6IHN0cmluZyk6IGFueSA9PlxuICBhdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IG5hbWUpPy52YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTGluZUl0ZW0gPSAoXG4gIHBvcnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10gPSBbXSxcbiAgbGluZUl0ZW1zOiBMaW5lSXRlbVtdID0gW10sXG4pOiBMaW5lSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgcG9ydCxcbiAgICB0eXBlLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIGNmZ1N0YXR1czogJ05ldycsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcy5tYXAoKHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgY2ZnU3RhdHVzOiAnVXNlcicsIG5hbWUsIHZhbHVlIH0pKSxcbiAgICBsaW5lSXRlbXMsXG4gICAgcGFyZW50SWQsXG4gICAgcXR5OiAxLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29tbWVuZGVkUHJpY2VzID0gKHBvcnREb21haW46IFBvcnREb21haW4sIHR5cGU6IHN0cmluZyk6IHsgbmV0OiBudW1iZXI7IGxpc3Q6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9tYWluVHlwZSA9IHBvcnREb21haW4uZG9tYWluVHlwZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IHR5cGUpO1xuXG4gIGNvbnN0IFtuZXQsIGxpc3RdID0gZG9tYWluVHlwZT8ucmVjb21tZW5kZWRQcmljZXNcbiAgICA/LmZpbHRlcigoeyBjaGFyZ2VNZXRob2QgfSkgPT4gY2hhcmdlTWV0aG9kID09PSAnT05FX1RJTUUnKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBycCkgPT4ge1xuICAgICAgICBjb25zdCBbbmV0UHJpY2UsIGxpc3RQcmljZV0gPSBhY2M7XG4gICAgICAgIHJldHVybiBbbmV0UHJpY2UgKyBycC5uZXRQcmljZSwgbGlzdFByaWNlICsgcnAubGlzdFByaWNlXTtcbiAgICAgIH0sXG4gICAgICBbMCwgMF0sXG4gICAgKSA/PyBbMCwgMF07XG5cbiAgcmV0dXJuIHsgbmV0LCBsaXN0IH07XG59O1xuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL3V0aWxzL2xpbmUtaXRlbS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFlLEVBQUU7O0lBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLDJFQUEyRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLE1BQU0sTUFBTSxHQUNWLE1BQUEsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQywwQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBRVgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBVSxFQUFFLFNBQXFCLEVBQXdCLEVBQUU7SUFDdEYsT0FBTywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsU0FBcUIsRUFDckIsVUFBcUMsRUFDZixFQUFFO0lBQ3hCLElBQUksWUFBWSxHQUFHLFNBQVMs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LE1BQUEsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsaUJBQWlCLDBDQUM3QyxNQUFNLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUN6RCxNQUFNLENBQ0wsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDVixNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsQyxPQUFPLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ1AsbUNBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFZCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgQ2ZnU3RhdHVzLCBMaW5lSXRlbSwgUG9ydERvbWFpbiB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBjb21wYWN0LCBEaWN0aW9uYXJ5LCBmbGF0dGVuLCBzb3J0QnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGF0aEJsb2NrIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUJvdW5kUGF0aCA9IChwYXRoOiBzdHJpbmcpOiBQYXRoQmxvY2tbXSA9PiB7XG4gIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoYCg/OlxcXFwvKSg/OlxcXFx3KykoPzpcXFxcLykoPzpwb3J0c3xhdHRyaWJ1dGVzKSg/OlxcXFwvKSg/OlxcXFx3Kyl8KD86XFxcXC8pKD86XFxcXHcrKWAsICdnJyk7XG4gIGNvbnN0IGJsb2NrczogUGF0aEJsb2NrW10gPVxuICAgIHBhdGgubWF0Y2gocmVnZXhwKT8ubWFwKG1hdGNoID0+IHtcbiAgICAgIGNvbnN0IFt0eXBlLCBwcm9wZXJ0eSwgbmFtZV0gPSBjb21wYWN0KG1hdGNoLnNwbGl0KCcvJykpO1xuICAgICAgcmV0dXJuIHsgdHlwZSwgcHJvcGVydHksIG5hbWUgfTtcbiAgICB9KSA/PyBbXTtcblxuICByZXR1cm4gYmxvY2tzO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRMaW5lSXRlbSA9IChpZDogc3RyaW5nLCBsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihsaW5lSXRlbXMsIChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY29tcGFyYXRvcjogKGxpOiBMaW5lSXRlbSkgPT4gYm9vbGVhbixcbik6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IGxpbmVJdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5saW5lSXRlbXMpKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAobGluZUl0ZW06IExpbmVJdGVtLCByZXBsYWNlVG86IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBpZiAobGluZUl0ZW0uaWQgPT09IHJlcGxhY2VUby5pZCkge1xuICAgIHJldHVybiB7IC4uLnJlcGxhY2VUbyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtcy5tYXAobGkgPT4ge1xuICAgICAgaWYgKGxpLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VUbztcbiAgICAgIH0gZWxzZSBpZiAobGkubGluZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVwbGFjZUxpbmVJdGVtKGxpLCByZXBsYWNlVG8pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpO1xuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSkgPT4ge1xuICBjb25zdCBmaWx0ZXJlZCA9IGF0dHJpYnV0ZXMuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZXMuaW5jbHVkZXMobmFtZSkpO1xuICByZXR1cm4gc29ydEJ5KGZpbHRlcmVkLCBbKHsgbmFtZSB9KSA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChcbiAgb3JpZ2luYWxBdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSxcbiAgYXR0cmlidXRlc1RvVXBzZXJ0OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10sXG4pID0+IHtcbiAgcmV0dXJuIGF0dHJpYnV0ZXNUb1Vwc2VydC5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiB7XG4gICAgY29uc3QgW29yaWdBdHRyXSA9IGdldEF0dHJpYnV0ZXMoYWNjLCBbbmFtZV0pO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5hY2MuZmlsdGVyKGF0dHIgPT4gYXR0ci5uYW1lICE9PSBuYW1lKSxcbiAgICAgIHsgLi4uKG9yaWdBdHRyID8/IHsgbmFtZSB9KSwgY2ZnU3RhdHVzOiAnVXNlcicgYXMgQ2ZnU3RhdHVzLCB2YWx1ZSB9LFxuICAgIF07XG4gIH0sIG9yaWdpbmFsQXR0cmlidXRlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgcGF0Y2hBdHRyaWJ1dGVzID0gKHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sIGlkOiBzdHJpbmcsIGF0dHJzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10pID0+IHtcbiAgY29uc3QgbGluZUl0ZW0gPSBmaW5kTGluZUl0ZW0oaWQsIFtyb290TGluZUl0ZW1dKTtcblxuICBpZiAoIWxpbmVJdGVtKSB7XG4gICAgcmV0dXJuIHJvb3RMaW5lSXRlbTtcbiAgfVxuXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB1cHNlcnRBdHRyaWJ1dGVzKGxpbmVJdGVtLmF0dHJpYnV0ZXMsIGF0dHJzKTtcbiAgcmV0dXJuIHJlcGxhY2VMaW5lSXRlbShyb290TGluZUl0ZW0sIHsgLi4ubGluZUl0ZW0sIGF0dHJpYnV0ZXMgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlVmFsdWUgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10sIG5hbWU6IHN0cmluZyk6IGFueSA9PlxuICBhdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IG5hbWUpPy52YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTGluZUl0ZW0gPSAoXG4gIHBvcnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10gPSBbXSxcbiAgbGluZUl0ZW1zOiBMaW5lSXRlbVtdID0gW10sXG4pOiBMaW5lSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgcG9ydCxcbiAgICB0eXBlLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIGNmZ1N0YXR1czogJ05ldycsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcy5tYXAoKHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgY2ZnU3RhdHVzOiAnVXNlcicsIG5hbWUsIHZhbHVlIH0pKSxcbiAgICBsaW5lSXRlbXMsXG4gICAgcGFyZW50SWQsXG4gICAgcXR5OiAxLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29tbWVuZGVkUHJpY2VzID0gKHBvcnREb21haW46IFBvcnREb21haW4sIHR5cGU6IHN0cmluZyk6IHsgbmV0OiBudW1iZXI7IGxpc3Q6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9tYWluVHlwZSA9IHBvcnREb21haW4uZG9tYWluVHlwZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IHR5cGUpO1xuXG4gIGNvbnN0IFtuZXQsIGxpc3RdID0gZG9tYWluVHlwZT8ucmVjb21tZW5kZWRQcmljZXNcbiAgICA/LmZpbHRlcigoeyBjaGFyZ2VNZXRob2QgfSkgPT4gY2hhcmdlTWV0aG9kID09PSAnT05FX1RJTUUnKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBycCkgPT4ge1xuICAgICAgICBjb25zdCBbbmV0UHJpY2UsIGxpc3RQcmljZV0gPSBhY2M7XG4gICAgICAgIHJldHVybiBbbmV0UHJpY2UgKyBycC5uZXRQcmljZSwgbGlzdFByaWNlICsgcnAubGlzdFByaWNlXTtcbiAgICAgIH0sXG4gICAgICBbMCwgMF0sXG4gICAgKSA/PyBbMCwgMF07XG5cbiAgcmV0dXJuIHsgbmV0LCBsaXN0IH07XG59O1xuIl19
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
47
47
  exportAs: 'rampApi',
48
48
  }]
49
49
  }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.RampApiService }, { type: i2.PriceApiService }]; } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmwtcmFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9kaXJlY3RpdmVzL3ZsLXJhbXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUXJDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ1UsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsZUFBZ0M7UUFGaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDdkMsQ0FBQztJQUVKLFVBQVUsQ0FBQyxXQUFxQixFQUFFLFlBQXdCLEVBQUUsSUFBWTtRQUN0RSxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLElBQUksQ0FBQztZQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxXQUFXO1lBQ1gsWUFBWSxFQUFFLFlBQVksSUFBSSxFQUFFO1lBQ2hDLElBQUk7U0FDTCxDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLFVBQVUsb0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQzNCO2lCQUNGLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsMEJBQTBCLENBQUMsUUFBa0IsRUFBRSxPQUFhO1FBQzFELE9BQU8sSUFBSSxDQUFDLGVBQWU7YUFDeEIsdUJBQXVCLENBQ3RCLFFBQVEsQ0FBQyxNQUFNLEVBQ2YsUUFBUSxDQUFDLFVBQVUsRUFDbkIsUUFBUSxDQUFDLFNBQVMsRUFDbEIsT0FBTyxFQUNQLFFBQVEsQ0FBQyxvQkFBb0IsRUFDN0IsUUFBUSxDQUFDLHdCQUF3QixDQUNsQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxRQUFrQixFQUFFLElBQVk7UUFDdEQsT0FBTyxJQUFJLENBQUMsZUFBZTthQUN4QixvQkFBb0IsQ0FDbkIsUUFBUSxDQUFDLE1BQU0sRUFDZixRQUFRLENBQUMsVUFBVSxFQUNuQixRQUFRLENBQUMsU0FBUyxFQUNsQixJQUFJLEVBQ0osUUFBUSxDQUFDLG9CQUFvQixFQUM3QixRQUFRLENBQUMsd0JBQXdCLENBQ2xDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7NkdBckRVLGVBQWU7aUdBQWYsZUFBZTs0RkFBZixlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxTQUFTO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpY2VBcGlTZXJ2aWNlLCBSYW1wQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IExpbmVJdGVtIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndmwtcmFtcCcsXG4gIGV4cG9ydEFzOiAncmFtcEFwaScsXG59KVxuZXhwb3J0IGNsYXNzIFZsUmFtcERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmFtcEFwaVNlcnZpY2U6IFJhbXBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJpY2VBcGlTZXJ2aWNlOiBQcmljZUFwaVNlcnZpY2UsXG4gICkge31cblxuICBjcmVhdGVSYW1wKHNvdXJjZUl0ZW1zOiBzdHJpbmdbXSwgY3VycmVudFJhbXBzOiBMaW5lSXRlbVtdLCB0ZXJtOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJhbXBBcGlTZXJ2aWNlXG4gICAgICAubmV4dCh7XG4gICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLFxuICAgICAgICBzb3VyY2VJdGVtcyxcbiAgICAgICAgY3VycmVudEl0ZW1zOiBjdXJyZW50UmFtcHMgfHwgW10sXG4gICAgICAgIHRlcm0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChkYXRhID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBjYWxjdWxhdGVSYW1wVGVybUJ5RW5kRGF0ZShsaW5lSXRlbTogTGluZUl0ZW0sIGVuZERhdGU6IERhdGUpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByaWNlQXBpU2VydmljZVxuICAgICAgLmdldFNlbGxpbmdUZXJtQnlFbmREYXRlKFxuICAgICAgICBsaW5lSXRlbS5wbGFuSWQsXG4gICAgICAgIGxpbmVJdGVtLm9mZmVyaW5nSWQsXG4gICAgICAgIGxpbmVJdGVtLnN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgbGluZUl0ZW0uc2VsbGluZ0ZyZXF1ZW5jeVVuaXQsXG4gICAgICAgIGxpbmVJdGVtLnNlbGxpbmdGcmVxdWVuY3lEdXJhdGlvbixcbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVJhbXBUZXJtQnlUZXJtKGxpbmVJdGVtOiBMaW5lSXRlbSwgdGVybTogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcmljZUFwaVNlcnZpY2VcbiAgICAgIC5nZXRTZWxsaW5nVGVybUJ5VGVybShcbiAgICAgICAgbGluZUl0ZW0ucGxhbklkLFxuICAgICAgICBsaW5lSXRlbS5vZmZlcmluZ0lkLFxuICAgICAgICBsaW5lSXRlbS5zdGFydERhdGUsXG4gICAgICAgIHRlcm0sXG4gICAgICAgIGxpbmVJdGVtLnNlbGxpbmdGcmVxdWVuY3lVbml0LFxuICAgICAgICBsaW5lSXRlbS5zZWxsaW5nRnJlcXVlbmN5RHVyYXRpb24sXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmwtcmFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9kaXJlY3RpdmVzL3ZsLXJhbXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUXJDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ1UsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsZUFBZ0M7UUFGaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDdkMsQ0FBQztJQUVKLFVBQVUsQ0FBQyxXQUFxQixFQUFFLFlBQXdCLEVBQUUsSUFBWTtRQUN0RSxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLElBQUksQ0FBQztZQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxXQUFXO1lBQ1gsWUFBWSxFQUFFLFlBQVksSUFBSSxFQUFFO1lBQ2hDLElBQUk7U0FDTCxDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLFVBQVUsb0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQzNCO2lCQUNGLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsMEJBQTBCLENBQUMsUUFBa0IsRUFBRSxPQUFlO1FBQzVELE9BQU8sSUFBSSxDQUFDLGVBQWU7YUFDeEIsdUJBQXVCLENBQ3RCLFFBQVEsQ0FBQyxNQUFNLEVBQ2YsUUFBUSxDQUFDLFVBQVUsRUFDbkIsUUFBUSxDQUFDLFNBQVMsRUFDbEIsT0FBTyxFQUNQLFFBQVEsQ0FBQyxvQkFBb0IsRUFDN0IsUUFBUSxDQUFDLHdCQUF3QixDQUNsQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxRQUFrQixFQUFFLElBQVk7UUFDdEQsT0FBTyxJQUFJLENBQUMsZUFBZTthQUN4QixvQkFBb0IsQ0FDbkIsUUFBUSxDQUFDLE1BQU0sRUFDZixRQUFRLENBQUMsVUFBVSxFQUNuQixRQUFRLENBQUMsU0FBUyxFQUNsQixJQUFJLEVBQ0osUUFBUSxDQUFDLG9CQUFvQixFQUM3QixRQUFRLENBQUMsd0JBQXdCLENBQ2xDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7NkdBckRVLGVBQWU7aUdBQWYsZUFBZTs0RkFBZixlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxTQUFTO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpY2VBcGlTZXJ2aWNlLCBSYW1wQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IExpbmVJdGVtIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndmwtcmFtcCcsXG4gIGV4cG9ydEFzOiAncmFtcEFwaScsXG59KVxuZXhwb3J0IGNsYXNzIFZsUmFtcERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmFtcEFwaVNlcnZpY2U6IFJhbXBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJpY2VBcGlTZXJ2aWNlOiBQcmljZUFwaVNlcnZpY2UsXG4gICkge31cblxuICBjcmVhdGVSYW1wKHNvdXJjZUl0ZW1zOiBzdHJpbmdbXSwgY3VycmVudFJhbXBzOiBMaW5lSXRlbVtdLCB0ZXJtOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJhbXBBcGlTZXJ2aWNlXG4gICAgICAubmV4dCh7XG4gICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLFxuICAgICAgICBzb3VyY2VJdGVtcyxcbiAgICAgICAgY3VycmVudEl0ZW1zOiBjdXJyZW50UmFtcHMgfHwgW10sXG4gICAgICAgIHRlcm0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChkYXRhID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBjYWxjdWxhdGVSYW1wVGVybUJ5RW5kRGF0ZShsaW5lSXRlbTogTGluZUl0ZW0sIGVuZERhdGU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJpY2VBcGlTZXJ2aWNlXG4gICAgICAuZ2V0U2VsbGluZ1Rlcm1CeUVuZERhdGUoXG4gICAgICAgIGxpbmVJdGVtLnBsYW5JZCxcbiAgICAgICAgbGluZUl0ZW0ub2ZmZXJpbmdJZCxcbiAgICAgICAgbGluZUl0ZW0uc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlLFxuICAgICAgICBsaW5lSXRlbS5zZWxsaW5nRnJlcXVlbmN5VW5pdCxcbiAgICAgICAgbGluZUl0ZW0uc2VsbGluZ0ZyZXF1ZW5jeUR1cmF0aW9uLFxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgY2FsY3VsYXRlUmFtcFRlcm1CeVRlcm0obGluZUl0ZW06IExpbmVJdGVtLCB0ZXJtOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByaWNlQXBpU2VydmljZVxuICAgICAgLmdldFNlbGxpbmdUZXJtQnlUZXJtKFxuICAgICAgICBsaW5lSXRlbS5wbGFuSWQsXG4gICAgICAgIGxpbmVJdGVtLm9mZmVyaW5nSWQsXG4gICAgICAgIGxpbmVJdGVtLnN0YXJ0RGF0ZSxcbiAgICAgICAgdGVybSxcbiAgICAgICAgbGluZUl0ZW0uc2VsbGluZ0ZyZXF1ZW5jeVVuaXQsXG4gICAgICAgIGxpbmVJdGVtLnNlbGxpbmdGcmVxdWVuY3lEdXJhdGlvbixcbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
@@ -11,6 +11,9 @@ export class QuoteService {
11
11
  this.priceApiService = priceApiService;
12
12
  this.quote = new BehaviorSubject(null);
13
13
  }
14
+ reset() {
15
+ this.quote.next(null);
16
+ }
14
17
  init(quoteId, params) {
15
18
  return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists(), this.contextService.resolve$().pipe(filter(Boolean), map(context => context))).pipe(tap(([quote, priceLists, configurationContext]) => {
16
19
  this.quote.next(quote);
@@ -46,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
46
49
  type: Injectable,
47
50
  args: [{ providedIn: 'root' }]
48
51
  }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.QuoteApiService }, { type: i2.PriceApiService }]; } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvc2VydmljZXMvcXVvdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUl4RCxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUNVLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGVBQWdDO1FBRmhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBUGxDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxDQUFDLENBQUM7SUFRMUQsQ0FBQztJQUVHLElBQUksQ0FBQyxPQUFlLEVBQUUsTUFBMEI7UUFDckQsT0FBTyxHQUFHLENBQ1IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxFQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDakMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQStCLENBQUMsQ0FDaEQsQ0FDRixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLCtDQUNyQixvQkFBb0IsR0FDcEIsS0FBSyxDQUFDLE9BQU8sS0FDaEIsVUFBVSxrQ0FDTCxvQkFBb0IsQ0FBQyxVQUFVLEdBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUU3QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUFxQjtRQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUUvQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLGlDQUNWLEtBQUssS0FDUixZQUFZLEVBQUUsU0FBUyxJQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUEwQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUUvQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLGlDQUNWLEtBQUssS0FDUixZQUFZLEVBQUUsWUFBWSxDQUFDLFNBQVMsRUFDcEMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXLEVBQ3JDLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYSxJQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFtQixDQUFDLENBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs7MEdBNUVVLFlBQVk7OEdBQVosWUFBWSxjQURDLE1BQU07NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpY2VBcGlTZXJ2aWNlLCBRdW90ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL2FwaSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uQ29udGV4dCwgTGluZUl0ZW0sIFByaWNlTGlzdCwgUHJpY2VTdW1tYXJ5LCBRdW90ZURyYWZ0IH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBRdW90ZVNlcnZpY2Uge1xuICBwcml2YXRlIHF1b3RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdW90ZURyYWZ0IHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBwcmljZUxpc3RzPzogUHJpY2VMaXN0W107XG4gIHB1YmxpYyBxdW90ZVByaWNlTGlzdD86IFByaWNlTGlzdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlQXBpU2VydmljZTogUXVvdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJpY2VBcGlTZXJ2aWNlOiBQcmljZUFwaVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgaW5pdChxdW90ZUlkOiBzdHJpbmcsIHBhcmFtczogRGljdGlvbmFyeTxzdHJpbmc+KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHppcChcbiAgICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlLmdldFF1b3RlRHJhZnQocXVvdGVJZCwgcGFyYW1zKSxcbiAgICAgIHRoaXMucHJpY2VBcGlTZXJ2aWNlLmdldFByaWNlTGlzdHMoKSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKS5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIG1hcChjb250ZXh0ID0+IGNvbnRleHQgYXMgQ29uZmlndXJhdGlvbkNvbnRleHQpLFxuICAgICAgKSxcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKFtxdW90ZSwgcHJpY2VMaXN0cywgY29uZmlndXJhdGlvbkNvbnRleHRdKSA9PiB7XG4gICAgICAgIHRoaXMucXVvdGUubmV4dChxdW90ZSk7XG4gICAgICAgIHRoaXMucHJpY2VMaXN0cyA9IHByaWNlTGlzdHM7XG4gICAgICAgIHRoaXMucXVvdGVQcmljZUxpc3QgPSBwcmljZUxpc3RzLmZpbmQocCA9PiBwLmlkID09PSBjb25maWd1cmF0aW9uQ29udGV4dC5wcmljZUxpc3RJZCk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoe1xuICAgICAgICAgIC4uLmNvbmZpZ3VyYXRpb25Db250ZXh0LFxuICAgICAgICAgIC4uLnF1b3RlLmNvbnRleHQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgLi4uY29uZmlndXJhdGlvbkNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIC4uLnF1b3RlLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBzZXRDdXJyZW50TGluZUl0ZW1TdGF0ZShsaW5lSXRlbXM6IExpbmVJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGUudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5xdW90ZS5uZXh0KHtcbiAgICAgIC4uLnF1b3RlLFxuICAgICAgY3VycmVudFN0YXRlOiBsaW5lSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBhZGRSYW1wKHByaWNlU3VtbWFyeTogUHJpY2VTdW1tYXJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucXVvdGUubmV4dCh7XG4gICAgICAuLi5xdW90ZSxcbiAgICAgIGN1cnJlbnRTdGF0ZTogcHJpY2VTdW1tYXJ5LmxpbmVJdGVtcyxcbiAgICAgIHRvdGFsUHJpY2VzOiBwcmljZVN1bW1hcnkudG90YWxQcmljZXMsXG4gICAgICBhcHByb3ZhbEl0ZW1zOiBwcmljZVN1bW1hcnkuYXBwcm92YWxJdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBxdW90ZSQoKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0PiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGUucGlwZShcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgIG1hcChxdW90ZSA9PiBxdW90ZSBhcyBRdW90ZURyYWZ0KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UXVvdGUoKTogUXVvdGVEcmFmdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnF1b3RlLnZhbHVlO1xuICB9XG59XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvc2VydmljZXMvcXVvdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUl4RCxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUNVLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGVBQWdDO1FBRmhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBUGxDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxDQUFDLENBQUM7SUFRMUQsQ0FBQztJQUVHLEtBQUs7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sSUFBSSxDQUFDLE9BQWUsRUFBRSxNQUEwQjtRQUNyRCxPQUFPLEdBQUcsQ0FDUixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQ25ELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBK0IsQ0FBQyxDQUNoRCxDQUNGLENBQUMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV0RixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sK0NBQ3JCLG9CQUFvQixHQUNwQixLQUFLLENBQUMsT0FBTyxLQUNoQixVQUFVLGtDQUNMLG9CQUFvQixDQUFDLFVBQVUsR0FDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEtBRTdCLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQXFCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRS9CLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksaUNBQ1YsS0FBSyxLQUNSLFlBQVksRUFBRSxTQUFTLElBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQTBCO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRS9CLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksaUNBQ1YsS0FBSyxLQUNSLFlBQVksRUFBRSxZQUFZLENBQUMsU0FBUyxFQUNwQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFDckMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhLElBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQW1CLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDOzswR0FoRlUsWUFBWTs4R0FBWixZQUFZLGNBREMsTUFBTTs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmljZUFwaVNlcnZpY2UsIFF1b3RlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Db250ZXh0LCBMaW5lSXRlbSwgUHJpY2VMaXN0LCBQcmljZVN1bW1hcnksIFF1b3RlRHJhZnQgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFF1b3RlU2VydmljZSB7XG4gIHByaXZhdGUgcXVvdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1b3RlRHJhZnQgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHByaWNlTGlzdHM/OiBQcmljZUxpc3RbXTtcbiAgcHVibGljIHF1b3RlUHJpY2VMaXN0PzogUHJpY2VMaXN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmljZUFwaVNlcnZpY2U6IFByaWNlQXBpU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICB0aGlzLnF1b3RlLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChxdW90ZUlkOiBzdHJpbmcsIHBhcmFtczogRGljdGlvbmFyeTxzdHJpbmc+KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHppcChcbiAgICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlLmdldFF1b3RlRHJhZnQocXVvdGVJZCwgcGFyYW1zKSxcbiAgICAgIHRoaXMucHJpY2VBcGlTZXJ2aWNlLmdldFByaWNlTGlzdHMoKSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKS5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIG1hcChjb250ZXh0ID0+IGNvbnRleHQgYXMgQ29uZmlndXJhdGlvbkNvbnRleHQpLFxuICAgICAgKSxcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKFtxdW90ZSwgcHJpY2VMaXN0cywgY29uZmlndXJhdGlvbkNvbnRleHRdKSA9PiB7XG4gICAgICAgIHRoaXMucXVvdGUubmV4dChxdW90ZSk7XG4gICAgICAgIHRoaXMucHJpY2VMaXN0cyA9IHByaWNlTGlzdHM7XG4gICAgICAgIHRoaXMucXVvdGVQcmljZUxpc3QgPSBwcmljZUxpc3RzLmZpbmQocCA9PiBwLmlkID09PSBjb25maWd1cmF0aW9uQ29udGV4dC5wcmljZUxpc3RJZCk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoe1xuICAgICAgICAgIC4uLmNvbmZpZ3VyYXRpb25Db250ZXh0LFxuICAgICAgICAgIC4uLnF1b3RlLmNvbnRleHQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgLi4uY29uZmlndXJhdGlvbkNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIC4uLnF1b3RlLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBzZXRDdXJyZW50TGluZUl0ZW1TdGF0ZShsaW5lSXRlbXM6IExpbmVJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGUudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5xdW90ZS5uZXh0KHtcbiAgICAgIC4uLnF1b3RlLFxuICAgICAgY3VycmVudFN0YXRlOiBsaW5lSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBhZGRSYW1wKHByaWNlU3VtbWFyeTogUHJpY2VTdW1tYXJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucXVvdGUubmV4dCh7XG4gICAgICAuLi5xdW90ZSxcbiAgICAgIGN1cnJlbnRTdGF0ZTogcHJpY2VTdW1tYXJ5LmxpbmVJdGVtcyxcbiAgICAgIHRvdGFsUHJpY2VzOiBwcmljZVN1bW1hcnkudG90YWxQcmljZXMsXG4gICAgICBhcHByb3ZhbEl0ZW1zOiBwcmljZVN1bW1hcnkuYXBwcm92YWxJdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBxdW90ZSQoKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0PiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGUucGlwZShcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgIG1hcChxdW90ZSA9PiBxdW90ZSBhcyBRdW90ZURyYWZ0KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UXVvdGUoKTogUXVvdGVEcmFmdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnF1b3RlLnZhbHVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,60 @@
1
+ import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
+ import { OverlayPanel } from 'primeng/overlaypanel';
3
+ import { BehaviorSubject, catchError, distinctUntilChanged, map, noop, of, Subject, takeUntil, tap, } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@veloce/core";
6
+ import * as i2 from "@veloce/sdk/cms";
7
+ import * as i3 from "primeng/overlaypanel";
8
+ import * as i4 from "primeng/button";
9
+ import * as i5 from "primeng/api";
10
+ import * as i6 from "@veloce/components";
11
+ import * as i7 from "@angular/common";
12
+ export class HeaderCartOverlayComponent {
13
+ constructor(baseHttpService, flowConfiguration) {
14
+ this.baseHttpService = baseHttpService;
15
+ this.flowConfiguration = flowConfiguration;
16
+ this.imagesMap$ = new BehaviorSubject({});
17
+ this.destroyed$ = new Subject();
18
+ this.products$ = this.flowConfiguration.get();
19
+ }
20
+ ngOnDestroy() {
21
+ this.destroyed$.next();
22
+ this.destroyed$.complete();
23
+ }
24
+ getImageUrl(productId) {
25
+ if (this.imagesMap$.value[productId] == null) {
26
+ this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), { [productId]: '' }));
27
+ this.fetchProductImage(productId);
28
+ }
29
+ return this.imagesMap$.pipe(map(imagesMap => imagesMap[productId]), distinctUntilChanged());
30
+ }
31
+ isConfigurable(lineItem) {
32
+ return lineItem.properties['#configurable'] === 'true';
33
+ }
34
+ fetchProductImage(productId) {
35
+ this.baseHttpService
36
+ .api({
37
+ url: `/products/${productId}/image`,
38
+ method: 'get',
39
+ responseType: 'blob',
40
+ errorHandler: noop,
41
+ })
42
+ .pipe(map(file => URL.createObjectURL(file)), catchError(() => of('')), tap(url => this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), { [productId]: url }))), takeUntil(this.destroyed$))
43
+ .subscribe();
44
+ }
45
+ }
46
+ HeaderCartOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: HeaderCartOverlayComponent, deps: [{ token: i1.BaseHttpService }, { token: i2.FlowConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
47
+ HeaderCartOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: HeaderCartOverlayComponent, selector: "vl-header-cart-overlay", viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: OverlayPanel, descendants: true }], ngImport: i0, template: "<p-overlayPanel\n styleClass=\"navigation-settings-overlay flow-header-overlay center\"\n showTransitionOptions=\"0ms\"\n hideTransitionOptions=\"0ms\"\n>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\" *vlLet=\"products$ | async as products\">\n <ng-container *ngIf=\"products.length > 0; else empty\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Products ({{ products.length }})</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <div class=\"product header\">\n <span>Product</span>\n <span class=\"text-right\">Qty</span>\n <span class=\"text-right\">MRR</span>\n <span class=\"text-right\">NRR</span>\n </div>\n\n <div class=\"scrollable-wrapper\">\n <div class=\"product\" *ngFor=\"let product of products\">\n <div class=\"product__info\">\n <div class=\"product__image-wrapper\">\n <div\n *ngIf=\"getImageUrl(product.productId) | async as imageUrl; else noImage\"\n class=\"product__image\"\n [ngStyle]=\"{ 'background-image': 'url(' + imageUrl + ')' }\"\n ></div>\n </div>\n <div class=\"flex flex-column justify-content-center\">\n <div class=\"word-break\">{{ product.name }}</div>\n <div>\n <p-button\n [disabled]=\"!isConfigurable(product)\"\n label=\"Configure\"\n styleClass=\"p-button-link p-button-sm pl-0\"\n ></p-button>\n <p-button label=\"Delete\" styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"></p-button>\n </div>\n </div>\n </div>\n\n <span class=\"text-right pt-3\">{{ product.qty }}</span>\n <span class=\"text-right pt-3\">$0.00</span>\n <span class=\"text-right pt-3\">$0.00</span>\n </div>\n\n <ng-template #noImage>\n <i class=\"vl-icon vl-icon-no-image no-image-icon\"></i>\n </ng-template>\n </div>\n\n <div class=\"flex justify-content-end mt-3\">\n <p-button label=\"Clear cart\" styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"></p-button>\n </div>\n </ng-container>\n\n <ng-template #empty>\n <h2 class=\"flow-header-overlay__title\">\n <span>Empty Cart</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <span class=\"empty-state\">There are no products added to the Shopping Cart yet.</span>\n </ng-template>\n </div>\n </ng-template>\n</p-overlayPanel>\n", styles: [".flow-header-overlay__wrapper{display:flex;flex-direction:column;width:460px;max-height:600px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 16px}.empty-state{color:var(--vl-text-color-deep-accent)}.scrollable-wrapper{overflow:auto}.product{display:grid;grid-template-columns:auto 60px 80px 80px;padding:16px 0}.product:not(.header){border-bottom:1px solid var(--vl-border-color)}.product.header{color:var(--vl-text-color-deep-accent)}.product__info{display:flex;grid-gap:16px;gap:16px}.product__image-wrapper{flex-shrink:0;height:64px;width:64px;display:flex;justify-content:center;align-items:center;background:var(--vl-primary-nav-overlay-bg);border-radius:4px}.product__image{background-size:contain;background-repeat:no-repeat;background-position:center;height:calc(100% - 12px);width:calc(100% - 12px)}.word-break{word-break:break-word}.no-image-icon{color:#b4d1ef;height:18px;width:18px}\n"], components: [{ type: i3.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i6.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: HeaderCartOverlayComponent, decorators: [{
49
+ type: Component,
50
+ args: [{
51
+ selector: 'vl-header-cart-overlay',
52
+ templateUrl: './cart-overlay.component.html',
53
+ styleUrls: ['./cart-overlay.component.scss'],
54
+ changeDetection: ChangeDetectionStrategy.OnPush,
55
+ }]
56
+ }], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i2.FlowConfigurationService }]; }, propDecorators: { overlayPanel: [{
57
+ type: ViewChild,
58
+ args: [OverlayPanel]
59
+ }] } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9jYXJ0LW92ZXJsYXkvY2FydC1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9jYXJ0LW92ZXJsYXkvY2FydC1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILElBQUksRUFFSixFQUFFLEVBQ0YsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQVFkLE1BQU0sT0FBTywwQkFBMEI7SUFRckMsWUFBb0IsZUFBZ0MsRUFBVSxpQkFBMkM7UUFBckYsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUhqRyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVyxDQUFDLFNBQWlCO1FBQ2xDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxpQ0FBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBRyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUN0QyxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWMsQ0FBQyxRQUFrQjtRQUN0QyxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEtBQUssTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxTQUFpQjtRQUN6QyxJQUFJLENBQUMsZUFBZTthQUNqQixHQUFHLENBQU87WUFDVCxHQUFHLEVBQUUsYUFBYSxTQUFTLFFBQVE7WUFDbkMsTUFBTSxFQUFFLEtBQUs7WUFDYixZQUFZLEVBQUUsTUFBTTtZQUNwQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksaUNBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLElBQUcsQ0FBQyxFQUNoRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7O3dIQWhEVSwwQkFBMEI7NEdBQTFCLDBCQUEwQiw0R0FDMUIsWUFBWSxnREN6QnpCLGd5RkFxRUE7NEZEN0NhLDBCQUEwQjtrQkFOdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzZJQUUwQixZQUFZO3NCQUFwQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUh0dHBTZXJ2aWNlLCBMaW5lSXRlbSB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9jbXMnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNhdGNoRXJyb3IsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIG5vb3AsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWhlYWRlci1jYXJ0LW92ZXJsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FydC1vdmVybGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FydC1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJDYXJ0T3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoT3ZlcmxheVBhbmVsKSBvdmVybGF5UGFuZWwhOiBPdmVybGF5UGFuZWw7XG5cbiAgcHVibGljIHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPjtcblxuICBwcml2YXRlIGltYWdlc01hcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpY3Rpb25hcnk8c3RyaW5nPj4oe30pO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZUh0dHBTZXJ2aWNlOiBCYXNlSHR0cFNlcnZpY2UsIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSkge1xuICAgIHRoaXMucHJvZHVjdHMkID0gdGhpcy5mbG93Q29uZmlndXJhdGlvbi5nZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEltYWdlVXJsKHByb2R1Y3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodGhpcy5pbWFnZXNNYXAkLnZhbHVlW3Byb2R1Y3RJZF0gPT0gbnVsbCkge1xuICAgICAgdGhpcy5pbWFnZXNNYXAkLm5leHQoeyAuLi50aGlzLmltYWdlc01hcCQudmFsdWUsIFtwcm9kdWN0SWRdOiAnJyB9KTtcbiAgICAgIHRoaXMuZmV0Y2hQcm9kdWN0SW1hZ2UocHJvZHVjdElkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbWFnZXNNYXAkLnBpcGUoXG4gICAgICBtYXAoaW1hZ2VzTWFwID0+IGltYWdlc01hcFtwcm9kdWN0SWRdKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NvbmZpZ3VyYWJsZShsaW5lSXRlbTogTGluZUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbGluZUl0ZW0ucHJvcGVydGllc1snI2NvbmZpZ3VyYWJsZSddID09PSAndHJ1ZSc7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUHJvZHVjdEltYWdlKHByb2R1Y3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGk8QmxvYj4oe1xuICAgICAgICB1cmw6IGAvcHJvZHVjdHMvJHtwcm9kdWN0SWR9L2ltYWdlYCxcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgIGVycm9ySGFuZGxlcjogbm9vcCxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGZpbGUgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoJycpKSxcbiAgICAgICAgdGFwKHVybCA9PiB0aGlzLmltYWdlc01hcCQubmV4dCh7IC4uLnRoaXMuaW1hZ2VzTWFwJC52YWx1ZSwgW3Byb2R1Y3RJZF06IHVybCB9KSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8cC1vdmVybGF5UGFuZWxcbiAgc3R5bGVDbGFzcz1cIm5hdmlnYXRpb24tc2V0dGluZ3Mtb3ZlcmxheSBmbG93LWhlYWRlci1vdmVybGF5IGNlbnRlclwiXG4gIHNob3dUcmFuc2l0aW9uT3B0aW9ucz1cIjBtc1wiXG4gIGhpZGVUcmFuc2l0aW9uT3B0aW9ucz1cIjBtc1wiXG4+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImZsb3ctaGVhZGVyLW92ZXJsYXlfX3dyYXBwZXJcIiAqdmxMZXQ9XCJwcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0c1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2R1Y3RzLmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZmxvdy1oZWFkZXItb3ZlcmxheV9fdGl0bGVcIj5cbiAgICAgICAgICA8c3Bhbj5Qcm9kdWN0cyAoe3sgcHJvZHVjdHMubGVuZ3RoIH19KTwvc3Bhbj5cbiAgICAgICAgICA8aSBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jbG9zZSBjbG9zZS1pY29uXCIgKGNsaWNrKT1cIm92ZXJsYXlQYW5lbC5oaWRlKClcIj48L2k+XG4gICAgICAgIDwvaDI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QgaGVhZGVyXCI+XG4gICAgICAgICAgPHNwYW4+UHJvZHVjdDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmlnaHRcIj5RdHk8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+TVJSPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yaWdodFwiPk5SUjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0XCIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0X19pbmZvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0X19pbWFnZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJbWFnZVVybChwcm9kdWN0LnByb2R1Y3RJZCkgfCBhc3luYyBhcyBpbWFnZVVybDsgZWxzZSBub0ltYWdlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdF9faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGltYWdlVXJsICsgJyknIH1cIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid29yZC1icmVha1wiPnt7IHByb2R1Y3QubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0NvbmZpZ3VyYWJsZShwcm9kdWN0KVwiXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29uZmlndXJlXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLWxpbmsgcC1idXR0b24tc20gcGwtMFwiXG4gICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkRlbGV0ZVwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1saW5rIHAtYnV0dG9uLXNtIHAtYnV0dG9uLWRhbmdlciBwbC0wIHByLTBcIj48L3AtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmlnaHQgcHQtM1wiPnt7IHByb2R1Y3QucXR5IH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJpZ2h0IHB0LTNcIj4kMC4wMDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yaWdodCBwdC0zXCI+JDAuMDA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1uby1pbWFnZSBuby1pbWFnZS1pY29uXCI+PC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtM1wiPlxuICAgICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkNsZWFyIGNhcnRcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tbGluayBwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1kYW5nZXIgcGwtMCBwci0wXCI+PC9wLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICAgICAgPGgyIGNsYXNzPVwiZmxvdy1oZWFkZXItb3ZlcmxheV9fdGl0bGVcIj5cbiAgICAgICAgICA8c3Bhbj5FbXB0eSBDYXJ0PC9zcGFuPlxuICAgICAgICAgIDxpIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNsb3NlIGNsb3NlLWljb25cIiAoY2xpY2spPVwib3ZlcmxheVBhbmVsLmhpZGUoKVwiPjwvaT5cbiAgICAgICAgPC9oMj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+VGhlcmUgYXJlIG5vIHByb2R1Y3RzIGFkZGVkIHRvIHRoZSBTaG9wcGluZyBDYXJ0IHlldC48L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLW92ZXJsYXlQYW5lbD5cbiJdfQ==