@veloceapps/sdk 3.1.18 → 3.1.20

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 (35) hide show
  1. package/bundles/veloce-sdk-core.umd.js +193 -71
  2. package/bundles/veloce-sdk-core.umd.js.map +1 -1
  3. package/bundles/veloce-sdk-runtime.umd.js +5 -6
  4. package/bundles/veloce-sdk-runtime.umd.js.map +1 -1
  5. package/bundles/veloce-sdk.umd.js +52 -38
  6. package/bundles/veloce-sdk.umd.js.map +1 -1
  7. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +11 -17
  8. package/core/services/quote-draft.service.d.ts +31 -7
  9. package/esm2015/core/modules/configuration/services/configuration.service.js +6 -7
  10. package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +43 -49
  11. package/esm2015/core/services/quote-draft.service.js +118 -21
  12. package/esm2015/runtime/components/ui-runtime/runtime.component.js +2 -2
  13. package/esm2015/runtime/execution/directives/section-script.directive.js +2 -2
  14. package/esm2015/runtime/services/cart.service.js +2 -3
  15. package/esm2015/runtime/services/section.service.js +1 -1
  16. package/esm2015/src/components/header/header.component.js +23 -19
  17. package/esm2015/src/components/header/header.types.js +1 -1
  18. package/esm2015/src/pages/legacy-product/legacy-product.component.js +4 -4
  19. package/esm2015/src/pages/product/product.component.js +8 -5
  20. package/esm2015/src/resolvers/flow.resolver.js +8 -4
  21. package/esm2015/src/resolvers/quote.resolver.js +4 -11
  22. package/esm2015/src/services/flow.service.js +6 -5
  23. package/fesm2015/veloce-sdk-core.js +160 -69
  24. package/fesm2015/veloce-sdk-core.js.map +1 -1
  25. package/fesm2015/veloce-sdk-runtime.js +3 -4
  26. package/fesm2015/veloce-sdk-runtime.js.map +1 -1
  27. package/fesm2015/veloce-sdk.js +44 -39
  28. package/fesm2015/veloce-sdk.js.map +1 -1
  29. package/package.json +1 -1
  30. package/runtime/services/cart.service.d.ts +1 -1
  31. package/src/components/header/header.component.d.ts +5 -2
  32. package/src/components/header/header.types.d.ts +0 -1
  33. package/src/pages/product/product.component.d.ts +1 -0
  34. package/src/resolvers/flow.resolver.d.ts +3 -1
  35. package/src/resolvers/quote.resolver.d.ts +0 -1
@@ -1,6 +1,6 @@
1
1
  import { HttpErrorResponse } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
- import { catchError, from, of, switchMap } from 'rxjs';
3
+ import { catchError, from, of } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/router";
6
6
  import * as i2 from "@veloce/sdk/core";
@@ -17,21 +17,14 @@ export class QuoteResolver {
17
17
  const parentUrl = this.routerService.getFlowRootPath(route);
18
18
  return from(this.router.navigate([parentUrl, '404'], { state: { message } }));
19
19
  }
