@veloceapps/sdk 11.0.0-9 → 11.0.0-90

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 (183) hide show
  1. package/cms/cms.actions.d.ts +94 -29
  2. package/cms/components/element-renderer/element-renderer.component.d.ts +3 -10
  3. package/cms/components/preview/preview.component.d.ts +5 -6
  4. package/cms/components/preview/preview.types.d.ts +0 -4
  5. package/cms/services/element-context.service.d.ts +0 -1
  6. package/cms/types/common.types.d.ts +2 -0
  7. package/cms/types/index.d.ts +0 -1
  8. package/cms/utils/path.utils.d.ts +1 -2
  9. package/cms/vendor-map.d.ts +18 -40
  10. package/core/index.d.ts +1 -1
  11. package/core/modules/configuration/index.d.ts +4 -4
  12. package/core/modules/configuration/services/configuration-runtime.service.d.ts +8 -19
  13. package/core/modules/configuration/services/configuration-state.service.d.ts +8 -8
  14. package/core/modules/configuration/services/configuration.service.d.ts +22 -52
  15. package/core/modules/configuration/services/guided-selling.service.d.ts +13 -0
  16. package/core/modules/configuration/services/test-mode-configuration.service.d.ts +23 -0
  17. package/core/modules/configuration/types/configuration-runtime.types.d.ts +0 -5
  18. package/core/modules/configuration/types/configuration.types.d.ts +4 -2
  19. package/core/modules/configuration/types/index.d.ts +2 -0
  20. package/core/modules/flow-configuration/index.d.ts +0 -3
  21. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +11 -38
  22. package/core/operators/filter-successful-execute.operator.d.ts +3 -0
  23. package/core/operators/index.d.ts +1 -0
  24. package/core/services/catalog-products.service.d.ts +11 -0
  25. package/core/services/flow-info.service.d.ts +27 -12
  26. package/core/services/flow-state-configuration.service.d.ts +9 -8
  27. package/core/services/flow-state.service.d.ts +12 -24
  28. package/core/services/index.d.ts +3 -3
  29. package/core/services/integration.state.d.ts +1 -1
  30. package/core/services/product-images.service.d.ts +3 -3
  31. package/core/services/runtime-settings.service.d.ts +1 -1
  32. package/core/services/sales-transaction.service.d.ts +27 -0
  33. package/core/types/flow-customization.types.d.ts +2 -2
  34. package/core/types/flow-state.types.d.ts +2 -2
  35. package/core/types/index.d.ts +0 -1
  36. package/core/utils/index.d.ts +2 -2
  37. package/core/utils/transaction-item.utils.d.ts +7 -0
  38. package/core/utils/transaction-item.worker.d.ts +8 -0
  39. package/esm2020/cms/cms.actions.mjs +93 -71
  40. package/esm2020/cms/cms.default.mjs +2 -3
  41. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +7 -64
  42. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
  43. package/esm2020/cms/components/preview/preview.component.mjs +19 -28
  44. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  45. package/esm2020/cms/services/element-context.service.mjs +1 -1
  46. package/esm2020/cms/types/common.types.mjs +1 -1
  47. package/esm2020/cms/types/index.mjs +1 -2
  48. package/esm2020/cms/utils/element.utils.mjs +3 -3
  49. package/esm2020/cms/utils/elements-resolver.mjs +16 -5
  50. package/esm2020/cms/utils/path.utils.mjs +1 -10
  51. package/esm2020/cms/vendor-map.mjs +18 -18
  52. package/esm2020/core/core.module.mjs +7 -7
  53. package/esm2020/core/index.mjs +2 -2
  54. package/esm2020/core/modules/configuration/configuration.module.mjs +17 -4
  55. package/esm2020/core/modules/configuration/index.mjs +5 -5
  56. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +16 -101
  57. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +69 -77
  58. package/esm2020/core/modules/configuration/services/configuration.service.mjs +115 -247
  59. package/esm2020/core/modules/configuration/services/guided-selling.service.mjs +47 -0
  60. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +74 -0
  61. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +1 -1
  62. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  63. package/esm2020/core/modules/configuration/types/index.mjs +3 -0
  64. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +3 -4
  65. package/esm2020/core/modules/flow-configuration/index.mjs +1 -4
  66. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +44 -128
  67. package/esm2020/core/operators/filter-successful-execute.operator.mjs +5 -0
  68. package/esm2020/core/operators/index.mjs +2 -0
  69. package/esm2020/core/services/catalog-products.service.mjs +25 -0
  70. package/esm2020/core/services/flow-info.service.mjs +82 -31
  71. package/esm2020/core/services/flow-state-configuration.service.mjs +52 -25
  72. package/esm2020/core/services/flow-state.service.mjs +58 -180
  73. package/esm2020/core/services/index.mjs +4 -4
  74. package/esm2020/core/services/integration.state.mjs +2 -2
  75. package/esm2020/core/services/product-images.service.mjs +8 -8
  76. package/esm2020/core/services/runtime-settings.service.mjs +3 -3
  77. package/esm2020/core/services/sales-transaction.service.mjs +67 -0
  78. package/esm2020/core/types/flow-customization.types.mjs +1 -1
  79. package/esm2020/core/types/flow-state.types.mjs +1 -1
  80. package/esm2020/core/types/index.mjs +1 -2
  81. package/esm2020/core/utils/index.mjs +3 -3
  82. package/esm2020/core/utils/transaction-item.utils.mjs +60 -0
  83. package/esm2020/core/utils/transaction-item.worker.mjs +16 -0
  84. package/esm2020/src/components/flow-header/flow-header.component.mjs +8 -12
  85. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +8 -12
  86. package/esm2020/src/flow-routing.module.mjs +12 -41
  87. package/esm2020/src/flow.component.mjs +5 -5
  88. package/esm2020/src/guards/flow.guard.mjs +13 -14
  89. package/esm2020/src/guards/product-unload.guard.mjs +7 -9
  90. package/esm2020/src/index.mjs +1 -3
  91. package/esm2020/src/pages/assets/assets.component.mjs +8 -9
  92. package/esm2020/src/pages/catalog/catalog.component.mjs +8 -9
  93. package/esm2020/src/pages/debug/debug.component.mjs +14 -23
  94. package/esm2020/src/pages/product/product.component.mjs +12 -89
  95. package/esm2020/src/pages/product/product.module.mjs +5 -5
  96. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +5 -6
  97. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +8 -9
  98. package/esm2020/src/resolvers/flow.resolver.mjs +10 -18
  99. package/esm2020/src/resolvers/pcm-model.resolver.mjs +12 -0
  100. package/esm2020/src/resolvers/sales-transaction.resolver.mjs +64 -0
  101. package/esm2020/src/resolvers/ui-definition.resolver.mjs +42 -0
  102. package/esm2020/src/services/flow-dialog.service.mjs +10 -31
  103. package/esm2020/src/services/flow-router.service.mjs +16 -33
  104. package/esm2020/src/services/flow.service.mjs +15 -54
  105. package/esm2020/src/types/index.mjs +2 -3
  106. package/esm2020/src/types/route.types.mjs +1 -1
  107. package/fesm2015/veloceapps-sdk-cms.mjs +163 -309
  108. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  109. package/fesm2015/veloceapps-sdk-core.mjs +877 -1673
  110. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  111. package/fesm2015/veloceapps-sdk.mjs +192 -824
  112. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  113. package/fesm2020/veloceapps-sdk-cms.mjs +159 -300
  114. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  115. package/fesm2020/veloceapps-sdk-core.mjs +954 -1758
  116. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  117. package/fesm2020/veloceapps-sdk.mjs +192 -818
  118. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  119. package/package.json +1 -1
  120. package/src/components/flow-header/flow-header.component.d.ts +3 -3
  121. package/src/components/guided-selling/guided-selling.component.d.ts +3 -3
  122. package/src/flow-routing.module.d.ts +1 -2
  123. package/src/flow.component.d.ts +2 -2
  124. package/src/guards/product-unload.guard.d.ts +5 -6
  125. package/src/index.d.ts +0 -2
  126. package/src/pages/assets/assets.component.d.ts +3 -3
  127. package/src/pages/catalog/catalog.component.d.ts +3 -3
  128. package/src/pages/debug/debug.component.d.ts +2 -5
  129. package/src/pages/product/product.component.d.ts +5 -14
  130. package/src/pages/product/product.module.d.ts +1 -1
  131. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -3
  132. package/src/pages/shopping-cart/shopping-cart.component.d.ts +3 -3
  133. package/src/resolvers/flow.resolver.d.ts +5 -6
  134. package/src/resolvers/pcm-model.resolver.d.ts +3 -0
  135. package/src/resolvers/sales-transaction.resolver.d.ts +18 -0
  136. package/src/resolvers/ui-definition.resolver.d.ts +3 -0
  137. package/src/services/flow-dialog.service.d.ts +6 -8
  138. package/src/services/flow-router.service.d.ts +4 -6
  139. package/src/services/flow.service.d.ts +3 -7
  140. package/src/types/index.d.ts +1 -2
  141. package/src/types/route.types.d.ts +0 -5
  142. package/cms/plugins/configuration.plugin.d.ts +0 -23
  143. package/cms/types/configuration.types.d.ts +0 -21
  144. package/core/modules/configuration/helpers.d.ts +0 -6
  145. package/core/modules/configuration/services/runtime-context.service.d.ts +0 -12
  146. package/core/modules/flow-configuration/services/flow-update.service.d.ts +0 -13
  147. package/core/modules/flow-configuration/types/update.types.d.ts +0 -12
  148. package/core/services/context.service.d.ts +0 -23
  149. package/core/services/quote-draft.service.d.ts +0 -50
  150. package/core/types/runtime.types.d.ts +0 -30
  151. package/core/utils/line-item.utils.d.ts +0 -25
  152. package/core/utils/line-item.worker.d.ts +0 -9
  153. package/esm2020/cms/plugins/configuration.plugin.mjs +0 -109
  154. package/esm2020/cms/types/configuration.types.mjs +0 -2
  155. package/esm2020/core/modules/configuration/helpers.mjs +0 -73
  156. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +0 -45
  157. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +0 -138
  158. package/esm2020/core/modules/flow-configuration/types/update.types.mjs +0 -2
  159. package/esm2020/core/services/context.service.mjs +0 -91
  160. package/esm2020/core/services/quote-draft.service.mjs +0 -192
  161. package/esm2020/core/types/runtime.types.mjs +0 -16
  162. package/esm2020/core/utils/line-item.utils.mjs +0 -187
  163. package/esm2020/core/utils/line-item.worker.mjs +0 -19
  164. package/esm2020/src/guards/context.guard.mjs +0 -91
  165. package/esm2020/src/guards/index.mjs +0 -2
  166. package/esm2020/src/pages/remote/remote.component.mjs +0 -342
  167. package/esm2020/src/pages/remote/remote.module.mjs +0 -20
  168. package/esm2020/src/pages/remote/remote.types.mjs +0 -2
  169. package/esm2020/src/resolvers/quote.resolver.mjs +0 -82
  170. package/esm2020/src/types/context-route.types.mjs +0 -2
  171. package/esm2020/src/types/metrics.types.mjs +0 -2
  172. package/esm2020/src/utils/flow.utils.mjs +0 -25
  173. package/esm2020/src/utils/index.mjs +0 -2
  174. package/src/guards/context.guard.d.ts +0 -19
  175. package/src/guards/index.d.ts +0 -1
  176. package/src/pages/remote/remote.component.d.ts +0 -46
  177. package/src/pages/remote/remote.module.d.ts +0 -10
  178. package/src/pages/remote/remote.types.d.ts +0 -4
  179. package/src/resolvers/quote.resolver.d.ts +0 -19
  180. package/src/types/context-route.types.d.ts +0 -5
  181. package/src/types/metrics.types.d.ts +0 -5
  182. package/src/utils/flow.utils.d.ts +0 -8
  183. package/src/utils/index.d.ts +0 -1
@@ -2,31 +2,31 @@ import * as i4 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Component, ChangeDetectionStrategy, NgModule, Optional, Inject, Injectable, inject } from '@angular/core';
5
- import * as i1$1 from '@veloceapps/api';
6
5
  import { ApiModule } from '@veloceapps/api';
7
- import * as i2$1 from '@veloceapps/components';
6
+ import * as i2 from '@veloceapps/components';
8
7
  import { ToastType, LoaderModule, LetDirectiveModule } from '@veloceapps/components';
9
8
  import * as i5 from '@veloceapps/sdk/cms';
10
9
  import { btoaSafe, PreviewModule, FlowAction, LauncherModule } from '@veloceapps/sdk/cms';
11
- import * as i2 from '@veloceapps/sdk/core';
12
- import { FLOW_CUSTOMIZATION, ContextService, FlowStateService, FlowInfoService, QuoteDraftService, ConfigurationService, IntegrationState, SdkCoreModule } from '@veloceapps/sdk/core';
10
+ import * as i3$1 from '@veloceapps/sdk/core';
11
+ import { FLOW_CUSTOMIZATION, RuntimeSettingsService, FlowStateService, FlowInfoService, SalesTransactionService, ConfigurationService, IntegrationState, ConfigurationRuntimeService, SdkCoreModule } from '@veloceapps/sdk/core';
13
12
  import * as i3 from 'primeng/button';
14
13
  import { ButtonModule } from 'primeng/button';
15
14
  import * as i1 from 'primeng/dynamicdialog';