20
- initFlow$() {
21
- if (this.quoteDraftService.isStandalone) {
22
- return of(undefined);
23
- }
24
- return this.flowConfiguration.initialize$();
25
- }
26
20
  resolve(route) {
27
21
  const { headerId } = this.contextService.resolve();
28
- const quote = this.quoteDraftService.quoteSnapshot;
22
+ const quote = this.quoteDraftService.quoteDraft;
29
23
  if (quote && quote.quoteId === headerId) {
30
24
  return of(true);
31
25
  }
32
26
  const { queryParams } = route;
33
- this.contextService.update({ properties: queryParams });
34
- return this.quoteDraftService.init(headerId, queryParams).pipe(switchMap(() => this.initFlow$()), catchError(e => {
27
+ return this.quoteDraftService.init(headerId, queryParams).pipe(catchError(e => {
35
28
  const message = e instanceof HttpErrorResponse ? e.error.message : e;
36
29
  return this.handleError(route, message);
37
30
  }));
@@ -42,4 +35,4 @@ QuoteResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
42
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteResolver, decorators: [{
43
36
  type: Injectable
44
37
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.QuoteDraftService }, { type: i3.FlowRouterService }, { type: i2.ContextService }, { type: i2.FlowConfigurationService }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcmVzb2x2ZXJzL3F1b3RlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFJbkUsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFDVSxNQUFjLEVBQ2QsaUJBQW9DLEVBQ3BDLGFBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLGlCQUEyQztRQUozQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7SUFDbEQsQ0FBQztJQUVJLFdBQVcsQ0FBQyxLQUE2QixFQUFFLE9BQWU7UUFDaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBNkI7UUFDbkMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztRQUVuRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtRQUVELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV4RCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUNqQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7MkdBeENVLGFBQWE7K0dBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSZXNvbHZlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIEZsb3dDb25maWd1cmF0aW9uU2VydmljZSwgUXVvdGVEcmFmdFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZyb20sIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdW90ZVJlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTx2b2lkIHwgYm9vbGVhbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGFyZW50VXJsID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmdldEZsb3dSb290UGF0aChyb3V0ZSk7XG4gICAgcmV0dXJuIGZyb20odGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhcmVudFVybCwgJzQwNCddLCB7IHN0YXRlOiB7IG1lc3NhZ2UgfSB9KSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGbG93JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzU3RhbmRhbG9uZSkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uaW5pdGlhbGl6ZSQoKTtcbiAgfVxuXG4gIHJlc29sdmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPHZvaWQgfCBib29sZWFuPiB7XG4gICAgY29uc3QgeyBoZWFkZXJJZCB9ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlU25hcHNob3Q7XG5cbiAgICBpZiAocXVvdGUgJiYgcXVvdGUucXVvdGVJZCA9PT0gaGVhZGVySWQpIHtcbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHF1ZXJ5UGFyYW1zIH0gPSByb3V0ZTtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHF1ZXJ5UGFyYW1zIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaW5pdChoZWFkZXJJZCwgcXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0RmxvdyQoKSksXG4gICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZSBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlID8gZS5lcnJvci5tZXNzYWdlIDogZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3Iocm91dGUsIG1lc3NhZ2UpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcmVzb2x2ZXJzL3F1b3RlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUl4RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUNVLE1BQWMsRUFDZCxpQkFBb0MsRUFDcEMsYUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsaUJBQTJDO1FBSjNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtJQUNsRCxDQUFDO0lBRUksV0FBVyxDQUFDLEtBQTZCLEVBQUUsT0FBZTtRQUNoRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBNkI7UUFDbkMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztRQUVoRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtRQUVELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzVELFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzsyR0E5QlUsYUFBYTsrR0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdW90ZVJlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTx2b2lkIHwgYm9vbGVhbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGFyZW50VXJsID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmdldEZsb3dSb290UGF0aChyb3V0ZSk7XG4gICAgcmV0dXJuIGZyb20odGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhcmVudFVybCwgJzQwNCddLCB7IHN0YXRlOiB7IG1lc3NhZ2UgfSB9KSk7XG4gIH1cblxuICByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTx2b2lkIHwgYm9vbGVhbj4ge1xuICAgIGNvbnN0IHsgaGVhZGVySWQgfSA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICAgIGNvbnN0IHF1b3RlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuXG4gICAgaWYgKHF1b3RlICYmIHF1b3RlLnF1b3RlSWQgPT09IGhlYWRlcklkKSB7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBxdWVyeVBhcmFtcyB9ID0gcm91dGU7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pbml0KGhlYWRlcklkLCBxdWVyeVBhcmFtcykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgPyBlLmVycm9yLm1lc3NhZ2UgOiBlO1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihyb3V0ZSwgbWVzc2FnZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -18,8 +18,8 @@ export class FlowService {
18
18
  this.integrationState
19
19
  .listen$(FlowAction.FLOW_CONFIGURE_PRODUCT)
20
20
  .pipe(takeUntil(this.cleanup$), tap(payload => {
21
- var _a, _b, _c;
22
- const productId = (_a = payload.productId) !== null && _a !== void 0 ? _a : (_c = (_b = this.quoteDraftService.quoteSnapshot) === null || _b === void 0 ? void 0 : _b.currentState.find(li => li.id === payload.lineItemId)) === null || _c === void 0 ? void 0 : _c.productId;
21
+ var _a, _b;
22
+ const productId = (_a = payload.productId) !== null && _a !== void 0 ? _a : (_b = this.quoteDraftService.currentState.find(li => li.id === payload.lineItemId)) === null || _b === void 0 ? void 0 : _b.productId;
23
23
  if (productId) {
24
24
  this.flowRouterService.navigateToProductConfiguration(productId, payload.lineItemId);
25
25
  }
@@ -39,7 +39,7 @@ export class FlowService {
39
39
  if (!lineItem) {
40
40
  return of(undefined);
41
41
  }
42
- const currentState = this.flowConfigurationService.getSnapshot();
42
+ const currentState = this.quoteDraftService.currentState;
43
43
  const isNewLineItem = currentState.every(li => li.id !== lineItem.id);
44
44
  let updatedState;
45
45
  if (isNewLineItem) {
@@ -48,7 +48,8 @@ export class FlowService {
48
48
  else {
49
49
  updatedState = currentState.map(li => (li.id === lineItem.id ? lineItem : li));
50
50
  }
51
- return this.flowConfigurationService.calculate$(updatedState);
51
+ this.quoteDraftService.setCurrentLineItemState(updatedState);
52
+ return this.flowConfigurationService.calculate$();
52
53
  }), tap(() => {
53
54
  this.configurationService.hasUnsavedChanges = false;
54
55
  this.flowRouterService.navigateToShoppingCart();
@@ -64,4 +65,4 @@ FlowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
64
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowService, decorators: [{
65
66
  type: Injectable
66
67
  }], ctorParameters: function () { return [{ type: i1.IntegrationState }, { type: i2.FlowRouterService }, { type: i3.QuoteDraftService }, { type: i3.ConfigurationService }, { type: i3.FlowConfigurationService }]; } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3NlcnZpY2VzL2Zsb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBSTlELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxpQkFBb0MsRUFDcEMsb0JBQTBDLEVBQzFDLHdCQUFrRDtRQUpsRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFQcEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRcEMsQ0FBQztJQUVHLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLE9BQU8sQ0FBOEMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO2FBQ3ZGLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7O1lBQ1osTUFBTSxTQUFTLEdBQ2IsTUFBQSxPQUFPLENBQUMsU0FBUyxtQ0FDakIsTUFBQSxNQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLDBDQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsMENBQUUsU0FBUyxDQUFDO1lBRXpHLElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3RGO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0RBQXdELENBQUMsQ0FBQzthQUN4RTtRQUNILENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLE9BQU8sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUM7YUFDdEMsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FDakQ7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQzthQUNwRCxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6RCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3RCO1lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0RSxJQUFJLFlBQXdCLENBQUM7WUFDN0IsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzVDO2lCQUFNO2dCQUNMLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoRjtZQUVELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzt5R0F2RVUsV0FBVzs2R0FBWCxXQUFXOzRGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaW5lSXRlbSB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBGbG93QWN0aW9uLCBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY21zJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlLCBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsIFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY29yZSc7XG5pbXBvcnQgeyBvZiwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd1JvdXRlclNlcnZpY2UgfSBmcm9tICcuL2Zsb3ctcm91dGVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1NlcnZpY2Uge1xuICBwcml2YXRlIGNsZWFudXAkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludGVncmF0aW9uU3RhdGU6IEludGVncmF0aW9uU3RhdGUsXG4gICAgcHJpdmF0ZSBmbG93Um91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvblNlcnZpY2U6IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBpbml0U3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kPHsgbGluZUl0ZW1JZD86IHN0cmluZzsgcHJvZHVjdElkPzogc3RyaW5nIH0+KEZsb3dBY3Rpb24uRkxPV19DT05GSUdVUkVfUFJPRFVDVClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jbGVhbnVwJCksXG4gICAgICAgIHRhcChwYXlsb2FkID0+IHtcbiAgICAgICAgICBjb25zdCBwcm9kdWN0SWQgPVxuICAgICAgICAgICAgcGF5bG9hZC5wcm9kdWN0SWQgPz9cbiAgICAgICAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVTbmFwc2hvdD8uY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkuaWQgPT09IHBheWxvYWQubGluZUl0ZW1JZCk/LnByb2R1Y3RJZDtcblxuICAgICAgICAgIGlmIChwcm9kdWN0SWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Byb2R1Y3RDb25maWd1cmF0aW9uKHByb2R1Y3RJZCwgcGF5bG9hZC5saW5lSXRlbUlkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiUGFyYW1ldGVyICdwcm9kdWN0SWQnIGlzIG5lZWRlZCB0byBzdGFydCBjb25maWd1cmF0aW9uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kKEZsb3dBY3Rpb24uRkxPV19OQVZJR0FURV9CQUNLKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVCYWNrKCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBsaW5lSXRlbSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0U25hcHNob3QoKTtcblxuICAgICAgICAgIGlmICghbGluZUl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFNuYXBzaG90KCk7XG4gICAgICAgICAgY29uc3QgaXNOZXdMaW5lSXRlbSA9IGN1cnJlbnRTdGF0ZS5ldmVyeShsaSA9PiBsaS5pZCAhPT0gbGluZUl0ZW0uaWQpO1xuXG4gICAgICAgICAgbGV0IHVwZGF0ZWRTdGF0ZTogTGluZUl0ZW1bXTtcbiAgICAgICAgICBpZiAoaXNOZXdMaW5lSXRlbSkge1xuICAgICAgICAgICAgdXBkYXRlZFN0YXRlID0gWy4uLmN1cnJlbnRTdGF0ZSwgbGluZUl0ZW1dO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGRhdGVkU3RhdGUgPSBjdXJyZW50U3RhdGUubWFwKGxpID0+IChsaS5pZCA9PT0gbGluZUl0ZW0uaWQgPyBsaW5lSXRlbSA6IGxpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmNhbGN1bGF0ZSQodXBkYXRlZFN0YXRlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cCQubmV4dCgpO1xuICB9XG59XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3NlcnZpY2VzL2Zsb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBSTlELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxpQkFBb0MsRUFDcEMsb0JBQTBDLEVBQzFDLHdCQUFrRDtRQUpsRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFQcEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRcEMsQ0FBQztJQUVHLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLE9BQU8sQ0FBOEMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO2FBQ3ZGLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7O1lBQ1osTUFBTSxTQUFTLEdBQ2IsTUFBQSxPQUFPLENBQUMsU0FBUyxtQ0FDakIsTUFBQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQywwQ0FBRSxTQUFTLENBQUM7WUFFMUYsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdEY7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQzthQUN0QyxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUNqRDthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixPQUFPLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDO2FBQ3BELElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXpELElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdEI7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDO1lBQ3pELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0RSxJQUFJLFlBQXdCLENBQUM7WUFDN0IsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzVDO2lCQUFNO2dCQUNMLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoRjtZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU3RCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzt5R0F6RVUsV0FBVzs2R0FBWCxXQUFXOzRGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaW5lSXRlbSB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBGbG93QWN0aW9uLCBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY21zJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlLCBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsIFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY29yZSc7XG5pbXBvcnQgeyBvZiwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd1JvdXRlclNlcnZpY2UgfSBmcm9tICcuL2Zsb3ctcm91dGVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1NlcnZpY2Uge1xuICBwcml2YXRlIGNsZWFudXAkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludGVncmF0aW9uU3RhdGU6IEludGVncmF0aW9uU3RhdGUsXG4gICAgcHJpdmF0ZSBmbG93Um91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvblNlcnZpY2U6IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBpbml0U3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kPHsgbGluZUl0ZW1JZD86IHN0cmluZzsgcHJvZHVjdElkPzogc3RyaW5nIH0+KEZsb3dBY3Rpb24uRkxPV19DT05GSUdVUkVfUFJPRFVDVClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jbGVhbnVwJCksXG4gICAgICAgIHRhcChwYXlsb2FkID0+IHtcbiAgICAgICAgICBjb25zdCBwcm9kdWN0SWQgPVxuICAgICAgICAgICAgcGF5bG9hZC5wcm9kdWN0SWQgPz9cbiAgICAgICAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkuaWQgPT09IHBheWxvYWQubGluZUl0ZW1JZCk/LnByb2R1Y3RJZDtcblxuICAgICAgICAgIGlmIChwcm9kdWN0SWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Byb2R1Y3RDb25maWd1cmF0aW9uKHByb2R1Y3RJZCwgcGF5bG9hZC5saW5lSXRlbUlkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiUGFyYW1ldGVyICdwcm9kdWN0SWQnIGlzIG5lZWRlZCB0byBzdGFydCBjb25maWd1cmF0aW9uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kKEZsb3dBY3Rpb24uRkxPV19OQVZJR0FURV9CQUNLKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmxvd1JvdXRlclNlcnZpY2UubmF2aWdhdGVCYWNrKCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLkZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBsaW5lSXRlbSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0U25hcHNob3QoKTtcblxuICAgICAgICAgIGlmICghbGluZUl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuY3VycmVudFN0YXRlO1xuICAgICAgICAgIGNvbnN0IGlzTmV3TGluZUl0ZW0gPSBjdXJyZW50U3RhdGUuZXZlcnkobGkgPT4gbGkuaWQgIT09IGxpbmVJdGVtLmlkKTtcblxuICAgICAgICAgIGxldCB1cGRhdGVkU3RhdGU6IExpbmVJdGVtW107XG4gICAgICAgICAgaWYgKGlzTmV3TGluZUl0ZW0pIHtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGF0ZSA9IFsuLi5jdXJyZW50U3RhdGUsIGxpbmVJdGVtXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXBkYXRlZFN0YXRlID0gY3VycmVudFN0YXRlLm1hcChsaSA9PiAobGkuaWQgPT09IGxpbmVJdGVtLmlkID8gbGluZUl0ZW0gOiBsaSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2Uuc2V0Q3VycmVudExpbmVJdGVtU3RhdGUodXBkYXRlZFN0YXRlKTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZsb3dSb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYW51cCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXAkLm5leHQoKTtcbiAgfVxufVxuIl19
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, NgModule } from '@angular/core';
3
3
  import { UUID, ConfigurationContext, ConfigurationContextMode, RuntimeModel, SalesforceIdUtils, ConfigurationMode } from '@veloce/core';
4
- import { BehaviorSubject, map as map$1, distinctUntilChanged, catchError, of, tap as tap$1, zip, combineLatest, throwError, shareReplay, noop, switchMap as switchMap$1 } from 'rxjs';
5
- import { filter, tap, map, take, first, catchError as catchError$1, switchMap, finalize } from 'rxjs/operators';
4
+ import { BehaviorSubject, map as map$1, distinctUntilChanged, catchError, of, tap as tap$1, zip, noop, combineLatest, throwError, shareReplay as shareReplay$1, switchMap as switchMap$1 } from 'rxjs';
5
+ import { filter, tap, map, take, shareReplay, first, catchError as catchError$1, switchMap, finalize } from 'rxjs/operators';
6
6
  import * as i1 from '@veloce/api';
7
7
  import { PriceApiService, ContextApiService, ProductModelApiService, ConfigurationApiService } from '@veloce/api';
8
8
  import { merge, flatten, sortBy, cloneDeep } from 'lodash';
@@ -100,57 +100,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
100
100
  }], ctorParameters: function () { return [{ type: i1.ProductApiService }]; } });
101
101
 
102
102
  class QuoteDraftService {
103
- constructor(context, quoteApiService, priceApiService) {
103
+ constructor(context, quoteApiService, priceApiService, sfApiService) {
104
104
  this.context = context;
105
105
  this.quoteApiService = quoteApiService;
106
106
  this.priceApiService = priceApiService;
107
+ this.sfApiService = sfApiService;
107
108
  this.quoteSubj$ = new BehaviorSubject(null);
108
109
  this.resetSubj$ = new BehaviorSubject(true);
109
- this.priceLists = [];
110
110
  this.isInitialized = false;
111
+ this.allPriceLists = [];
112
+ this.assetPriceLists = [];
111
113
  this.hasUnsavedChanges = false;
112
114
  this.reset$ = this.resetSubj$.asObservable();
115
+ this.activePriceList$ = this.context.resolve$().pipe(map(ctx => this.allPriceLists.find(priceList => priceList.id === ctx.properties.PriceListId)), filter((priceList) => Boolean(priceList)));
113
116
  }
114
117
  reset() {
115
118
  this.resetSubj$.next(true);
116
119
  this.quoteSubj$.next(null);
117
120
  }
118
121
  init(quoteId, params) {
119
- return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists(), this.context.resolve$()).pipe(tap(([quote, priceLists, context]) => {
122
+ return zip(this.context.resolve$(), this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(tap(([context, quote, allPriceLists]) => {
123
+ this.allPriceLists = allPriceLists;
120
124
  this.quoteSubj$.next(quote);
121
- this.priceLists = priceLists;
122
- this.quotePriceList = priceLists.find(p => p.id === context.properties.PriceListId);
123
125
  this.context.update(Object.assign(Object.assign(Object.assign({}, context), quote.context), { properties: Object.assign(Object.assign({}, context.properties), quote.context.properties) }));
124
- }), map(() => {
126
+ }), tap(() => {
127
+ this.populateActivePriceLists$();
125
128
  this.isInitialized = true;
126
- }), take(1));
129
+ }), map(() => noop()), take(1));
127
130
  }
128
131
  setCurrentLineItemState(lineItems) {
129
- const quote = this.quoteSubj$.value;
130
- if (!quote) {
132
+ const quoteDraft = this.quoteSubj$.value;
133
+ if (!quoteDraft) {
131
134
  return;
132
135
  }
133
- this.quoteSubj$.next(Object.assign(Object.assign({}, quote), { currentState: lineItems }));
136
+ this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), { currentState: lineItems }));
134
137
  this.markAsUpdated();
135
138
  }
139
+ updateQuoteDraft(update) {
140
+ const quoteDraft = this.quoteSubj$.value;
141
+ if (!quoteDraft) {
142
+ return;
143
+ }
144
+ if (update.context) {
145
+ this.context.update(update.context);
146
+ }
147
+ this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), update));
148
+ }
136
149
  updateByPriceSummary(priceSummary) {
137
- const quote = this.quoteSubj$.value;
138
- if (!quote) {
150
+ const quoteDraft = this.quoteSubj$.value;
151
+ if (!quoteDraft) {
139
152
  return;
140
153
  }
141
- this.quoteSubj$.next(Object.assign(Object.assign({}, quote), { currentState: priceSummary.lineItems, totalPrices: priceSummary.totalPrices, approvalItems: priceSummary.approvalItems }));
154
+ const updatedCurrentState = this.currentState.map(lineItem => {
155
+ const updated = priceSummary.lineItems.find(li => li.id === lineItem.id);
156
+ return updated !== null && updated !== void 0 ? updated : lineItem;
157
+ });
158
+ this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedCurrentState, totalPrices: priceSummary.totalPrices, approvalItems: priceSummary.approvalItems }));
142
159
  this.markAsUpdated();
143
160
  }
144
- get quote$() {
145
- return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(map(() => this.quoteSnapshot), filter((quote) => Boolean(quote)));
161
+ get quoteDraft$() {
162
+ return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(map(() => this.quoteDraft), filter((quote) => Boolean(quote)), shareReplay());
146
163
  }
147
- get quoteSnapshot() {
164
+ get quoteDraft() {
148
165
  const quote = this.quoteSubj$.value;
149
166
  if (!quote) {
150
167
  return null;
151
168
  }
152
169
  return Object.assign(Object.assign({}, quote), { context: this.context.resolve() });
153
170
  }
171
+ get currentState$() {
172
+ return this.quoteDraft$.pipe(map(quote => quote.currentState));
173
+ }
174
+ get currentState() {
175
+ var _a, _b;
176
+ return (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
177
+ }
178
+ /**
179
+ * Stream of activeCurrentState
180
+ */
181
+ get activeCurrentState$() {
182
+ return this.quoteDraft$.pipe(map(() => this.activeCurrentState));
183
+ }
184
+ /**
185
+ * activeCurrentState is currentState passed through additional filters
186
+ */
187
+ get activeCurrentState() {
188
+ var _a, _b;
189
+ const ctx = this.context.resolve();
190
+ let currentState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
191
+ if (ctx.mode === ConfigurationContextMode.ACCOUNT) {
192
+ currentState = this.filterByActivePriceList(currentState);
193
+ }
194
+ return currentState;
195
+ }
196
+ /**
197
+ * Stream of activeInitialState
198
+ */
199
+ get activeInitialState$() {
200
+ return this.quoteDraft$.pipe(map(() => this.activeInitialState));
201
+ }
202
+ /**
203
+ * activeInitialState is initialState passed through additional filters
204
+ */
205
+ get activeInitialState() {
206
+ var _a, _b;
207
+ const ctx = this.context.resolve();
208
+ let initialState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.initialState) !== null && _b !== void 0 ? _b : [];
209
+ if (ctx.mode === ConfigurationContextMode.ACCOUNT) {
210
+ initialState = this.filterByActivePriceList(initialState);
211
+ }
212
+ return initialState;
213
+ }
154
214
  get isStandalone() {
155
215
  return this.context.resolve().properties.standalone === 'true';
156
216
  }
@@ -167,18 +227,55 @@ class QuoteDraftService {
167
227
  }
168
228
  return false;
169
229
  }
230
+ updateActivePriceList(priceListId) {
231
+ this.context.update({ properties: { PriceListId: priceListId } });
232
+ }
233
+ populateActivePriceLists$() {
234
+ const ctx = this.context.resolve();
235
+ const quoteDraft = this.quoteDraft;
236
+ if (!quoteDraft) {
237
+ return;
238
+ }
239
+ // In ACCOUNT mode populate price lists from related assets
240
+ if (ctx.mode === ConfigurationContextMode.ACCOUNT) {
241
+ // Populate list of price lists
242
+ this.assetPriceLists = quoteDraft.currentState
243
+ .map(({ priceListId }) => priceListId)
244
+ .reduce((trunk, priceListId) => {
245
+ var _a, _b;
246
+ if (!priceListId || trunk.some(item => item.id === priceListId)) {
247
+ return trunk;
248
+ }
249
+ return [
250
+ ...trunk,
251
+ { id: priceListId, name: (_b = (_a = this.allPriceLists.find(item => item.id === priceListId)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '' },
252
+ ];
253
+ }, []);
254
+ const activePriceList = this.assetPriceLists[0];
255
+ this.updateActivePriceList(activePriceList.id);
256
+ // Update PriceListId in context properties
257
+ // TODO: remove it when backend will have such logic
258
+ if (this.assetPriceLists.length) {
259
+ this.context.update({ properties: { PriceListId: activePriceList.id } });
260
+ }
261
+ }
262
+ }
263
+ filterByActivePriceList(lineItems) {
264
+ const ctx = this.context.resolve();
265
+ return lineItems.filter(li => !li.priceListId || li.priceListId === ctx.properties.PriceListId);
266
+ }
170
267
  markAsUpdated() {
171
268
  if (this.isInitialized && !this.hasUnsavedChanges) {
172
269
  this.hasUnsavedChanges = true;
173
270
  }
174
271
  }
175
272
  }
176
- QuoteDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteDraftService, deps: [{ token: ContextService }, { token: i1.QuoteApiService }, { token: i1.PriceApiService }], target: i0.ɵɵFactoryTarget.Injectable });
273
+ QuoteDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteDraftService, deps: [{ token: ContextService }, { token: i1.QuoteApiService }, { token: i1.PriceApiService }, { token: i1.SalesforceApiService }], target: i0.ɵɵFactoryTarget.Injectable });
177
274
  QuoteDraftService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteDraftService, providedIn: 'root' });