16
- import { BehaviorSubject, Subject, filter, first, tap, takeUntil, catchError, of, map, switchMap, shareReplay, startWith, distinctUntilChanged, from, take, combineLatest, forkJoin, throwError } from 'rxjs';
15
+ import { BehaviorSubject, Subject, filter, first, tap, takeUntil, catchError, of, map, switchMap, shareReplay, startWith, distinctUntilChanged, from, take, combineLatest } from 'rxjs';
16
+ import * as i1$1 from '@veloceapps/api/v2';
17
+ import { UIDefinitionsAdminApiService } from '@veloceapps/api/v2';
17
18
  import { DomHandler } from 'primeng/dom';
18
19
  import * as i1$2 from '@angular/router';
19
20
  import { NavigationEnd, NavigationStart, NavigationCancel, NavigationError, RouterModule } from '@angular/router';
20
- import { UITemplateType, SalesforceIdUtils, mapShoppingCartSettings, getMaxRenewalTermsValue, ConfigurationContextMode, isVeloceError, extractErrorDetails, UUID } from '@veloceapps/core';
21
+ import { SalesforceIdUtils, mapShoppingCartSettings, getMaxRenewalTermsValue, UITemplateType, isVeloceError, extractErrorDetails } from '@veloceapps/core';
21
22
  import { HttpErrorResponse, HttpParams } from '@angular/common/http';
22
- import * as i5$1 from '@angular/forms';
23
+ import * as i4$1 from '@angular/forms';
23
24
  import { FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
24
25
  import { DropdownModule } from 'primeng/dropdown';
25
- import * as i8 from 'primeng/inputtext';
26
+ import * as i7 from 'primeng/inputtext';
26
27
  import { InputTextModule } from 'primeng/inputtext';
27
- import * as i6 from 'primeng/radiobutton';
28
+ import * as i5$1 from 'primeng/radiobutton';
28
29
  import { RadioButtonModule } from 'primeng/radiobutton';
29
- import * as i2$2 from 'primeng/api';
30
30
  import { catchError as catchError$1 } from 'rxjs/operators';
31
31
 
32
32
  const VELOCE_FLOW_ROOT_ROUTE = 'VELOCE_FLOW_ROOT_ROUTE';
@@ -76,8 +76,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
76
76
  }] });
77
77
 
78
78
  class FlowHeaderComponent {
79
- constructor(templatesApi, flowStateService, flowInfo, toastService, customizationService) {
80
- this.templatesApi = templatesApi;
79
+ constructor(templatesAdminApiService, flowStateService, flowInfo, toastService, customizationService) {
80
+ this.templatesAdminApiService = templatesAdminApiService;
81
81
  this.flowStateService = flowStateService;
82
82
  this.flowInfo = flowInfo;
83
83
  this.toastService = toastService;
@@ -98,9 +98,6 @@ class FlowHeaderComponent {
98
98
  initialize() {
99
99
  var _a, _b, _c;
100
100
  this.templateApiName = (_c = (_b = (_a = this.flowInfo.flow) === null || _a === void 0 ? void 0 : _a.properties.templates) === null || _b === void 0 ? void 0 : _b.flowHeader) !== null && _c !== void 0 ? _c : '';
101
- if (this.flowInfo.isLegacy && !this.templateApiName) {
102
- return;
103
- }
104
101
  this.generateUIDefinition$()
105
102
  .pipe(tap(uiDef => {
106
103
  if (!uiDef) {
@@ -137,7 +134,7 @@ class FlowHeaderComponent {
137
134
  if (!template) {
138
135
  return of(undefined);
139
136
  }
140
- return this.templatesApi.fetchComponentsAttachments$(template.id);
137
+ return this.templatesAdminApiService.fetchComponentsAttachments$(template.id);
141
138
  }
142
139
  generateUIDefinition$() {
143
140
  return of(undefined).pipe(tap(() => {
@@ -151,7 +148,6 @@ class FlowHeaderComponent {
151
148
  const uiDef = {
152
149
  name: '',
153
150
  createdTimestamp: 0,
154
- primary: true,
155
151
  type: 'DEFAULT',
156
152
  version: 2,
157
153
  children: metaList.map(meta => ({
@@ -165,13 +161,13 @@ class FlowHeaderComponent {
165
161
  }));
166
162
  }
167
163
  }
168
- FlowHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowHeaderComponent, deps: [{ token: i1$1.UITemplatesApiService }, { token: i2.FlowStateService }, { token: i2.FlowInfoService }, { token: i2$1.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
164
+ FlowHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowHeaderComponent, deps: [{ token: i1$1.UITemplatesAdminApiService }, { token: i3$1.FlowStateService }, { token: i3$1.FlowInfoService }, { token: i2.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
169
165
  FlowHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FlowHeaderComponent, selector: "vl-flow-new-header", ngImport: i0, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
170
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowHeaderComponent, decorators: [{
171
167
  type: Component,
172
168
  args: [{ selector: 'vl-flow-new-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"] }]
173
169
  }], ctorParameters: function () {
174
- return [{ type: i1$1.UITemplatesApiService }, { type: i2.FlowStateService }, { type: i2.FlowInfoService }, { type: i2$1.ToastService }, { type: undefined, decorators: [{
170
+ return [{ type: i1$1.UITemplatesAdminApiService }, { type: i3$1.FlowStateService }, { type: i3$1.FlowInfoService }, { type: i2.ToastService }, { type: undefined, decorators: [{
175
171
  type: Optional
176
172
  }, {
177
173
  type: Inject,
@@ -194,8 +190,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
194
190
  }] });
195
191
 
196
192
  class GuidedSellingComponent {
197
- constructor(templatesApi, flowStateService, flowInfo, toastService, customizationService) {
198
- this.templatesApi = templatesApi;
193
+ constructor(templatesAdminApiService, flowStateService, flowInfo, toastService, customizationService) {
194
+ this.templatesAdminApiService = templatesAdminApiService;
199
195
  this.flowStateService = flowStateService;
200
196
  this.flowInfo = flowInfo;
201
197
  this.toastService = toastService;
@@ -216,9 +212,6 @@ class GuidedSellingComponent {
216
212
  initialize() {
217
213
  var _a, _b, _c;
218
214
  this.templateApiName = (_c = (_b = (_a = this.flowInfo.flow) === null || _a === void 0 ? void 0 : _a.properties.templates) === null || _b === void 0 ? void 0 : _b.guidedSelling) !== null && _c !== void 0 ? _c : '';
219
- if (this.flowInfo.isLegacy && !this.templateApiName) {
220
- return;
221
- }
222
215
  this.generateUIDefinition$()
223
216
  .pipe(tap(uiDef => {
224
217
  if (!uiDef) {
@@ -255,7 +248,7 @@ class GuidedSellingComponent {
255
248
  if (!template) {
256
249
  return of(undefined);
257
250
  }
258
- return this.templatesApi.fetchComponentsAttachments$(template.id);
251
+ return this.templatesAdminApiService.fetchComponentsAttachments$(template.id);
259
252
  }
260
253
  generateUIDefinition$() {
261
254
  return of(undefined).pipe(tap(() => {
@@ -269,7 +262,6 @@ class GuidedSellingComponent {
269
262
  const uiDef = {
270
263
  name: '',
271
264
  createdTimestamp: 0,
272
- primary: true,
273
265
  type: 'DEFAULT',
274
266
  version: 2,
275
267
  children: metaList.map(meta => ({
@@ -283,13 +275,13 @@ class GuidedSellingComponent {
283
275
  }));
284
276
  }
285
277
  }
286
- GuidedSellingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GuidedSellingComponent, deps: [{ token: i1$1.UITemplatesApiService }, { token: i2.FlowStateService }, { token: i2.FlowInfoService }, { token: i2$1.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
278
+ GuidedSellingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GuidedSellingComponent, deps: [{ token: i1$1.UITemplatesAdminApiService }, { token: i3$1.FlowStateService }, { token: i3$1.FlowInfoService }, { token: i2.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
287
279
  GuidedSellingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: GuidedSellingComponent, selector: "vl-flow-guided-selling", ngImport: i0, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
288
280
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GuidedSellingComponent, decorators: [{
289
281
  type: Component,
290
282
  args: [{ selector: 'vl-flow-guided-selling', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"] }]
291
283
  }], ctorParameters: function () {
292
- return [{ type: i1$1.UITemplatesApiService }, { type: i2.FlowStateService }, { type: i2.FlowInfoService }, { type: i2$1.ToastService }, { type: undefined, decorators: [{
284
+ return [{ type: i1$1.UITemplatesAdminApiService }, { type: i3$1.FlowStateService }, { type: i3$1.FlowInfoService }, { type: i2.ToastService }, { type: undefined, decorators: [{
293
285
  type: Optional
294
286
  }, {
295
287
  type: Inject,
@@ -344,13 +336,11 @@ const configurePrimengShadowDOM = () => {
344
336
  };
345
337
 
346
338
  class FlowRouterService {
347
- constructor(router, route, contextService, integrationState, flowInfoService, flowStateService) {
339
+ constructor(router, route, integrationState, flowInfoService) {
348
340
  this.router = router;
349
341
  this.route = route;
350
- this.contextService = contextService;
351
342
  this.integrationState = integrationState;
352
343
  this.flowInfoService = flowInfoService;
353
- this.flowStateService = flowStateService;
354
344
  this.urlHistory = [];
355
345
  this.getLastChildRoute = (route) => {
356
346
  return route.firstChild ? this.getLastChildRoute(route.firstChild) : route;
@@ -445,7 +435,7 @@ class FlowRouterService {
445
435
  this.router.navigateByUrl(prevUrl);
446
436
  }
447
437
  }
448
- navigateTo(path, productId, lineItemId) {
438
+ navigateTo(path, productId, transactionItemId) {
449
439
  if (path === 'shopping-cart') {
450
440
  this.navigateToShoppingCart();
451
441
  }
@@ -456,31 +446,16 @@ class FlowRouterService {
456
446
  this.navigateToAssets();
457
447
  }
458
448
  else if (path === 'product' && productId) {
459
- this.navigateToProductConfiguration(productId, lineItemId);
449
+ this.navigateToProductConfiguration(productId, transactionItemId);
460
450
  }
461
451
  }
462
- navigateToProductConfiguration(productId, lineItemId) {
463
- let updateContext$;
464
- if (this.flowInfoService.isLegacy) {
465
- updateContext$ = of(undefined).pipe(tap(() => {
466
- this.contextService.update({ properties: { productId, lineItemId: lineItemId !== null && lineItemId !== void 0 ? lineItemId : '' } });
467
- }));
468
- }
469
- else {
470
- updateContext$ = this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'UPDATE_CONTEXT_PROPERTIES', {
471
- productId,
472
- lineItemId: lineItemId !== null && lineItemId !== void 0 ? lineItemId : '',
473
- });
474
- }
475
- updateContext$
476
- .pipe(tap(() => {
477
- const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);
478
- const flowRouteUrl = this.getFlowRootPath(routeSnapshot);
479
- this.router.navigate([flowRouteUrl, 'product'], {
480
- queryParams: Object.assign(Object.assign({}, routeSnapshot.queryParams), { productId }),
481
- });
482
- }))
483
- .subscribe();
452
+ navigateToProductConfiguration(productId, transactionItemId) {
453
+ this.flowInfoService.updateContext({ productId, transactionItemId });
454
+ const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);
455
+ const flowRouteUrl = this.getFlowRootPath(routeSnapshot);
456
+ this.router.navigate([flowRouteUrl, 'product'], {
457
+ queryParams: Object.assign(Object.assign({}, routeSnapshot.queryParams), { productId, transactionItemId }),
458
+ });
484
459
  }
485
460
  navigateToShoppingCart() {
486
461
  const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);
@@ -517,18 +492,18 @@ class FlowRouterService {
517
492
  this.router.navigate([], { relativeTo: route, queryParams: Object.assign(Object.assign({}, routeSnapshot.queryParams), queryParams) });
518
493
  }
519
494
  }
520
- FlowRouterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRouterService, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2.ContextService }, { token: i2.IntegrationState }, { token: i2.FlowInfoService }, { token: i2.FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
495
+ FlowRouterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRouterService, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i3$1.IntegrationState }, { token: i3$1.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable });
521
496
  FlowRouterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRouterService, providedIn: 'root' });
522
497
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRouterService, decorators: [{
523
498
  type: Injectable,
524
499
  args: [{ providedIn: 'root' }]
525
- }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i2.ContextService }, { type: i2.IntegrationState }, { type: i2.FlowInfoService }, { type: i2.FlowStateService }]; } });
500
+ }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i3$1.IntegrationState }, { type: i3$1.FlowInfoService }]; } });
526
501
 
527
502
  class FlowDialogService {
528
- constructor(dialogService, contextService, runtimeSettings) {
503
+ constructor(dialogService, runtimeSettings, flowInfoService) {
529
504
  this.dialogService = dialogService;
530
- this.contextService = contextService;
531
505
  this.runtimeSettings = runtimeSettings;
506
+ this.flowInfoService = flowInfoService;
532
507
  }
533
508
  show(config) {
534
509
  return this.dialogService.open(FlowDialogComponent, {
@@ -550,8 +525,8 @@ class FlowDialogService {
550
525
  }
551
526
  showReadonlyModeDialog() {
552
527
  var _a;
553
- const ctx = this.contextService.resolve();
554
- const objectName = ctx.mode ? ((_a = ctx.mode[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) + ctx.mode.substring(1).toLowerCase() : 'Object';
528
+ const mode = this.flowInfoService.context.mode;
529
+ const objectName = mode ? ((_a = mode[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) + mode.substring(1).toLowerCase() : 'Object';
555
530
  return this.show({
556
531
  title: 'Error',
557
532
  description: `${objectName} Cannot be Saved`,
@@ -565,10 +540,10 @@ class FlowDialogService {
565
540
  primaryButton: 'Ok',
566
541
  });
567
542
  }
568
- showQuoteOutsideShoppingCartDialog() {
543
+ showQuoteInConfiguratorDialog() {
569
544
  return this.show({
570
545
  title: 'Quote Cannot be Saved',
571
- description: 'It is only possible to save quotes from the Shopping Cart. To proceed, go to the Shopping Cart.',
546
+ description: 'It not possible to save quotes from the Configurator. To proceed, finish configuring product.',
572
547
  primaryButton: 'Ok',
573
548
  });
574
549
  }
@@ -588,27 +563,6 @@ class FlowDialogService {
588
563
  oppositeButtonActions: true,
589
564
  });
590
565
  }
591
- showReadonlyQuoteSubmitFailureDialog() {
592
- return this.show({
593
- title: 'Cannot Submit for Approval',
594
- description: 'It is only possible to submit for approval quotes with the “Draft“ status. Please create a new quote to proceed.',
595
- primaryButton: 'Ok',
596
- });
597
- }
598
- showOutsideShoppingCartQuoteSubmitFailureDialog() {
599
- return this.show({
600
- title: 'Cannot Submit for Approval',
601
- description: 'It is only possible to submit quotes for approval from the Shopping Cart. To proceed, go to the Shopping Cart.',
602
- primaryButton: 'Ok',
603
- });
604
- }
605
- showAccountSubmitFailureDialog() {
606
- return this.show({
607
- title: 'Save Changes',
608
- description: 'To submit for approval, save the quote first, and then submit it for approval from the Shopping Cart.',
609
- primaryButton: 'Ok',
610
- });
611
- }
612
566
  showTermsLimitReachedDialog() {
613
567
  const shoppingCartSettings = mapShoppingCartSettings(this.runtimeSettings.getShoppingCartSettings() || []);
614
568
  const maxRenewalTerms = getMaxRenewalTermsValue(shoppingCartSettings);
@@ -623,23 +577,21 @@ class FlowDialogService {
623
577
  return dialogFunction(dialog);
624
578
  }
625
579
  }
626
- FlowDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowDialogService, deps: [{ token: i1.DialogService }, { token: i2.ContextService }, { token: i2.RuntimeSettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
580
+ FlowDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowDialogService, deps: [{ token: i1.DialogService }, { token: i3$1.RuntimeSettingsService }, { token: i3$1.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable });
627
581
  FlowDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowDialogService });
628
582
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowDialogService, decorators: [{
629
583
  type: Injectable
630
- }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.ContextService }, { type: i2.RuntimeSettingsService }]; } });
584
+ }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i3$1.RuntimeSettingsService }, { type: i3$1.FlowInfoService }]; } });
631
585
 
632
586
  class FlowService {
633
- constructor(integrationState, flowRouterService, quoteDraftService, configurationService, configurationStateService, flowDialogService, flowConfigurationService, flowInfoService, flowStateService) {
587
+ constructor(integrationState, flowRouterService, configurationService, configurationStateService, flowDialogService, flowStateService, flowInfoService) {
634
588
  this.integrationState = integrationState;
635
589
  this.flowRouterService = flowRouterService;
636
- this.quoteDraftService = quoteDraftService;
637
590
  this.configurationService = configurationService;
638
591
  this.configurationStateService = configurationStateService;
639
592
  this.flowDialogService = flowDialogService;
640
- this.flowConfigurationService = flowConfigurationService;
641
- this.flowInfoService = flowInfoService;
642
593
  this.flowStateService = flowStateService;
594
+ this.flowInfoService = flowInfoService;
643
595
  this.cleanup$ = new Subject();
644
596
  }
645
597
  cleanup() {
@@ -648,16 +600,10 @@ class FlowService {
648
600
  initSubscriptions() {
649
601
  this.integrationState
650
602
  .listen$(FlowAction.FLOW_CONFIGURE_PRODUCT)
651
- .pipe(switchMap(payload => {
652
- var _a, _b;
653
- if (this.flowInfoService.isLegacy) {
654
- 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;
655
- return of(Object.assign(Object.assign({}, payload), { productId }));
656
- }
657
- return this.prepareConfiguration$(payload.lineItemId).pipe(map(() => payload));
658
- }), tap(payload => {
603
+ .pipe(tap(payload => {
659
604
  if (payload.productId) {
660
- this.flowRouterService.navigateToProductConfiguration(payload.productId, payload.lineItemId);
605
+ this.flowInfoService.updateContext({ newProductQty: payload.qty });
606
+ this.flowRouterService.navigateToProductConfiguration(payload.productId, payload.transactionItemId);
661
607
  }
662
608
  else {
663
609
  console.warn("Parameter 'productId' is needed to start configuration");
@@ -681,7 +627,7 @@ class FlowService {
681
627
  this.integrationState.dispatch(FlowAction.ConfigureProductAction(payload));
682
628
  }
683
629
  else {
684
- this.flowRouterService.navigateTo(payload.path, payload.productId, payload.lineItemId);
630
+ this.flowRouterService.navigateTo(payload.path, payload.productId, payload.transactionItemId);
685
631
  }
686
632
  }), takeUntil(this.cleanup$))
687
633
  .subscribe();
@@ -701,17 +647,10 @@ class FlowService {
701
647
  .subscribe();
702
648
  this.integrationState
703
649
  .listen$(FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION)
704
- .pipe(switchMap(() => {
705
- if (this.flowInfoService.isLegacy) {
706
- return this.legacyApplyConfiguration();
707
- }
708
- else {
709
- return this.configurationStateService.saveConfiguration(true).pipe(switchMap(() => this.configurationStateService.cancelConfiguration()), switchMap(() => this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'MODIFY_ASSETS', {
710
- addConfiguringAssetId: true,
711
- enable: true,
712
- })));
713
- }
714
- }), tap(() => {
650
+ .pipe(switchMap(() => this.configurationStateService.saveConfiguration()), switchMap(() => this.configurationStateService.cancelConfiguration()), switchMap(() => this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'MODIFY_ASSETS', {
651
+ addConfiguringAssetId: true,
652
+ enable: true,
653
+ })), tap(() => {
715
654
  this.configurationService.hasUnsavedChanges = false;
716
655
  this.flowRouterService.navigateToShoppingCart();
717
656
  }), takeUntil(this.cleanup$))
@@ -727,36 +666,12 @@ class FlowService {
727
666
  .pipe(map(path => path.queryParams['productId']), takeUntil(this.cleanup$))
728
667
  .subscribe(productId => this.integrationState.patchState({ productId }));
729
668
  }
730
- prepareConfiguration$(lineItemId) {
731
- if (!lineItemId) {
732
- return of(undefined);
733
- }
734
- return this.flowStateService.dispatch$(UITemplateType.FLOW_ENGINE, 'UPDATE_PRICE_LIST', {
735
- lineItemId,
736
- });
737
- }
738
- legacyApplyConfiguration() {
739
- const quoteDraft = this.quoteDraftService.quoteDraft;
740
- const lineItem = this.configurationService.getSnapshot();
741
- if (!quoteDraft || !lineItem) {
742
- return of(undefined);
743
- }
744
- const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);
745
- let updatedState;
746
- if (isNewLineItem) {
747
- updatedState = [...quoteDraft.currentState, lineItem];
748
- }
749
- else {
750
- updatedState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));
751
- }
752
- return this.flowConfigurationService.calculate$(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedState }));
753
- }
754
669
  }
755
- FlowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowService, deps: [{ token: i5.IntegrationState }, { token: FlowRouterService }, { token: i2.QuoteDraftService }, { token: i2.ConfigurationService }, { token: i2.ConfigurationStateService }, { token: FlowDialogService }, { token: i2.FlowConfigurationService }, { token: i2.FlowInfoService }, { token: i2.FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
670
+ FlowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowService, deps: [{ token: i5.IntegrationState }, { token: FlowRouterService }, { token: i3$1.ConfigurationService }, { token: i3$1.ConfigurationStateService }, { token: FlowDialogService }, { token: i3$1.FlowStateService }, { token: i3$1.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable });
756
671
  FlowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowService });
757
672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowService, decorators: [{
758
673
  type: Injectable
759
- }], ctorParameters: function () { return [{ type: i5.IntegrationState }, { type: FlowRouterService }, { type: i2.QuoteDraftService }, { type: i2.ConfigurationService }, { type: i2.ConfigurationStateService }, { type: FlowDialogService }, { type: i2.FlowConfigurationService }, { type: i2.FlowInfoService }, { type: i2.FlowStateService }]; } });
674
+ }], ctorParameters: function () { return [{ type: i5.IntegrationState }, { type: FlowRouterService }, { type: i3$1.ConfigurationService }, { type: i3$1.ConfigurationStateService }, { type: FlowDialogService }, { type: i3$1.FlowStateService }, { type: i3$1.FlowInfoService }]; } });
760
675
 
761
676
  class FlowGuidedSellingService {
762
677
  constructor(integrationState) {
@@ -780,21 +695,21 @@ class FlowGuidedSellingService {
780
695
  .subscribe();
781
696
  }
782
697
  }
783
- FlowGuidedSellingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowGuidedSellingService, deps: [{ token: i2.IntegrationState }], target: i0.ɵɵFactoryTarget.Injectable });
698
+ FlowGuidedSellingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowGuidedSellingService, deps: [{ token: i3$1.IntegrationState }], target: i0.ɵɵFactoryTarget.Injectable });
784
699
  FlowGuidedSellingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowGuidedSellingService });
785
700
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowGuidedSellingService, decorators: [{
786
701
  type: Injectable
787
- }], ctorParameters: function () { return [{ type: i2.IntegrationState }]; } });
702
+ }], ctorParameters: function () { return [{ type: i3$1.IntegrationState }]; } });
788
703
 
789
704
  class FlowComponent {
790
- constructor(routerService, flowService, flowInfo, guidedSellingService) {
705
+ constructor(routerService, flowService, flowInfoService, guidedSellingService) {
791
706
  this.routerService = routerService;
792
707
  this.flowService = flowService;
793
- this.flowInfo = flowInfo;
708
+ this.flowInfoService = flowInfoService;
794
709
  this.guidedSellingService = guidedSellingService;
795
710
  this.isLoading$ = this.routerService.loading$;
796
- this.showHeader$ = combineLatest([this.routerService.route$, this.flowInfo.flow$]).pipe(map(([route, flow]) => route.data['showHeader'] && !(flow === null || flow === void 0 ? void 0 : flow.properties.standalone)));
797
- this.isStandalone$ = this.flowInfo.flow$.pipe(map(flow => Boolean(flow === null || flow === void 0 ? void 0 : flow.properties.standalone)));
711
+ this.showHeader$ = combineLatest([this.routerService.route$, this.flowInfoService.flow$]).pipe(map(([route, flow]) => route.data['showHeader'] && !(flow === null || flow === void 0 ? void 0 : flow.properties.standalone)));
712
+ this.isStandalone$ = this.flowInfoService.flow$.pipe(map(flow => Boolean(flow === null || flow === void 0 ? void 0 : flow.properties.standalone)));
798
713
  this.guidedSellingVisible$ = this.guidedSellingService.isVisible$;
799
714
  this.flowService.initSubscriptions();
800
715
  }
@@ -802,135 +717,36 @@ class FlowComponent {
802
717
  this.flowService.cleanup();
803
718
  }
804
719
  }
805
- FlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowComponent, deps: [{ token: FlowRouterService }, { token: FlowService }, { token: i2.FlowInfoService }, { token: FlowGuidedSellingService }], target: i0.ɵɵFactoryTarget.Component });
806
- FlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FlowComponent, selector: "vl-flow", ngImport: i0, template: "<vl-flow-new-header *ngIf=\"showHeader$ | async\"></vl-flow-new-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n\n <div class=\"guided-selling\" [ngClass]=\"{ hidden: (guidedSellingVisible$ | async) === false }\">\n <vl-flow-guided-selling *ngIf=\"(isStandalone$ | async) !== true\"></vl-flow-guided-selling>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%;height:100%}.flow-content{flex-grow:1;position:relative;overflow:hidden}.loading-overlay{position:absolute;height:100%;width:100%;inset:0;background-color:#fff;z-index:999}.guided-selling{position:absolute;top:0;width:100%;height:100%;z-index:100}.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "component", type: FlowHeaderComponent, selector: "vl-flow-new-header" }, { kind: "component", type: GuidedSellingComponent, selector: "vl-flow-guided-selling" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
720
+ FlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowComponent, deps: [{ token: FlowRouterService }, { token: FlowService }, { token: i3$1.FlowInfoService }, { token: FlowGuidedSellingService }], target: i0.ɵɵFactoryTarget.Component });
721
+ FlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FlowComponent, selector: "vl-flow", ngImport: i0, template: "<vl-flow-new-header *ngIf=\"showHeader$ | async\"></vl-flow-new-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n\n <div class=\"guided-selling\" [ngClass]=\"{ hidden: (guidedSellingVisible$ | async) === false }\">\n <vl-flow-guided-selling *ngIf=\"(isStandalone$ | async) !== true\"></vl-flow-guided-selling>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%;height:100%}.flow-content{flex-grow:1;position:relative;overflow:hidden}.loading-overlay{position:absolute;height:100%;width:100%;inset:0;background-color:#fff;z-index:999}.guided-selling{position:absolute;top:0;width:100%;height:100%;z-index:100}.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "component", type: FlowHeaderComponent, selector: "vl-flow-new-header" }, { kind: "component", type: GuidedSellingComponent, selector: "vl-flow-guided-selling" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
807
722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowComponent, decorators: [{
808
723
  type: Component,
809
724
  args: [{ selector: 'vl-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vl-flow-new-header *ngIf=\"showHeader$ | async\"></vl-flow-new-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n\n <div class=\"guided-selling\" [ngClass]=\"{ hidden: (guidedSellingVisible$ | async) === false }\">\n <vl-flow-guided-selling *ngIf=\"(isStandalone$ | async) !== true\"></vl-flow-guided-selling>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%;height:100%}.flow-content{flex-grow:1;position:relative;overflow:hidden}.loading-overlay{position:absolute;height:100%;width:100%;inset:0;background-color:#fff;z-index:999}.guided-selling{position:absolute;top:0;width:100%;height:100%;z-index:100}.hidden{display:none}\n"] }]
810
- }], ctorParameters: function () { return [{ type: FlowRouterService }, { type: FlowService }, { type: i2.FlowInfoService }, { type: FlowGuidedSellingService }]; } });
811
-
812
- const getFlowObjectIdPropertyName = (id) => {
813
- const objectName = SalesforceIdUtils.getSfObjectNameById(id);
814
- switch (objectName) {
815
- case 'Account':
816
- return 'accountId';
817
- case 'Order':
818
- return 'orderId';
819
- case 'Quote':
820
- default:
821
- return 'quoteId';
822
- }
823
- };
824
- const getDefaultProperties = (params) => {
825
- var _a, _b;
826
- const properties = {};
827
- let standalone = (_a = params.flowParams) === null || _a === void 0 ? void 0 : _a.standalone;
828
- if (((_b = params.flowParams) === null || _b === void 0 ? void 0 : _b.entryPath.includes('/product')) || params.mode === ConfigurationContextMode.REMOTE) {
829
- standalone = standalone !== null && standalone !== void 0 ? standalone : true;
830
- }
831
- if (standalone != null) {
832
- properties.standalone = standalone ? 'true' : 'false';
833
- }
834
- return properties;
835
- };
836
-
837
- class ContextGuard {
838
- constructor(router, routerService, contextService, runtimeSettingsService) {
839
- this.router = router;
840
- this.routerService = routerService;
841
- this.contextService = contextService;
842
- this.runtimeSettingsService = runtimeSettingsService;
843
- }
844
- checkActivation(route) {
845
- const { queryParams } = route;
846
- const { accountId, quoteId, orderId } = queryParams;
847
- const rpcMessage = window.RPC_MESSAGE;
848
- const mode = this.getConfigurationContextMode(accountId, quoteId, orderId, rpcMessage);
849
- // Restrict if mode is not defined
850
- if (mode == null) {
851
- return this.routerService.showErrorPage$('Mode is undefined');
852
- }
853
- const headerId = accountId || quoteId || orderId || this.rpcMessageId || 'empty-for-test-mode';
854
- // Allow if context is already initialized with the same headerId
855
- if (this.contextService.isInitialized) {
856
- const currentContext = this.contextService.resolve();
857
- if (headerId && currentContext.headerId === headerId) {
858
- return of(true);
859
- }
860
- }
861
- // Initialize context and runtime settings
862
- return forkJoin([this.contextService.create(headerId, mode), this.runtimeSettingsService.create()]).pipe(tap(([context]) => {
863
- this.contextService.update(Object.assign(Object.assign({}, context), { properties: Object.assign(Object.assign(Object.assign({}, context.properties), (queryParams !== null && queryParams !== void 0 ? queryParams : {})), getDefaultProperties({ mode })) }));
864
- // Init currency settings
865
- this.runtimeSettingsService.initCurrency(context.properties['CurrencyIsoCode']);
866
- }), map(() => true), catchError(e => {
867
- const message = e instanceof HttpErrorResponse ? e.error.message : e;
868
- const errorDetails = isVeloceError(e.error) ? extractErrorDetails(e.error) : [];
869
- return this.routerService.showErrorPage$(message, errorDetails);
870
- }));
871
- }
872
- canActivate(route) {
873
- return this.checkActivation(route);
874
- }
875
- canActivateChild(childRoute) {
876
- return this.checkActivation(childRoute);
877
- }
878
- get rpcMessageId() {
879
- var _a, _b;
880
- if (!window.RPC_MESSAGE) {
881
- return;
882
- }
883
- const rpcMessage = JSON.parse(window.RPC_MESSAGE);
884
- const veloceReferenceId = (_a = rpcMessage.configuration) === null || _a === void 0 ? void 0 : _a.VeloceReferenceId;
885
- const quoteId = (_b = rpcMessage.quote) === null || _b === void 0 ? void 0 : _b.Id;
886
- return veloceReferenceId || quoteId;
887
- }
888
- getConfigurationContextMode(accountId, quoteId, orderId, rpcMessage) {
889
- if (accountId) {
890
- return ConfigurationContextMode.ACCOUNT;
891
- }
892
- if (quoteId) {
893
- return ConfigurationContextMode.QUOTE;
894
- }
895
- if (orderId) {
896
- return ConfigurationContextMode.ORDER;
897
- }
898
- if (rpcMessage) {
899
- return ConfigurationContextMode.REMOTE;
900
- }
901
- return;
902
- }
903
- }
904
- ContextGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ContextGuard, deps: [{ token: i1$2.Router }, { token: FlowRouterService }, { token: i2.ContextService }, { token: i2.RuntimeSettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
905
- ContextGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ContextGuard });
906
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ContextGuard, decorators: [{
907
- type: Injectable
908
- }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: FlowRouterService }, { type: i2.ContextService }, { type: i2.RuntimeSettingsService }]; } });
725
+ }], ctorParameters: function () { return [{ type: FlowRouterService }, { type: FlowService }, { type: i3$1.FlowInfoService }, { type: FlowGuidedSellingService }]; } });
909
726
 
910
727
  const keepFlowInitialized = (route) => {
911
- const contextService = inject(ContextService);
728
+ const routerService = inject(FlowRouterService);
729
+ const runtimeSettingsService = inject(RuntimeSettingsService);
912
730
  const flowState = inject(FlowStateService);
913
731
  const flowInfoService = inject(FlowInfoService);
914
- const routerService = inject(FlowRouterService);
915
- const quoteDraft = inject(QuoteDraftService);
732
+ const salesTrasnsactionService = inject(SalesTransactionService);
916
733
  const configurationService = inject(ConfigurationService);
917
734
  const integrationState = inject(IntegrationState);
918
735
  const { flowId } = route.queryParams;
919
- const flow = flowInfoService.flow;
920
- if (flow && (flow === null || flow === void 0 ? void 0 : flow.id) === flowId) {
736
+ if (flowInfoService.isFlowInitialized && flowInfoService.flow.id === flowId) {
921
737
  return true;
922
738
  }
923
739
  // Cleanup
924
- flowState.cleanup();
925
- quoteDraft.reset();
740
+ flowState.reset();
741
+ salesTrasnsactionService.reset();
926
742
  configurationService.reset();
927
- integrationState.clear();
928
- flowInfoService.cleanup();
929
- contextService.delete();
743
+ integrationState.reset();
744
+ flowInfoService.reset();
930
745
  if (!flowId) {
931
746
  return true;
932
747
  }
933
- return flowInfoService.init$(flowId, route.queryParams).pipe(map(() => true), catchError(e => {
748
+ return runtimeSettingsService.create().pipe(tap(() => runtimeSettingsService.initCurrency('USD')), switchMap(() => flowInfoService.init$(flowId, route.queryParams)), map(() => true), catchError(e => {
749
+ console.error(e);
934
750
  const message = e instanceof HttpErrorResponse ? e.error.message : e;
935
751
  const errorDetails = isVeloceError(e.error) ? extractErrorDetails(e.error) : [];
936
752
  return routerService.showErrorPage$(message, errorDetails);
@@ -938,22 +754,20 @@ const keepFlowInitialized = (route) => {
938
754
  };
939
755
 
940
756
  class ProductUnloadGuard {
941
- constructor(router, contextService, quoteDraftService, configurationService, flowDialogService) {
757
+ constructor(router, flowInfoService, configurationService, flowDialogService) {
942
758
  this.router = router;
943
- this.contextService = contextService;
944
- this.quoteDraftService = quoteDraftService;
759
+ this.flowInfoService = flowInfoService;
945
760
  this.configurationService = configurationService;
946
761
  this.flowDialogService = flowDialogService;
947
762
  }
948
763
  canDeactivate(_, route, currentState, nextState) {
949
764
  let observable = of(true);
950
- if (!this.quoteDraftService.isStandalone && this.configurationService.hasUnsavedChanges) {
765
+ if (!this.flowInfoService.flow.properties.standalone && this.configurationService.hasUnsavedChanges) {
951
766
  observable = this.flowDialogService.showUnsavedChangesDialog();
952
767
  }
953
768
  return observable.pipe(map(unload => {
954
769
  if (unload) {
955
770
  this.configurationService.reset();
956
- this.contextService.update({ properties: { productId: undefined, lineItemId: undefined } });
957
771
  if (!nextState || currentState.url === nextState.url) {
958
772
  return true;
959
773
  }
@@ -971,11 +785,11 @@ class ProductUnloadGuard {
971
785
  }));
972
786
  }
973
787
  }
974
- ProductUnloadGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductUnloadGuard, deps: [{ token: i1$2.Router }, { token: i2.ContextService }, { token: i2.QuoteDraftService }, { token: i2.ConfigurationService }, { token: FlowDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
788
+ ProductUnloadGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductUnloadGuard, deps: [{ token: i1$2.Router }, { token: i3$1.FlowInfoService }, { token: i3$1.ConfigurationService }, { token: FlowDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
975
789
  ProductUnloadGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductUnloadGuard });
976
790
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductUnloadGuard, decorators: [{
977
791
  type: Injectable
978
- }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i2.ContextService }, { type: i2.QuoteDraftService }, { type: i2.ConfigurationService }, { type: FlowDialogService }]; } });
792
+ }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i3$1.FlowInfoService }, { type: i3$1.ConfigurationService }, { type: FlowDialogService }]; } });
979
793
 
980
794
  class RootGuard {
981
795
  constructor(router, routerService) {
@@ -1018,9 +832,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1018
832
  }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: FlowRouterService }]; } });
1019
833
 
1020
834
  class AssetsComponent {
1021
- constructor(templatesApi, cdr, toastService, flowInfo, customizationService) {
835
+ constructor(templatesAdminApiService, cdr, toastService, flowInfo, customizationService) {
1022
836
  var _a, _b, _c;
1023
- this.templatesApi = templatesApi;
837
+ this.templatesAdminApiService = templatesAdminApiService;
1024
838
  this.cdr = cdr;
1025
839
  this.toastService = toastService;
1026
840
  this.flowInfo = flowInfo;
@@ -1075,7 +889,7 @@ class AssetsComponent {
1075
889
  if (!template) {
1076
890
  return of(undefined);
1077
891
  }
1078
- return this.templatesApi.fetchComponentsAttachments$(template.id);
892
+ return this.templatesAdminApiService.fetchComponentsAttachments$(template.id);
1079
893
  }
1080
894
  generateUIDefinition$() {
1081
895
  return of(undefined).pipe(tap(() => {
@@ -1089,7 +903,6 @@ class AssetsComponent {
1089
903
  const uiDef = {
1090
904
  name: '',
1091
905
  createdTimestamp: 0,
1092
- primary: true,
1093
906
  type: 'DEFAULT',
1094
907
  version: 2,
1095
908
  children: metaList.map(meta => ({
@@ -1103,13 +916,13 @@ class AssetsComponent {
1103
916
  }));
1104
917
  }
1105
918
  }
1106
- AssetsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AssetsComponent, deps: [{ token: i1$1.UITemplatesApiService }, { token: i0.ChangeDetectorRef }, { token: i2$1.ToastService }, { token: i2.FlowInfoService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1107
- AssetsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AssetsComponent, selector: "vl-flow-assets", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
919
+ AssetsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AssetsComponent, deps: [{ token: i1$1.UITemplatesAdminApiService }, { token: i0.ChangeDetectorRef }, { token: i2.ToastService }, { token: i3$1.FlowInfoService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
920
+ AssetsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AssetsComponent, selector: "vl-flow-assets", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1108
921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AssetsComponent, decorators: [{
1109
922
  type: Component,
1110
923
  args: [{ selector: 'vl-flow-assets', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n" }]
1111
924
  }], ctorParameters: function () {
1112
- return [{ type: i1$1.UITemplatesApiService }, { type: i0.ChangeDetectorRef }, { type: i2$1.ToastService }, { type: i2.FlowInfoService }, { type: undefined, decorators: [{
925
+ return [{ type: i1$1.UITemplatesAdminApiService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3$1.FlowInfoService }, { type: undefined, decorators: [{
1113
926
  type: Optional
1114
927
  }, {
1115
928
  type: Inject,
@@ -1132,9 +945,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1132
945
  }] });
1133
946
 
1134
947
  class CatalogComponent {
1135
- constructor(templatesApi, cdr, toastService, flowInfo, customizationService) {
948
+ constructor(templatesAdminApiService, cdr, toastService, flowInfo, customizationService) {
1136
949
  var _a, _b, _c;
1137
- this.templatesApi = templatesApi;
950
+ this.templatesAdminApiService = templatesAdminApiService;
1138
951
  this.cdr = cdr;
1139
952
  this.toastService = toastService;
1140
953
  this.flowInfo = flowInfo;
@@ -1189,7 +1002,7 @@ class CatalogComponent {
1189
1002
  if (!template) {
1190
1003
  return of(undefined);
1191
1004
  }
1192
- return this.templatesApi.fetchComponentsAttachments$(template.id);
1005
+ return this.templatesAdminApiService.fetchComponentsAttachments$(template.id);
1193
1006
  }
1194
1007
  generateUIDefinition$() {
1195
1008
  return of(undefined).pipe(tap(() => {
@@ -1203,7 +1016,6 @@ class CatalogComponent {
1203
1016
  const uiDef = {
1204
1017
  name: '',
1205
1018
  createdTimestamp: 0,
1206
- primary: true,
1207
1019
  type: 'DEFAULT',
1208
1020
  version: 2,
1209
1021
  children: metaList.map(meta => ({
@@ -1217,13 +1029,13 @@ class CatalogComponent {
1217
1029
  }));
1218
1030
  }
1219
1031
  }
1220
- CatalogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CatalogComponent, deps: [{ token: i1$1.UITemplatesApiService }, { token: i0.ChangeDetectorRef }, { token: i2$1.ToastService }, { token: i2.FlowInfoService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1221
- CatalogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CatalogComponent, selector: "vl-flow-catalog", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1032
+ CatalogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CatalogComponent, deps: [{ token: i1$1.UITemplatesAdminApiService }, { token: i0.ChangeDetectorRef }, { token: i2.ToastService }, { token: i3$1.FlowInfoService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1033
+ CatalogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CatalogComponent, selector: "vl-flow-catalog", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1222
1034
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CatalogComponent, decorators: [{
1223
1035
  type: Component,
1224
1036
  args: [{ selector: 'vl-flow-catalog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n" }]
1225
1037
  }], ctorParameters: function () {
1226
- return [{ type: i1$1.UITemplatesApiService }, { type: i0.ChangeDetectorRef }, { type: i2$1.ToastService }, { type: i2.FlowInfoService }, { type: undefined, decorators: [{
1038
+ return [{ type: i1$1.UITemplatesAdminApiService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3$1.FlowInfoService }, { type: undefined, decorators: [{
1227
1039
  type: Optional
1228
1040
  }, {
1229
1041
  type: Inject,
@@ -1246,12 +1058,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1246
1058
  }] });
1247
1059
 
1248
1060
  class DebugComponent {
1249
- constructor(flowsApiService, router, activatedRoute, context, quoteDraftService) {
1061
+ constructor(flowsApiService, router, activatedRoute) {
1250
1062
  this.flowsApiService = flowsApiService;
1251
1063
  this.router = router;
1252
1064
  this.activatedRoute = activatedRoute;
1253
- this.context = context;
1254
- this.quoteDraftService = quoteDraftService;
1255
1065
  this.form = new FormGroup({
1256
1066
  id: new FormControl(''),
1257
1067
  });
@@ -1259,15 +1069,11 @@ class DebugComponent {
1259
1069
  }
1260
1070
  runFlow() {
1261
1071
  const { id } = this.form.value;
1262
- const objectPropertyName = id && getFlowObjectIdPropertyName(id);
1263
- if (!id || !objectPropertyName || !this.selectedFlow) {
1072
+ if (!id || !this.selectedFlow) {
1264
1073
  return;
1265
1074
  }
1266
- // Delete context before starting a new flow
1267
- this.context.delete();
1268
- this.quoteDraftService.reset();
1269
1075
  this.router.navigate(['..', 'flows'], {
1270
- queryParams: Object.assign({ flowId: this.selectedFlow.id, [objectPropertyName]: id }, this.selectedFlow.properties.queryParams),
1076
+ queryParams: Object.assign({ flowId: this.selectedFlow.id, headerId: id }, this.selectedFlow.properties.queryParams),
1271
1077
  relativeTo: this.activatedRoute,
1272
1078
  });
1273
1079
  }
@@ -1275,12 +1081,12 @@ class DebugComponent {
1275
1081
  return new HttpParams({ fromObject: params }).toString();
1276
1082
  }
1277
1083
  }
1278
- DebugComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DebugComponent, deps: [{ token: i1$1.FlowsApiService }, { token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2.ContextService }, { token: i2.QuoteDraftService }], target: i0.ɵɵFactoryTarget.Component });
1279
- DebugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DebugComponent, selector: "vl-flow-debug", ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n <th [width]=\"100\">Standalone</th>\n <th [width]=\"100\">Stateful</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.properties.entryPath }}</td>\n <td class=\"cell-query-params\">{{ getQueryParamsString(flow.properties.queryParams) }}</td>\n <td>{{ flow.properties.standalone }}</td>\n <td>{{ flow.properties.stateful }}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{display:block;padding:24px 54px}form{display:flex;align-items:center;justify-content:space-between}.fields-container{display:flex;gap:24px}.field{display:flex;flex-direction:column;width:200px;flex-shrink:0}:host ::ng-deep .p-dropdown{width:100%}table{width:100%;border-collapse:collapse;table-layout:fixed}tbody>tr{cursor:pointer}tbody>tr:hover{background-color:#f0f5fa}th{text-align:left;font-weight:600}th,td{padding:0 10px;height:30px;border-bottom:1px solid var(--vl-border-color);margin-right:16px;line-height:18px}.cell-query-params{word-break:break-all}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i8.InputText, selector: "[pInputText]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1084
+ DebugComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DebugComponent, deps: [{ token: i1$1.FlowsApiService }, { token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
1085
+ DebugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DebugComponent, selector: "vl-flow-debug", ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n <th [width]=\"100\">Standalone</th>\n <th [width]=\"100\">Stateful</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.properties.entryPath }}</td>\n <td class=\"cell-query-params\">{{ getQueryParamsString(flow.properties.queryParams) }}</td>\n <td>{{ flow.properties.standalone }}</td>\n <td>{{ flow.properties.stateful }}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{display:block;padding:24px 54px}form{display:flex;align-items:center;justify-content:space-between}.fields-container{display:flex;gap:24px}.field{display:flex;flex-direction:column;width:200px;flex-shrink:0}:host ::ng-deep .p-dropdown{width:100%}table{width:100%;border-collapse:collapse;table-layout:fixed}tbody>tr{cursor:pointer}tbody>tr:hover{background-color:#f0f5fa}th{text-align:left;font-weight:600}th,td{padding:0 10px;height:30px;border-bottom:1px solid var(--vl-border-color);margin-right:16px;line-height:18px}.cell-query-params{word-break:break-all}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i7.InputText, selector: "[pInputText]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1280
1086
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DebugComponent, decorators: [{
1281
1087
  type: Component,
1282
1088
  args: [{ selector: 'vl-flow-debug', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n <th [width]=\"100\">Standalone</th>\n <th [width]=\"100\">Stateful</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.properties.entryPath }}</td>\n <td class=\"cell-query-params\">{{ getQueryParamsString(flow.properties.queryParams) }}</td>\n <td>{{ flow.properties.standalone }}</td>\n <td>{{ flow.properties.stateful }}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{display:block;padding:24px 54px}form{display:flex;align-items:center;justify-content:space-between}.fields-container{display:flex;gap:24px}.field{display:flex;flex-direction:column;width:200px;flex-shrink:0}:host ::ng-deep .p-dropdown{width:100%}table{width:100%;border-collapse:collapse;table-layout:fixed}tbody>tr{cursor:pointer}tbody>tr:hover{background-color:#f0f5fa}th{text-align:left;font-weight:600}th,td{padding:0 10px;height:30px;border-bottom:1px solid var(--vl-border-color);margin-right:16px;line-height:18px}.cell-query-params{word-break:break-all}\n"] }]
1283
- }], ctorParameters: function () { return [{ type: i1$1.FlowsApiService }, { type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i2.ContextService }, { type: i2.QuoteDraftService }]; } });
1089
+ }], ctorParameters: function () { return [{ type: i1$1.FlowsApiService }, { type: i1$2.Router }, { type: i1$2.ActivatedRoute }]; } });
1284
1090
 
1285
1091
  const routes$1 = [{ path: '', component: DebugComponent }];
1286
1092
  class DebugModule {
@@ -1318,127 +1124,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1318
1124
  }] });
1319
1125
 
1320
1126
  class ProductComponent {
1321
- constructor(contextService, configurationRuntimeService, configurationService, configurationStateService, quoteDraftService, flowInfoService, flowStateService, integrationState, customizationService) {
1322
- this.contextService = contextService;
1127
+ constructor(configurationRuntimeService, configurationStateService) {
1323
1128
  this.configurationRuntimeService = configurationRuntimeService;
1324
- this.configurationService = configurationService;
1325
1129
  this.configurationStateService = configurationStateService;
1326
- this.quoteDraftService = quoteDraftService;
1327
- this.flowInfoService = flowInfoService;
1328
- this.flowStateService = flowStateService;
1329
- this.integrationState = integrationState;
1330
- this.customizationService = customizationService;
1331
- this.uiDefinition$ = new BehaviorSubject(undefined);
1130
+ this.uiDefinitionContainer$ = new BehaviorSubject(null);
1131
+ this.uiDefinitionContainer$.next(this.configurationRuntimeService.uiDefinitionContainer);
1332
1132
  this.config = {
1333
1133
  init$: () => this.init$(),
1334
1134
  };
1335
1135
  }
1336
- customizeUI$() {
1337
- var _a, _b;
1338
- const { productId } = (_a = this.configurationRuntimeService.runtimeContext) !== null && _a !== void 0 ? _a : {};
1339
- if (!productId || !((_b = this.customizationService) === null || _b === void 0 ? void 0 : _b.getUiDefinition)) {
1340
- return of(undefined);
1341
- }
1342
- return this.customizationService.getUiDefinition(productId).pipe(map(uiDefinitionContainer => {
1343
- if (uiDefinitionContainer) {
1344
- this.configurationRuntimeService.overrideUIDefinition(uiDefinitionContainer);
1345
- }
1346
- }));
1347
- }
1348
1136
  init$() {
1349
- let quoteDraft$;
1350
- if (this.flowInfoService.isLegacy || !this.flowInfoService.isStateful) {
1351
- quoteDraft$ = this.quoteDraftService.quoteDraft$;
1352
- }
1353
- else {
1354
- quoteDraft$ = of(undefined);
1355
- }
1356
- return quoteDraft$.pipe(first(), switchMap(quote => {
1357
- var _a, _b, _c, _d;
1358
- const contextProperties = this.contextService.resolve().properties;
1359
- const productId = (_a = contextProperties.productId) !== null && _a !== void 0 ? _a : (_b = this.flowInfoService.flow) === null || _b === void 0 ? void 0 : _b.properties.queryParams['productId'];
1360
- const defaultUIDefinitionId = (_c = this.flowInfoService.flow) === null || _c === void 0 ? void 0 : _c.properties.queryParams['defaultUIDefinitionId'];
1361
- const requiredUIDefinitionId = (_d = this.flowInfoService.flow) === null || _d === void 0 ? void 0 : _d.properties.queryParams['requiredUIDefinitionId'];
1362
- if (!productId) {
1363
- throw new Error(`Unable to start configuration for 'productId == null'`);
1364
- }
1365
- if (!quote) {
1366
- const offeringId = contextProperties.offeringId;
1367
- return this.configurationRuntimeService.init({ productId, offeringId });
1368
- }
1369
- const lineItem = this.getLineItem(quote, productId, contextProperties.lineItemId);
1370
- if (lineItem) {
1371
- this.configurationService.setConfigurableRamp(lineItem);
1372
- }
1373
- const { offeringId } = lineItem !== null && lineItem !== void 0 ? lineItem : {};
1374
- return this.configurationRuntimeService.init({
1375
- productId,
1376
- offeringId,
1377
- defaultUIDefinitionId,
1378
- requiredUIDefinitionId,
1379
- });
1380
- }), switchMap(() => this.customizeUI$()), tap(() => {
1381
- var _a, _b;
1382
- const uiDefinition = (_b = (_a = this.configurationRuntimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) === null || _b === void 0 ? void 0 : _b.source;
1383
- if (uiDefinition) {
1384
- this.uiDefinition$.next(uiDefinition);
1385
- }
1386
- else {
1387
- throw new Error('Product does not have Configuration UI');
1388
- }
1389
- }), tap(() => {
1390
- if (this.configurationRuntimeService.initializationProps) {
1391
- this.configurationRuntimeService.initializationProps.attributesMap =
1392
- this.integrationState.state.guidedSelling;
1393
- }
1394
- }), switchMap(() => this.configurationStateService.init$()));
1395
- }
1396
- getLineItem(quote, productId, lineItemId) {
1397
- var _a;
1398
- // search by lineItemId first
1399
- let li = quote.currentState.find(li => li.id === lineItemId);
1400
- if (!li && this.quoteDraftService.isStandalone) {
1401
- li = quote.currentState.find(li => li.productId === productId);
1402
- }
1403
- // If still not found, is could be an asset
1404
- if (!li) {
1405
- li = (_a = this.quoteDraftService.assetsState) === null || _a === void 0 ? void 0 : _a.currentState.find(li => li.id === lineItemId);
1406
- }
1407
- return li;
1137
+ return this.configurationStateService.init$();
1408
1138
  }
1409
1139
  }
1410
- ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i2.ContextService }, { token: i2.ConfigurationRuntimeService }, { token: i2.ConfigurationService }, { token: i2.ConfigurationStateService }, { token: i2.QuoteDraftService }, { token: i2.FlowInfoService }, { token: i2.FlowStateService }, { token: i2.IntegrationState }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1411
- ProductComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ProductComponent, selector: "vl-flow-product", ngImport: i0, template: "<vl-cms-preview [uiDefinition]=\"$any(uiDefinition$ | async)\" [config]=\"config\"></vl-cms-preview>\n", styles: [""], dependencies: [{ kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1140
+ ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i3$1.ConfigurationRuntimeService }, { token: i3$1.ConfigurationStateService }], target: i0.ɵɵFactoryTarget.Component });
1141
+ ProductComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ProductComponent, selector: "vl-flow-product", ngImport: i0, template: "<vl-cms-preview [uiDefinition]=\"(uiDefinitionContainer$ | async)?.source\" [config]=\"config\"></vl-cms-preview>\n", styles: [""], dependencies: [{ kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1412
1142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, decorators: [{
1413
1143
  type: Component,
1414
- args: [{ selector: 'vl-flow-product', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vl-cms-preview [uiDefinition]=\"$any(uiDefinition$ | async)\" [config]=\"config\"></vl-cms-preview>\n" }]
1415
- }], ctorParameters: function () {
1416
- return [{ type: i2.ContextService }, { type: i2.ConfigurationRuntimeService }, { type: i2.ConfigurationService }, { type: i2.ConfigurationStateService }, { type: i2.QuoteDraftService }, { type: i2.FlowInfoService }, { type: i2.FlowStateService }, { type: i2.IntegrationState }, { type: undefined, decorators: [{
1417
- type: Optional
1418
- }, {
1419
- type: Inject,
1420
- args: [FLOW_CUSTOMIZATION]
1421
- }] }];
1422
- } });
1144
+ args: [{ selector: 'vl-flow-product', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vl-cms-preview [uiDefinition]=\"(uiDefinitionContainer$ | async)?.source\" [config]=\"config\"></vl-cms-preview>\n" }]
1145
+ }], ctorParameters: function () { return [{ type: i3$1.ConfigurationRuntimeService }, { type: i3$1.ConfigurationStateService }]; } });
1423
1146
 
1424
1147
  class ProductModule {
1425
1148
  }
1426
1149
  ProductModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1427
- ProductModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, declarations: [ProductComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [ProductComponent] });
1428
- ProductModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, imports: [CommonModule, PreviewModule, LoaderModule] });
1150
+ ProductModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, declarations: [ProductComponent], imports: [CommonModule, PreviewModule, LoaderModule, LetDirectiveModule], exports: [ProductComponent] });
1151
+ ProductModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, imports: [CommonModule, PreviewModule, LoaderModule, LetDirectiveModule] });
1429
1152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, decorators: [{
1430
1153
  type: NgModule,
1431
1154
  args: [{
1432
1155
  declarations: [ProductComponent],
1433
- imports: [CommonModule, PreviewModule, LoaderModule],
1156
+ imports: [CommonModule, PreviewModule, LoaderModule, LetDirectiveModule],
1434
1157
  exports: [ProductComponent],
1435
1158
  }]
1436
1159
  }] });
1437
1160
 
1438
1161
  class RecordNotFoundComponent {
1439
- constructor(router, route) {
1162
+ constructor(router) {
1440
1163
  this.router = router;
1441
- this.route = route;
1442
1164
  this.subMessage = '';
1443
1165
  this.type = '';
1444
1166
  const navigation = this.router.getCurrentNavigation();
@@ -1451,12 +1173,12 @@ class RecordNotFoundComponent {
1451
1173
  }
1452
1174
  }
1453
1175
  }
1454
- RecordNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
1176
+ RecordNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundComponent, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component });
1455
1177
  RecordNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RecordNotFoundComponent, selector: "vl-flow-record-not-found", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div *ngIf=\"message; else defaultMessage\">\n <p class=\"text message-text\" [class]=\"type\">{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"text\">{{ subMessage }}</p>\n\n <div *ngIf=\"details && details.length > 0\">\n <div *ngFor=\"let detail of details\" class=\"text\">{{ detail }}</div>\n </div>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;padding:24px 54px}:host .text{white-space:pre-line;word-break:break-word}:host .message-text.error{color:var(--vl-error-text-color)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1456
1178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundComponent, decorators: [{
1457
1179
  type: Component,
1458
1180
  args: [{ selector: 'vl-flow-record-not-found', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div *ngIf=\"message; else defaultMessage\">\n <p class=\"text message-text\" [class]=\"type\">{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"text\">{{ subMessage }}</p>\n\n <div *ngIf=\"details && details.length > 0\">\n <div *ngFor=\"let detail of details\" class=\"text\">{{ detail }}</div>\n </div>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;padding:24px 54px}:host .text{white-space:pre-line;word-break:break-word}:host .message-text.error{color:var(--vl-error-text-color)}\n"] }]
1459
- }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }]; } });
1181
+ }], ctorParameters: function () { return [{ type: i1$2.Router }]; } });
1460
1182
 
1461
1183
  const routes = [{ path: '', component: RecordNotFoundComponent }];
1462
1184
  class RecordNotFoundModule {
@@ -1472,361 +1194,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1472
1194
  }]
1473
1195
  }] });
1474
1196
 
1475
- class RemoteComponent {
1476
- constructor(contextService, quoteDraftService, runtimeService, configurationService, configurationState, messageService, integrationState, location) {
1477
- this.contextService = contextService;
1478
- this.quoteDraftService = quoteDraftService;
1479
- this.runtimeService = runtimeService;
1480
- this.configurationService = configurationService;
1481
- this.configurationState = configurationState;
1482
- this.messageService = messageService;
1483
- this.integrationState = integrationState;
1484
- this.location = location;
1485
- this.state$ = new BehaviorSubject({ loading: true, failure: false });
1486
- this.DYNAMIC_OPTION_PRODUCTS_KEY = 'Dynamic';
1487
- this.destroyed$ = new Subject();
1488
- this.rpcMessage = JSON.parse(window.RPC_MESSAGE);
1489
- this.rpcMessage.options.sort((a, b) => { var _a, _b; return ((_a = a.featureNumber) !== null && _a !== void 0 ? _a : 99999) - ((_b = b.featureNumber) !== null && _b !== void 0 ? _b : 99999); });
1490
- this.updateHasChildrenFlag(this.rpcMessage.product.configuredProductId);
1491
- // update context properties
1492
- if (this.rpcMessage.quote) {
1493
- const properties = {};
1494
- if (this.rpcMessage.quote['SBQQ__Opportunity2__c']) {
1495
- properties.OpportunityId = this.rpcMessage.quote['SBQQ__Opportunity2__c'];
1496
- }
1497
- Object.entries(this.rpcMessage.quote).forEach(([key, value]) => {
1498
- if (value !== undefined && !(value instanceof Object)) {
1499
- properties[key] = value;
1500
- }
1501
- });
1502
- this.contextService.update({ properties });
1503
- }
1504
- this.initSubscriptions();
1505
- this.initConfiguration();
1506
- }
1507
- ngOnDestroy() {
1508
- this.destroyed$.next();
1509
- this.destroyed$.complete();
1510
- }
1511
- initConfiguration() {
1512
- const productId = this.rpcMessage.product.configuredProductId;
1513
- const quote = this.quoteDraftService.quoteDraft;
1514
- if (!productId || !quote) {
1515
- return;
1516
- }
1517
- this.runtimeService
1518
- .init({ productId })
1519
- .pipe(first(), tap(context => {
1520
- var _a, _b, _c, _d;
1521
- const uiDefinitionProperties = (_b = (_a = context.uiDefinitionContainer) === null || _a === void 0 ? void 0 : _a.source.properties) !== null && _b !== void 0 ? _b : {};
1522
- this.uiDefinition = (_c = context.uiDefinitionContainer) === null || _c === void 0 ? void 0 : _c.source;
1523
- const pricingEnabled = uiDefinitionProperties.pricingEnabled ? 'true' : 'false';
1524
- const priceListId = uiDefinitionProperties.priceList;
1525
- const runtimeContextProperties = (_d = this.runtimeService.runtimeContext) === null || _d === void 0 ? void 0 : _d.properties;
1526
- if (runtimeContextProperties) {
1527
- runtimeContextProperties.PriceListId = priceListId;
1528
- runtimeContextProperties.PricingEnabled = pricingEnabled;
1529
- }
1530
- this.contextService.update({
1531
- properties: {
1532
- ModelId: context.modelId,
1533
- RuntimeMode: 'TEST',
1534
- PricingEnabled: pricingEnabled,
1535
- PriceListId: priceListId,
1536
- },
1537
- });
1538
- this.configurationService.setConfigurableRamp(this.createLineItem());
1539
- }), this.throwIfNoUIDefinition(), switchMap(() => this.configurationState.init$()), tap(() => this.state$.next({ loading: false, failure: false })), catchError(error => {
1540
- var _a, _b;
1541
- if (!((_b = (_a = this.uiDefinition) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.suppressToastMessages)) {
1542
- this.messageService.add({ severity: 'error', summary: error });
1543
- }
1544
- this.state$.next({ loading: false, failure: true });
1545
- return of();
1546
- }), takeUntil(this.destroyed$))
1547
- .subscribe();
1548
- }
1549
- throwIfNoUIDefinition() {
1550
- return (source$) => {
1551
- return source$.pipe(switchMap(() => {
1552
- if (!this.uiDefinition) {
1553
- return throwError(() => 'Product does not have Configuration UI');
1554
- }
1555
- return source$;
1556
- }));
1557
- };
1558
- }
1559
- initSubscriptions() {
1560
- this.integrationState
1561
- .listen$(FlowAction.REMOTE_CANCEL)
1562
- .pipe(tap(() => this.location.back()), takeUntil(this.destroyed$))
1563
- .subscribe();
1564
- this.integrationState
1565
- .listen$(FlowAction.REMOTE_APPLY)
1566
- .pipe(tap(() => this.saveRpcMessage()), takeUntil(this.destroyed$))
1567
- .subscribe();
1568
- }
1569
- createLineItem() {
1570
- var _a, _b;
1571
- const [quoteDraftLineItem] = (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
1572
- if (quoteDraftLineItem && (quoteDraftLineItem.attributes.length > 0 || quoteDraftLineItem.lineItems.length > 0)) {
1573
- return quoteDraftLineItem;
1574
- }
1575
- const lineItem = this.createRootLineItem();
1576
- const dynamicOptionProducts = this.rpcMessage.product.optionConfigurations[this.DYNAMIC_OPTION_PRODUCTS_KEY];
1577
- if (dynamicOptionProducts) {
1578
- const options = this.toParentChildMap(dynamicOptionProducts);
1579
- let items = [lineItem];
1580
- for (let i = 0; i < items.length; i++) {
1581
- const item = items[i];
1582
- const children = item && options.get(item.id);
1583
- if (children) {
1584
- item.lineItems = children;
1585
- items = items.concat(children);
1586
- }
1587
- }
1588
- }
1589
- return lineItem;
1590
- }
1591
- createRootLineItem() {
1592
- var _a, _b, _c, _d;
1593
- const product = this.rpcMessage.product;
1594
- const runtimeContext = this.runtimeService.runtimeContext;
1595
- const veloceInstanceId = product.configurationAttributes['VeloceInstanceId__c'];
1596
- const quoteId = (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState[0]) === null || _b === void 0 ? void 0 : _b.id;
1597
- return {
1598
- id: quoteId || veloceInstanceId || UUID.UUID(),
1599
- type: (_c = runtimeContext.productType) !== null && _c !== void 0 ? _c : '',
1600
- name: ((_d = runtimeContext.properties) === null || _d === void 0 ? void 0 : _d['displayName']) || runtimeContext.productName,
1601
- productName: runtimeContext.productName,
1602
- productId: runtimeContext.productId,
1603
- cfgStatus: 'Default',
1604
- actionCode: 'ADD',
1605
- qty: 1,
1606
- };
1607
- }
1608
- toParentChildMap(remoteOptionProducts) {
1609
- var _a;
1610
- const result = new Map();
1611
- for (const option of remoteOptionProducts) {
1612
- const configurationData = (_a = option === null || option === void 0 ? void 0 : option.readOnly) === null || _a === void 0 ? void 0 : _a.line;
1613
- const id = configurationData === null || configurationData === void 0 ? void 0 : configurationData.VeloceInstanceId__c;
1614
- const parentId = configurationData === null || configurationData === void 0 ? void 0 : configurationData.VeloceParentInstanceId__c;
1615
- if (!option.selected || !configurationData || !id || !parentId) {
1616
- continue;
1617
- }
1618
- const productId = option.productId;
1619
- const lineItem = {
1620
- id,
1621
- productId,
1622
- parentId,
1623
- type: configurationData.ModelType__c,
1624
- port: configurationData.ModelPort__c,
1625
- cfgStatus: configurationData.ConfigurationStatus__c,
1626
- actionCode: configurationData.ActionCode__c,
1627
- qty: option.Quantity,
1628
- };
1629
- let siblings = result.get(productId);
1630
- if (!siblings) {
1631
- result.set(parentId, (siblings = []));
1632
- }
1633
- siblings.push(lineItem);
1634
- }
1635
- return result;
1636
- }
1637
- saveRpcMessage() {
1638
- var _a;
1639
- const quote = this.quoteDraftService.quoteDraft;
1640
- const lineItem = this.configurationService.getSnapshot();
1641
- if (!quote || !lineItem) {
1642
- return;
1643
- }
1644
- this.rpcMessage.VeloceReferenceId = quote.quoteId;
1645
- this.rpcMessage.product.configurationData.VeloceInstanceId__c = lineItem.id;
1646
- const childItems = this.flattenChildLineItems(lineItem);
1647
- const savingMode = window.SavingMode;
1648
- this.updateContentData(this.rpcMessage.product, lineItem);
1649
- this.rpcMessage.quote = this.mapAttributesTo('Quote', lineItem);
1650
- if (savingMode === 'ALL') {
1651
- const optionConfigurations = this.getOptionConfigurations(this.rpcMessage.product);
1652
- const rootProductOptions = this.rpcMessage.options.filter(po => po.configuredProductId === lineItem.productId);
1653
- childItems.forEach(lineItem => {
1654
- var _a, _b, _c, _d;
1655
- const rootOption = rootProductOptions.find(po => po.optionalProductId === lineItem.productId);
1656
- if (rootOption) {
1657
- const featureOptions = (_a = optionConfigurations[rootOption.featureName]) !== null && _a !== void 0 ? _a : (optionConfigurations[rootOption.featureName] = []);
1658
- const originOption = !rootOption.hasChildren
1659
- ? (_b = optionConfigurations[rootOption.featureName]) === null || _b === void 0 ? void 0 : _b.find(({ optionId }) => optionId === rootOption.optionId)
1660
- : undefined;
1661
- const option = originOption !== null && originOption !== void 0 ? originOption : {};
1662
- option.optionId = (_c = option.optionId) !== null && _c !== void 0 ? _c : rootOption.optionId;
1663
- this.updateContentData(option, lineItem);
1664
- option.index = (_d = option.index) !== null && _d !== void 0 ? _d : featureOptions.length;
1665
- option.selected = true;
1666
- if (!originOption) {
1667
- featureOptions.push(option);
1668
- }
1669
- if (lineItem.parentLineItem) {
1670
- const nestedProductOption = this.rpcMessage.options.find(po => {
1671
- var _a;
1672
- return po.configuredProductId === ((_a = lineItem.parentLineItem) === null || _a === void 0 ? void 0 : _a.productId) &&
1673
- po.optionalProductId === lineItem.productId;
1674
- });
1675
- if (nestedProductOption) {
1676
- option.configurationData = Object.assign(Object.assign({}, option.configurationData), { VeloceParentInstanceId__c: lineItem.parentLineItem.id, VeloceNestedOptionId__c: nestedProductOption.optionId, VeloceNestedFeatureId__c: nestedProductOption.featureId });
1677
- }
1678
- }
1679
- }
1680
- else {
1681
- this.rpcMessage.dynamicFeatures.forEach(feature => {
1682
- var _a, _b;
1683
- const featureOptions = (_a = optionConfigurations[feature.name]) !== null && _a !== void 0 ? _a : (optionConfigurations[feature.name] = []);
1684
- const originOption = featureOptions.find(({ productId }) => productId === lineItem.productId);
1685
- const option = originOption !== null && originOption !== void 0 ? originOption : {};
1686
- this.updateContentData(option, lineItem);
1687
- option.index = (_b = option.index) !== null && _b !== void 0 ? _b : featureOptions.length;
1688
- option.selected = true;
1689
- if (!originOption) {
1690
- featureOptions.push(option);
1691
- }
1692
- });
1693
- }
1694
- });
1695
- this.rpcMessage.product = Object.assign(Object.assign({}, this.rpcMessage.product), { optionConfigurations });
1696
- }
1697
- (_a = window.RPC_BROADCAST) === null || _a === void 0 ? void 0 : _a.apply(null, [this.rpcMessage]);
1698
- }
1699
- updateHasChildrenFlag(bundleProductId) {
1700
- const bundleOptionsByOptionId = {};
1701
- const notBundleOptions = [];
1702
- for (const productOption of this.rpcMessage.options) {
1703
- if (productOption.configuredProductId === bundleProductId) {
1704
- bundleOptionsByOptionId[productOption.optionalProductId] = productOption;
1705
- }
1706
- else {
1707
- notBundleOptions.push(productOption);
1708
- }
1709
- }
1710
- for (const option of notBundleOptions) {
1711
- const bundleOption = bundleOptionsByOptionId[option.configuredProductId];
1712
- if (bundleOption) {
1713
- bundleOption.hasChildren = true;
1714
- }
1715
- }
1716
- }
1717
- flattenChildLineItems(lineItem) {
1718
- var _a;
1719
- let items = (_a = lineItem.lineItems) !== null && _a !== void 0 ? _a : [];
1720
- for (let i = 0; i < items.length; i++) {
1721
- const item = items[i];
1722
- if (item === null || item === void 0 ? void 0 : item.lineItems) {
1723
- items = items.concat(item.lineItems.map(li => (Object.assign(Object.assign({}, li), { parentLineItem: item }))));
1724
- }
1725
- }
1726
- return items;
1727
- }
1728
- updateContentData(entity, lineItem) {
1729
- var _a, _b;
1730
- if (lineItem.productId) {
1731
- entity.productId = lineItem.productId;
1732
- }
1733
- const quantityAttribute = lineItem.properties['quantityAttribute'];
1734
- entity.Quantity = quantityAttribute
1735
- ? (_b = (_a = lineItem.attributes.find(attribute => attribute.name === quantityAttribute)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 1
1736
- : lineItem.qty;
1737
- const totalPrice = this.computeNetPrice(lineItem);
1738
- const targetTotalPriceField = lineItem.properties['TargetTotalPriceField'] || 'TotalPrice__c';
1739
- entity.configurationData[targetTotalPriceField] = entity.configurationData[targetTotalPriceField]
1740
- ? entity.configurationData[targetTotalPriceField] + totalPrice
1741
- : totalPrice;
1742
- const targetPriceField = lineItem.properties['TargetPriceField'] || 'SBQQ__ListPrice__c';
1743
- const price = entity.Quantity != null ? entity.configurationData[targetTotalPriceField] / entity.Quantity || 0 : 0;
1744
- const targetPriceValue = Number(entity.configurationData[targetPriceField]) || 0;
1745
- entity.configurationData[targetPriceField] = targetPriceValue
1746
- ? (targetPriceValue + price).toFixed(2)
1747
- : price.toFixed(2);
1748
- entity.configurationAttributes = this.mapAttributesTo('Attribute', lineItem);
1749
- entity.configurationData = Object.assign(Object.assign(Object.assign(Object.assign({}, entity.configurationData), this.mapAttributesTo('Field', lineItem)), this.mapAttributesTo('', lineItem)), { VeloceInstanceId__c: lineItem.id });
1750
- }
1751
- computeNetPrice(lineItem) {
1752
- if (lineItem.properties['GroupCharges']) {
1753
- return this.sumNetPrice(lineItem.chargeGroupItems, this.getChargeNameSet(lineItem.properties['GroupCharges']));
1754
- }
1755
- return this.sumNetPrice(lineItem.chargeItems, this.getChargeNameSet(lineItem.properties['Charges']));
1756
- }
1757
- getChargeNameSet(property) {
1758
- if (property && property.length > 0) {
1759
- return new Set(property.split(','));
1760
- }
1761
- return new Set();
1762
- }
1763
- sumNetPrice(chargeItems, charges) {
1764
- var _a;
1765
- let netPrice = 0;
1766
- for (const chargeItem of chargeItems) {
1767
- if (!charges || charges.has(chargeItem.chargeType)) {
1768
- netPrice += (_a = chargeItem.netPrice) !== null && _a !== void 0 ? _a : 0;
1769
- }
1770
- }
1771
- return netPrice;
1772
- }
1773
- mapAttributesTo(target, lineItem) {
1774
- var _a;
1775
- const result = {};
1776
- const component = (_a = this.runtimeService.runtimeModel) === null || _a === void 0 ? void 0 : _a.components.get(lineItem.type);
1777
- if (!component) {
1778
- return result;
1779
- }
1780
- const propertyName = 'mapTo' + target;
1781
- component.attributes
1782
- .filter(a => a.properties && a.properties[propertyName])
1783
- .forEach(mapping => {
1784
- var _a;
1785
- const attribute = lineItem.attributes.find(a => a.name === mapping.name);
1786
- if (attribute) {
1787
- new Set((_a = mapping.properties[propertyName]) === null || _a === void 0 ? void 0 : _a.split(',')).forEach(k => (result[k] = attribute.value));
1788
- }
1789
- });
1790
- return result;
1791
- }
1792
- getOptionConfigurations(product) {
1793
- var _a;
1794
- const optionConfigurations = {};
1795
- const requestOptionConfigurations = (_a = product.optionConfigurations) !== null && _a !== void 0 ? _a : {};
1796
- Object.keys(requestOptionConfigurations).forEach(k => {
1797
- var _a;
1798
- optionConfigurations[k] = ((_a = requestOptionConfigurations[k]) !== null && _a !== void 0 ? _a : []).map(opt => {
1799
- return Object.assign(Object.assign({}, opt), { selected: false });
1800
- });
1801
- });
1802
- return optionConfigurations;
1803
- }
1804
- }
1805
- RemoteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteComponent, deps: [{ token: i2.ContextService }, { token: i2.QuoteDraftService }, { token: i2.ConfigurationRuntimeService }, { token: i2.ConfigurationService }, { token: i2.ConfigurationStateService }, { token: i2$2.MessageService }, { token: i2.IntegrationState }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component });
1806
- RemoteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RemoteComponent, selector: "vl-flow-remote", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteComponent, decorators: [{
1808
- type: Component,
1809
- args: [{ selector: 'vl-flow-remote', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n" }]
1810
- }], ctorParameters: function () { return [{ type: i2.ContextService }, { type: i2.QuoteDraftService }, { type: i2.ConfigurationRuntimeService }, { type: i2.ConfigurationService }, { type: i2.ConfigurationStateService }, { type: i2$2.MessageService }, { type: i2.IntegrationState }, { type: i4.Location }]; } });
1811
-
1812
- class RemoteModule {
1813
- }
1814
- RemoteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1815
- RemoteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, declarations: [RemoteComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [RemoteComponent] });
1816
- RemoteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, imports: [CommonModule, PreviewModule, LoaderModule] });
1817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, decorators: [{
1818
- type: NgModule,
1819
- args: [{
1820
- declarations: [RemoteComponent],
1821
- imports: [CommonModule, PreviewModule, LoaderModule],
1822
- exports: [RemoteComponent],
1823
- }]
1824
- }] });
1825
-
1826
1197
  class ShoppingCartComponent {
1827
- constructor(templatesApi, cdr, toastService, flowInfo, customizationService) {
1198
+ constructor(templatesAdminApiService, cdr, toastService, flowInfo, customizationService) {
1828
1199
  var _a, _b, _c;
1829
- this.templatesApi = templatesApi;
1200
+ this.templatesAdminApiService = templatesAdminApiService;
1830
1201
  this.cdr = cdr;
1831
1202
  this.toastService = toastService;
1832
1203
  this.flowInfo = flowInfo;
@@ -1881,7 +1252,7 @@ class ShoppingCartComponent {
1881
1252
  if (!template) {
1882
1253
  return of(undefined);
1883
1254
  }
1884
- return this.templatesApi.fetchComponentsAttachments$(template.id);
1255
+ return this.templatesAdminApiService.fetchComponentsAttachments$(template.id);
1885
1256
  }
1886
1257
  generateUIDefinition$() {
1887
1258
  return of(undefined).pipe(tap(() => {
@@ -1895,7 +1266,6 @@ class ShoppingCartComponent {
1895
1266
  const uiDef = {
1896
1267
  name: '',
1897
1268
  createdTimestamp: 0,
1898
- primary: true,
1899
1269
  type: 'DEFAULT',
1900
1270
  version: 2,
1901
1271
  children: metaList.map(meta => ({
@@ -1909,13 +1279,13 @@ class ShoppingCartComponent {
1909
1279
  }));
1910
1280
  }
1911
1281
  }
1912
- ShoppingCartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartComponent, deps: [{ token: i1$1.UITemplatesApiService }, { token: i0.ChangeDetectorRef }, { token: i2$1.ToastService }, { token: i2.FlowInfoService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1913
- ShoppingCartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ShoppingCartComponent, selector: "vl-flow-shopping-cart", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1282
+ ShoppingCartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartComponent, deps: [{ token: i1$1.UITemplatesAdminApiService }, { token: i0.ChangeDetectorRef }, { token: i2.ToastService }, { token: i3$1.FlowInfoService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1283
+ ShoppingCartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ShoppingCartComponent, selector: "vl-flow-shopping-cart", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1914
1284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartComponent, decorators: [{
1915
1285
  type: Component,
1916
1286
  args: [{ selector: 'vl-flow-shopping-cart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n" }]
1917
1287
  }], ctorParameters: function () {
1918
- return [{ type: i1$1.UITemplatesApiService }, { type: i0.ChangeDetectorRef }, { type: i2$1.ToastService }, { type: i2.FlowInfoService }, { type: undefined, decorators: [{
1288
+ return [{ type: i1$1.UITemplatesAdminApiService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3$1.FlowInfoService }, { type: undefined, decorators: [{
1919
1289
  type: Optional
1920
1290
  }, {
1921
1291
  type: Inject,
@@ -1938,24 +1308,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1938
1308
  }] });
1939
1309
 
1940
1310
  class FlowResolver {
1941
- constructor(router, routerService, contextService, flowInfo) {
1311
+ constructor(router, routerService, flowInfoService) {
1942
1312
  this.router = router;
1943
1313
  this.routerService = routerService;
1944
- this.contextService = contextService;
1945
- this.flowInfo = flowInfo;
1314
+ this.flowInfoService = flowInfoService;
1946
1315
  }
1947
1316
  resolve(route) {
1948
- const { queryParams } = route;
1949
- const flow = this.flowInfo.flow;
1950
- if (!flow) {
1317
+ if (!this.flowInfoService.isFlowInitialized) {
1951
1318
  return of(false);
1952
1319
  }
1953
- const { properties } = flow;
1320
+ const { queryParams } = route;
1321
+ const { properties } = this.flowInfoService.flow;
1954
1322
  const { queryParams: flowQueryParams, entryPath } = properties;
1955
1323
  const mergedQueryParams = Object.assign(Object.assign({}, queryParams), flowQueryParams);
1956
- const contextProperties = Object.entries(Object.assign(Object.assign({}, mergedQueryParams), getDefaultProperties({ flowParams: properties }))).reduce((trunk, [key, value]) => (Object.assign(Object.assign({}, trunk), { [key]: String(value) })), {});
1957
- this.contextService.update({ properties: contextProperties });
1958
- this.flowInfo.flow = flow;
1959
1324
  const parentUrl = this.routerService.getFlowRootPath(route);
1960
1325
  const entryUrl = String(entryPath !== null && entryPath !== void 0 ? entryPath : '')
1961
1326
  .split('/')
@@ -1964,29 +1329,39 @@ class FlowResolver {
1964
1329
  queryParams: mergedQueryParams,
1965
1330
  replaceUrl: true,
1966
1331
  })).pipe(catchError$1(e => {
1332
+ console.error(e);
1967
1333
  const message = e instanceof HttpErrorResponse ? e.error.message : e;
1968
1334
  const errorDetails = isVeloceError(e.error) ? extractErrorDetails(e.error) : [];
1969
1335
  return this.routerService.showErrorPage$(message, errorDetails);
1970
1336
  }));
1971
1337
  }
1972
1338
  }
1973
- FlowResolver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowResolver, deps: [{ token: i1$2.Router }, { token: FlowRouterService }, { token: i2.ContextService }, { token: i2.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable });
1339
+ FlowResolver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowResolver, deps: [{ token: i1$2.Router }, { token: FlowRouterService }, { token: i3$1.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable });
1974
1340
  FlowResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowResolver });
1975
1341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowResolver, decorators: [{
1976
1342
  type: Injectable
1977
- }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: FlowRouterService }, { type: i2.ContextService }, { type: i2.FlowInfoService }]; } });
1343
+ }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: FlowRouterService }, { type: i3$1.FlowInfoService }]; } });
1344
+
1345
+ const resolvePCMModel = () => {
1346
+ const flowInfoService = inject(FlowInfoService);
1347
+ const configurationRuntimeService = inject(ConfigurationRuntimeService);
1348
+ const { productId } = flowInfoService.context;
1349
+ if (!productId) {
1350
+ throw new Error(`Unable to start configuration for 'productId == null'`);
1351
+ }
1352
+ return configurationRuntimeService.init$({ productId });
1353
+ };
1978
1354
 
1979
- class QuoteResolver {
1980
- constructor(router, quoteDraftService, routerService, contextService, flowInfo, flowStateService) {
1355
+ class SalesTransactionResolver {
1356
+ constructor(router, routerService, flowInfoService, flowStateService, salesTransactionService) {
1981
1357
  this.router = router;
1982
- this.quoteDraftService = quoteDraftService;
1983
1358
  this.routerService = routerService;
1984
- this.contextService = contextService;
1985
- this.flowInfo = flowInfo;
1359
+ this.flowInfoService = flowInfoService;
1986
1360
  this.flowStateService = flowStateService;
1361
+ this.salesTransactionService = salesTransactionService;
1987
1362
  }
1988
1363
  resolve(route) {
1989
- const flow = this.flowInfo.flow;
1364
+ const flow = this.flowInfoService.flow;
1990
1365
  if (!flow) {
1991
1366
  return of(false);
1992
1367
  }
@@ -1994,13 +1369,14 @@ class QuoteResolver {
1994
1369
  return of(true);
1995
1370
  }
1996
1371
  return this.flowStateService.init$().pipe(switchMap(() => this.checkDynamicNavigation$(route)), catchError(e => {
1372
+ console.error(e);
1997
1373
  const message = e instanceof HttpErrorResponse ? e.error.message : e;
1998
1374
  const errorDetails = isVeloceError(e.error) ? extractErrorDetails(e.error) : [];
1999
1375
  return this.routerService.showErrorPage$(message, errorDetails);
2000
1376
  }));
2001
1377
  }
2002
1378
  checkDynamicNavigation$(route) {
2003
- const flow = this.flowInfo.flow;
1379
+ const flow = this.flowInfoService.flow;
2004
1380
  if (!flow) {
2005
1381
  return of(true);
2006
1382
  }
@@ -2019,33 +1395,53 @@ class QuoteResolver {
2019
1395
  }));
2020
1396
  }
2021
1397
  getNavigateTo() {
2022
- const flow = this.flowInfo.flow;
2023
- let navigateTo;
2024
- if (flow === null || flow === void 0 ? void 0 : flow.properties.stateful) {
2025
- return this.flowStateService.select$(UITemplateType.FLOW_ENGINE, 'NAVIGATE_TO').pipe(map(r => {
2026
- if (r.success) {
2027
- return r.result;
2028
- }
2029
- return '';
2030
- }));
2031
- }
2032
- else {
2033
- const isAccountMode = this.contextService.mode === ConfigurationContextMode.ACCOUNT;
2034
- if (isAccountMode || this.quoteDraftService.hasAssets) {
2035
- navigateTo = '/assets';
2036
- }
2037
- else if (this.quoteDraftService.hasProducts) {
2038
- navigateTo = '/cart';
2039
- }
2040
- }
2041
- return of(navigateTo);
1398
+ // Implement when needed
1399
+ return of('');
2042
1400
  }
2043
1401
  }
2044
- QuoteResolver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteResolver, deps: [{ token: i1$2.Router }, { token: i2.QuoteDraftService }, { token: FlowRouterService }, { token: i2.ContextService }, { token: i2.FlowInfoService }, { token: i2.FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
2045
- QuoteResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteResolver });
2046
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteResolver, decorators: [{
1402
+ SalesTransactionResolver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SalesTransactionResolver, deps: [{ token: i1$2.Router }, { token: FlowRouterService }, { token: i3$1.FlowInfoService }, { token: i3$1.FlowStateService }, { token: i3$1.SalesTransactionService }], target: i0.ɵɵFactoryTarget.Injectable });
1403
+ SalesTransactionResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SalesTransactionResolver });
1404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SalesTransactionResolver, decorators: [{
2047
1405
  type: Injectable
2048
- }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i2.QuoteDraftService }, { type: FlowRouterService }, { type: i2.ContextService }, { type: i2.FlowInfoService }, { type: i2.FlowStateService }]; } });
1406
+ }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: FlowRouterService }, { type: i3$1.FlowInfoService }, { type: i3$1.FlowStateService }, { type: i3$1.SalesTransactionService }]; } });
1407
+
1408
+ const resolveUIDefinition = () => {
1409
+ const customizationService = inject(FLOW_CUSTOMIZATION, { optional: true });
1410
+ const flowInfoService = inject(FlowInfoService);
1411
+ const uiDefinitionsAdminApiService = inject(UIDefinitionsAdminApiService);
1412
+ const configurationRuntimeService = inject(ConfigurationRuntimeService);
1413
+ const { productId } = flowInfoService.context;
1414
+ if (!productId) {
1415
+ throw new Error(`Unable to start configuration for 'productId == null'`);
1416
+ }
1417
+ return of(undefined).pipe(switchMap(() => {
1418
+ // Try resolving via customization service
1419
+ if (!productId || !(customizationService === null || customizationService === void 0 ? void 0 : customizationService.getUiDefinition)) {
1420
+ return of(undefined);
1421
+ }
1422
+ return customizationService.getUiDefinition(flowInfoService.context);
1423
+ }), switchMap(uiDefContainer => {
1424
+ // Resolve UIDefinition from the org
1425
+ if (uiDefContainer) {
1426
+ return of(uiDefContainer);
1427
+ }
1428
+ if (flowInfoService.context.requiredUIDefinitionId) {
1429
+ return uiDefinitionsAdminApiService.fetch$(flowInfoService.context.requiredUIDefinitionId);
1430
+ }
1431
+ return uiDefinitionsAdminApiService
1432
+ .fetchAll$({
1433
+ productId,
1434
+ defaultUIDefinitionId: flowInfoService.context.defaultUIDefinitionId,
1435
+ })
1436
+ .pipe(map((uiDefinitionContainers) => {
1437
+ const uiDefContainer = uiDefinitionContainers[0];
1438
+ if (!uiDefContainer) {
1439
+ throw new Error(`UI Definition for productId=${productId} is not resolved`);
1440
+ }
1441
+ return uiDefContainer;
1442
+ }));
1443
+ }), tap(uiDefContainer => (configurationRuntimeService.uiDefinitionContainer = uiDefContainer)));
1444
+ };
2049
1445
 
2050
1446
  const rootRoute = {
2051
1447
  id: VELOCE_FLOW_ROOT_ROUTE,
@@ -2063,15 +1459,13 @@ const rootRoute = {
2063
1459
  path: 'flows',
2064
1460
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
2065
1461
  resolve: { flow: FlowResolver },
2066
- canActivate: [ContextGuard],
2067
1462
  children: [],
2068
1463
  },
2069
1464
  {
2070
1465
  path: 'product',
2071
1466
  component: ProductComponent,
2072
1467
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
2073
- resolve: { quote: QuoteResolver },
2074
- canActivate: [ContextGuard],
1468
+ resolve: { salesTransaction: SalesTransactionResolver, uiDef: resolveUIDefinition, pcm: resolvePCMModel },
2075
1469
  canDeactivate: [ProductUnloadGuard],
2076
1470
  data: { showHeader: true },
2077
1471
  },
@@ -2079,33 +1473,23 @@ const rootRoute = {
2079
1473
  path: 'cart',
2080
1474
  component: ShoppingCartComponent,
2081
1475
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
2082
- resolve: { quote: QuoteResolver },
2083
- canActivate: [ContextGuard],
1476
+ resolve: { salesTransaction: SalesTransactionResolver },
2084
1477
  data: { showHeader: true },
2085
1478
  },
2086
1479
  {
2087
1480
  path: 'catalog',
2088
1481
  component: CatalogComponent,
2089
1482
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
2090
- resolve: { quote: QuoteResolver },
2091
- canActivate: [ContextGuard],
1483
+ resolve: { salesTransaction: SalesTransactionResolver },
2092
1484
  data: { showHeader: true },
2093
1485
  },
2094
1486
  {
2095
1487
  path: 'assets',
2096
1488
  component: AssetsComponent,
2097
1489
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
2098
- resolve: { quote: QuoteResolver },
2099
- canActivate: [ContextGuard],
1490
+ resolve: { salesTransaction: SalesTransactionResolver },
2100
1491
  data: { showHeader: true },
2101
1492
  },
2102
- {
2103
- path: 'remote',
2104
- component: RemoteComponent,
2105
- runGuardsAndResolvers: 'paramsOrQueryParamsChange',
2106
- resolve: { quote: QuoteResolver },
2107
- canActivate: [ContextGuard],
2108
- },
2109
1493
  {
2110
1494
  path: 'debug',
2111
1495
  loadChildren: () => DebugModule,
@@ -2121,30 +1505,14 @@ const rootRoute = {
2121
1505
  class FlowRoutingModule {
2122
1506
  }
2123
1507
  FlowRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2124
- FlowRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: FlowRoutingModule, imports: [i1$2.RouterModule, ProductModule,
2125
- ShoppingCartModule,
2126
- CatalogModule,
2127
- AssetsModule,
2128
- RemoteModule], exports: [RouterModule] });
2129
- FlowRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRoutingModule, providers: [FlowRouterService, RootGuard, ContextGuard, ProductUnloadGuard, FlowResolver, QuoteResolver], imports: [RouterModule.forChild([rootRoute]),
2130
- ProductModule,
2131
- ShoppingCartModule,
2132
- CatalogModule,
2133
- AssetsModule,
2134
- RemoteModule, RouterModule] });
1508
+ FlowRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: FlowRoutingModule, imports: [i1$2.RouterModule, ProductModule, ShoppingCartModule, CatalogModule, AssetsModule], exports: [RouterModule] });
1509
+ FlowRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRoutingModule, providers: [FlowRouterService, RootGuard, ProductUnloadGuard, FlowResolver, SalesTransactionResolver], imports: [RouterModule.forChild([rootRoute]), ProductModule, ShoppingCartModule, CatalogModule, AssetsModule, RouterModule] });
2135
1510
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowRoutingModule, decorators: [{
2136
1511
  type: NgModule,
2137
1512
  args: [{
2138
- imports: [
2139
- RouterModule.forChild([rootRoute]),
2140
- ProductModule,
2141
- ShoppingCartModule,
2142
- CatalogModule,
2143
- AssetsModule,
2144
- RemoteModule,
2145
- ],
1513
+ imports: [RouterModule.forChild([rootRoute]), ProductModule, ShoppingCartModule, CatalogModule, AssetsModule],
2146
1514
  exports: [RouterModule],
2147
- providers: [FlowRouterService, RootGuard, ContextGuard, ProductUnloadGuard, FlowResolver, QuoteResolver],
1515
+ providers: [FlowRouterService, RootGuard, ProductUnloadGuard, FlowResolver, SalesTransactionResolver],
2148
1516
  }]
2149
1517
  }] });
2150
1518
 
@@ -2196,5 +1564,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2196
1564
  * Generated bundle index. Do not edit.
2197
1565
  */
2198
1566
 
2199
- export { ContextGuard, FlowDialogService, FlowModule, FlowRouterService, FlowService, VELOCE_FLOW_ROOT_ROUTE, getDefaultProperties, getFlowObjectIdPropertyName };
1567
+ export { FlowDialogService, FlowModule, FlowRouterService, FlowService, VELOCE_FLOW_ROOT_ROUTE };
2200
1568
  //# sourceMappingURL=veloceapps-sdk.mjs.map