178
275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: QuoteDraftService, decorators: [{
179
276
  type: Injectable,
180
277
  args: [{ providedIn: 'root' }]
181
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i1.QuoteApiService }, { type: i1.PriceApiService }]; } });
278
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i1.QuoteApiService }, { type: i1.PriceApiService }, { type: i1.SalesforceApiService }]; } });
182
279
 
183
280
  class RuntimeContextService {
184
281
  constructor(configurationApiService, messageService) {
@@ -498,7 +595,7 @@ class ConfigurationService {
498
595
  this.states = Object.assign(Object.assign({}, this.states), update);
499
596
  }
500
597
  get() {
501
- return this.lineItem.asObservable().pipe(shareReplay());
598
+ return this.lineItem.asObservable().pipe(shareReplay$1());
502
599
  }
503
600
  getSnapshot() {
504
601
  return this.lineItem.value ? Object.assign({}, this.lineItem.value) : undefined;
@@ -532,8 +629,6 @@ class ConfigurationService {
532
629
  const qty = (_d = this.runtimeService.initializationProps) === null || _d === void 0 ? void 0 : _d.defaultQty;
533
630
  const lineItem = (_e = this.states.configurableRamp) !== null && _e !== void 0 ? _e : getDefaultLineItem(runtimeContext, uiDefinitionProperties, qty);
534
631
  const configurationRequest = this.createRequest(lineItem);
535
- configurationRequest.lineItems = this.states.currentState || [];
536
- configurationRequest.asset = this.states.asset;
537
632
  const mainPricingEnabled = (_f = runtimeContext.properties) === null || _f === void 0 ? void 0 : _f.PricingEnabled;
538
633
  const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;
539
634
  return this.configurationApiService
@@ -549,10 +644,9 @@ class ConfigurationService {
549
644
  .pipe(tap(lineItem => lineItem && this.lineItem.next(lineItem)), catchError$1(error => throwError(() => { var _a; return new Error(((_a = error.error) === null || _a === void 0 ? void 0 : _a.message) || error.message || JSON.stringify(error)); })));
550
645
  }
551
646
  configureExternal$(productId, qty) {
552
- // TODO: uncomment when procedure issue is fixed on backend side
553
- // this.updateCurrentStates({
554
- // currentState: this.quoteDraftService.quoteSnapshot?.currentState ?? [],
555
- // });
647
+ this.updateCurrentStates({
648
+ currentState: this.quoteDraftService.currentState,
649
+ });
556
650
  return this.runtimeService.init({ productId, defaultQty: qty }).pipe(switchMap(() => this.configure()), first(), catchError$1(error => {
557
651
  this.messageService.add({ severity: ToastType.error, summary: error });
558
652
  throw error;
@@ -565,6 +659,8 @@ class ConfigurationService {
565
659
  step: !this.lineItem.value ? RuntimeStep.START : RuntimeStep.UPDATE,
566
660
  attributeDomainMode: 'ALL',
567
661
  context: this.contextService.resolve(),
662
+ lineItems: this.states.currentState || [],
663
+ asset: this.states.asset,
568
664
  };
569
665
  }
570
666
  showInactiveProductsConfirmation() {
@@ -709,70 +805,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
709
805
  }] });
710
806
 
711
807
  class FlowConfigurationService {
712
- constructor(priceApiService, contextService, quoteDraftService, messageService, updateService, configurationService) {
713
- this.priceApiService = priceApiService;
808
+ constructor(proceduresApiService, contextService, quoteDraftService, updateService, configurationService) {
809
+ this.proceduresApiService = proceduresApiService;
714
810
  this.contextService = contextService;
715
811
  this.quoteDraftService = quoteDraftService;
716
- this.messageService = messageService;
717
812
  this.updateService = updateService;
718
813
  this.configurationService = configurationService;
719
- this.charges = new BehaviorSubject({});
720
- this.bounceBackUpdate$ = new BehaviorSubject(true);
721
814
  }
722
- reset() {
723
- this.charges.next({});
724
- }
725
- initialize$() {
726
- var _a;
727
- (_a = this.resetSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
728
- this.resetSubscription = this.quoteDraftService.reset$.subscribe(() => this.reset());
729
- return this.calculate$(this.getSnapshot()).pipe(map$1(noop));
730
- }
731
- calculate$(currentState) {
732
- const context = this.contextService.resolve();
733
- return this.priceApiService.calculate({ context, currentState }).pipe(tap$1((result) => {
734
- this.quoteDraftService.updateByPriceSummary(result);
735
- this.charges.next(result.charges);
736
- if (context) {
737
- this.contextService.update({ properties: context.properties });
738
- }
739
- }), this.handleError());
815
+ calculate$() {
816
+ const quoteDraft = this.quoteDraftService.quoteDraft;
817
+ if (!quoteDraft || !quoteDraft.currentState.length) {
818
+ return of(undefined);
819
+ }
820
+ return this.proceduresApiService.apply$(quoteDraft).pipe(tap$1(result => this.quoteDraftService.updateQuoteDraft(result)), map$1(noop));
740
821
  }
741
- calculate(currentState) {
742
- this.calculate$(currentState).subscribe();
822
+ calculate() {
823
+ this.calculate$().subscribe();
743
824
  }
744
825
  update$(updates) {
745
- const lineItems = cloneDeep(this.getSnapshot());
746
- return of([]).pipe(tap$1(() => this.updateService.update(lineItems, updates)), this.handleError(), switchMap$1(() => this.calculate$(lineItems)));
826
+ const currentState = this.quoteDraftService.currentState;
827
+ return of([]).pipe(tap$1(() => {
828
+ const updatedState = cloneDeep(currentState);
829
+ this.updateService.update(updatedState, updates);
830
+ this.quoteDraftService.setCurrentLineItemState(updatedState);
831
+ }), switchMap$1(() => this.calculate$()), map$1(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack(currentState));
747
832
  }
748
833
  update(updates) {
749
834
  this.update$(updates).subscribe();
750
835
  }
751
836
  delete$(ids) {
752
- return of([]).pipe(map$1(() => ids.reduce((result, id) => this.updateService.delete(result, id), this.getSnapshot())), this.handleError(), switchMap$1(currentState => this.calculate$(currentState)));
837
+ const currentState = this.quoteDraftService.currentState;
838
+ return of([]).pipe(tap$1(() => {
839
+ const updatedState = ids.reduce((result, id) => this.updateService.delete(result, id), currentState);
840
+ this.quoteDraftService.setCurrentLineItemState(updatedState);
841
+ }), switchMap$1(() => this.calculate$()), map$1(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack(currentState));
753
842
  }
754
843
  delete(ids) {
755
844
  this.delete$(ids).subscribe();
756
845
  }
757
- get() {
758
- return combineLatest([this.quoteDraftService.quote$, this.bounceBackUpdate$]).pipe(map$1(([quoteDraft]) => quoteDraft.currentState), shareReplay());
846
+ addTerm$(term) {
847
+ const currentState = this.quoteDraftService.currentState;
848
+ return of([]).pipe(tap$1(() => this.quoteDraftService.setCurrentLineItemState([...currentState, term])), switchMap$1(() => this.calculate$()), map$1(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack(currentState));
759
849
  }
760
850
  addToCart$(productId, qty) {
761
- return this.configurationService.configureExternal$(productId, qty).pipe(tap$1(lineItem => {
762
- var _a, _b;
763
- const currentState = (_b = (_a = this.quoteDraftService.quoteSnapshot) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
764
- this.quoteDraftService.setCurrentLineItemState([...currentState, lineItem]);
765
- }), map$1(noop));
851
+ const currentState = this.quoteDraftService.currentState;
852
+ return this.configurationService.configureExternal$(productId, qty).pipe(tap$1(lineItem => this.quoteDraftService.setCurrentLineItemState([...currentState, lineItem])), switchMap$1(() => this.calculate$()), map$1(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack(currentState));
853
+ }
854
+ get() {
855
+ return this.quoteDraftService.quoteDraft$.pipe(map$1(() => this.quoteDraftService.activeCurrentState), shareReplay$1());
766
856
  }
767
857
  getSnapshot() {
768
858
  var _a, _b;
769
- return (_b = (_a = this.quoteDraftService.quoteSnapshot) === null || _a === void 0 ? void 0 : _a.currentState.slice()) !== null && _b !== void 0 ? _b : [];
859
+ return (_b = (_a = this.quoteDraftService) === null || _a === void 0 ? void 0 : _a.currentState.slice()) !== null && _b !== void 0 ? _b : [];
770
860
  }
771
861
  get charges$() {
772
- return this.charges.asObservable();
862
+ return this.quoteDraftService.quoteDraft$.pipe(map$1(({ charges }) => charges));
773
863
  }
774
864
  get chargesSnapshot() {
775
- return this.charges.value;
865
+ var _a, _b;
866
+ return (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.charges) !== null && _b !== void 0 ? _b : {};
776
867
  }
777
868
  get contextSnapshot() {
778
869
  return this.contextService.resolve();
@@ -780,22 +871,22 @@ class FlowConfigurationService {
780
871
  get context$() {
781
872
  return this.contextService.resolve$();
782
873
  }
783
- handleError() {
874
+ handleErrorAndBounceBack(stateToRestore) {
784
875
  return (source$) => {
785
876
  return source$.pipe(catchError(error => {
786
877
  console.error(error);
787
878
  // bounce back if configuration call has failed
788
- this.bounceBackUpdate$.next(true);
879
+ this.quoteDraftService.setCurrentLineItemState(stateToRestore);
789
880
  return throwError(() => error);
790
881
  }));
791
882
  };
792
883
  }
793
884
  }
794
- FlowConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.PriceApiService }, { token: ContextService }, { token: QuoteDraftService }, { token: i2.MessageService }, { token: FlowUpdateService }, { token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
885
+ FlowConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.ProceduresApiService }, { token: ContextService }, { token: QuoteDraftService }, { token: FlowUpdateService }, { token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
795
886
  FlowConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService });
796
887
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowConfigurationService, decorators: [{
797
888
  type: Injectable
798
- }], ctorParameters: function () { return [{ type: i1.PriceApiService }, { type: ContextService }, { type: QuoteDraftService }, { type: i2.MessageService }, { type: FlowUpdateService }, { type: ConfigurationService }]; } });
889
+ }], ctorParameters: function () { return [{ type: i1.ProceduresApiService }, { type: ContextService }, { type: QuoteDraftService }, { type: FlowUpdateService }, { type: ConfigurationService }]; } });
799
890
 
800
891
  class FlowConfigurationModule {
801
892
  }