@veloceapps/sdk 8.0.0-132 → 8.0.0-133

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 (42) hide show
  1. package/cms/components/preview/preview.component.d.ts +2 -2
  2. package/cms/vendor-map.d.ts +2 -2
  3. package/core/modules/configuration/index.d.ts +1 -1
  4. package/core/modules/configuration/services/configuration-state.service.d.ts +48 -0
  5. package/core/modules/configuration/services/configuration.service.d.ts +2 -1
  6. package/core/services/flow-info.service.d.ts +1 -0
  7. package/core/services/flow-state-configuration.service.d.ts +3 -4
  8. package/esm2020/cms/components/preview/preview.component.mjs +4 -4
  9. package/esm2020/cms/vendor-map.mjs +3 -3
  10. package/esm2020/core/core.module.mjs +2 -4
  11. package/esm2020/core/modules/configuration/configuration.module.mjs +4 -4
  12. package/esm2020/core/modules/configuration/helpers.mjs +1 -1
  13. package/esm2020/core/modules/configuration/index.mjs +2 -2
  14. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +267 -0
  15. package/esm2020/core/modules/configuration/services/configuration.service.mjs +21 -15
  16. package/esm2020/core/services/flow-info.service.mjs +4 -1
  17. package/esm2020/core/services/flow-state-configuration.service.mjs +23 -21
  18. package/esm2020/core/services/flow-state.service.mjs +13 -4
  19. package/esm2020/src/guards/context.guard.mjs +1 -2
  20. package/esm2020/src/pages/product/product.component.mjs +21 -8
  21. package/esm2020/src/pages/remote/remote.component.mjs +4 -4
  22. package/esm2020/src/services/flow-router.service.mjs +30 -13
  23. package/esm2020/src/services/flow.service.mjs +48 -27
  24. package/fesm2015/veloceapps-sdk-cms.mjs +4 -4
  25. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  26. package/fesm2015/veloceapps-sdk-core.mjs +251 -101
  27. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  28. package/fesm2015/veloceapps-sdk.mjs +94 -45
  29. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  30. package/fesm2020/veloceapps-sdk-cms.mjs +4 -4
  31. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  32. package/fesm2020/veloceapps-sdk-core.mjs +240 -100
  33. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  34. package/fesm2020/veloceapps-sdk.mjs +93 -44
  35. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  36. package/package.json +1 -1
  37. package/src/pages/product/product.component.d.ts +6 -4
  38. package/src/pages/remote/remote.component.d.ts +2 -2
  39. package/src/services/flow-router.service.d.ts +4 -2
  40. package/src/services/flow.service.d.ts +7 -3
  41. package/core/modules/configuration/services/configuration.state.d.ts +0 -30
  42. package/esm2020/core/modules/configuration/services/configuration.state.mjs +0 -142
@@ -167,6 +167,10 @@ class FlowInfoService {
167
167
  set flow(value) {
168
168
  this.flowSubj$.next(value);
169
169
  }
170
+ get isLegacy() {
171
+ var _a;
172
+ return !!this.flow && ((_a = this.flow) === null || _a === void 0 ? void 0 : _a.properties.stateful) == null;
173
+ }
170
174
  constructor(flowsApiService, templatesApiService, customizationService) {
171
175
  this.flowsApiService = flowsApiService;
172
176
  this.templatesApiService = templatesApiService;
@@ -1006,8 +1010,7 @@ class FlowStateService {
1006
1010
  initStateless$() {
1007
1011
  var _a;
1008
1012
  const { headerId } = this.contextService.resolve();
1009
- const stateInit$ = this.quoteDraftService.init(headerId, (_a = this.flowInfoService.params) !== null && _a !== void 0 ? _a : {}).pipe(switchMap(() => this.executeRequest$(this.getDefaultExecutionRequestDTO())), switchMap(() => this.calculate$()));
1010
- return stateInit$.pipe(tap$1(() => this.quoteDraftService.finalizeInit()), map$1(noop));
1013
+ return this.quoteDraftService.init(headerId, (_a = this.flowInfoService.params) !== null && _a !== void 0 ? _a : {}).pipe(switchMap(() => this.executeRequest$(this.getDefaultExecutionRequestDTO())), switchMap(() => this.calculate$()), tap$1(() => this.quoteDraftService.finalizeInit()), map$1(noop));
1011
1014
  }
1012
1015
  calculate$() {
1013
1016
  var _a;
@@ -1145,7 +1148,7 @@ class FlowStateService {
1145
1148
  return `${scope}/${selectorName}/${inputDataHash}`;
1146
1149
  }
1147
1150
  getDefaultExecutionRequestDTO() {
1148
- var _a;
1151
+ var _a, _b, _c;
1149
1152
  const request = {
1150
1153
  actions: [],
1151
1154
  selectors: {},
@@ -1155,10 +1158,20 @@ class FlowStateService {
1155
1158
  }
1156
1159
  const ownerId = this.getOwnerIdByScope(UITemplateType.FLOW_ENGINE);
1157
1160
  (_a = request.actions) === null || _a === void 0 ? void 0 : _a.push({
1158
- apiName: 'INITIALIZE_STATE',
1161
+ apiName: 'UPDATE_PRICE_LIST',
1162
+ ownerId,
1163
+ inputData: {},
1164
+ });
1165
+ (_b = request.actions) === null || _b === void 0 ? void 0 : _b.push({
1166
+ apiName: 'UPDATE_ASSET_IDS',
1159
1167
  ownerId,
1160
1168
  inputData: {},
1161
1169
  });
1170
+ (_c = request.actions) === null || _c === void 0 ? void 0 : _c.push({
1171
+ apiName: 'UPDATE_CONTEXT_PROPERTIES',
1172
+ ownerId,
1173
+ inputData: this.contextService.resolve().properties,
1174
+ });
1162
1175
  return request;
1163
1176
  }
1164
1177
  }
@@ -1562,11 +1575,28 @@ class ConfigurationService {
1562
1575
  throw error;
1563
1576
  }));
1564
1577
  }
1565
- generateRequest() {
1566
- var _a, _b;
1578
+ generateRequest(lightMode = true) {
1579
+ var _a;
1580
+ const lineItem = this.generateLineItem();
1581
+ let request = {
1582
+ lineItem,
1583
+ mode: this.mode,
1584
+ step: !this.lineItem.value ? RuntimeStep.START : RuntimeStep.UPDATE,
1585
+ attributeDomainMode: 'ALL',
1586
+ context: this.contextService.resolve(),
1587
+ lineItems: ((_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) || [],
1588
+ asset: this.getAsset(),
1589
+ };
1590
+ if (lightMode) {
1591
+ request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);
1592
+ }
1593
+ return request;
1594
+ }
1595
+ generateLineItem() {
1596
+ var _a;
1567
1597
  const runtimeContext = this.getRuntimeContext();
1568
1598
  const uiDefinitionProperties = this.getUIDefinitionProperties();
1569
- let lineItem = this.configurableRamp;
1599
+ let lineItem = cloneDeep(this.configurableRamp);
1570
1600
  if (!lineItem) {
1571
1601
  const { initializationProps } = (_a = this.runtimeService) !== null && _a !== void 0 ? _a : {};
1572
1602
  lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps === null || initializationProps === void 0 ? void 0 : initializationProps.defaultQty);
@@ -1576,17 +1606,7 @@ class ConfigurationService {
1576
1606
  lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;
1577
1607
  }
1578
1608
  }
1579
- let request = {
1580
- lineItem,
1581
- mode: this.mode,
1582
- step: !this.lineItem.value ? RuntimeStep.START : RuntimeStep.UPDATE,
1583
- attributeDomainMode: 'ALL',
1584
- context: this.contextService.resolve(),
1585
- lineItems: ((_b = this.quoteDraftService.quoteDraft) === null || _b === void 0 ? void 0 : _b.currentState) || [],
1586
- asset: this.getAsset(),
1587
- };
1588
- request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);
1589
- return request;
1609
+ return lineItem;
1590
1610
  }
1591
1611
  getUIDefinitionProperties() {
1592
1612
  var _a, _b, _c;
@@ -1789,12 +1809,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1789
1809
  }] });
1790
1810
 
1791
1811
  class FlowStateConfigurationService {
1792
- constructor(flowStateService, flowInfoService, configurationService, flowConfigurationService, flowStateApiService) {
1793
- this.flowStateService = flowStateService;
1812
+ constructor(flowInfoService, flowConfigurationService, flowStateApiService, flowStateService) {
1794
1813
  this.flowInfoService = flowInfoService;
1795
- this.configurationService = configurationService;
1796
1814
  this.flowConfigurationService = flowConfigurationService;
1797
1815
  this.flowStateApiService = flowStateApiService;
1816
+ this.flowStateService = flowStateService;
1798
1817
  this.configurationStateId$ = new BehaviorSubject(null);
1799
1818
  }
1800
1819
  get configurationStateId() {
@@ -1802,31 +1821,35 @@ class FlowStateConfigurationService {
1802
1821
  }
1803
1822
  addToCart$(props) {
1804
1823
  var _a;
1824
+ let request$;
1805
1825
  const stateful = (_a = this.flowInfoService.flow) === null || _a === void 0 ? void 0 : _a.properties.stateful;
1806
1826
  if (stateful) {
1807
1827
  const stateId = this.flowStateService.stateId;
1808
1828
  if (!stateId) {
1809
- return of();
1829
+ request$ = of();
1830
+ }
1831
+ else {
1832
+ const lineItem = generateConfigurationLineItem(props, props.qty);
1833
+ request$ = this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(tap$1(r => this.configurationStateId$.next(r.stateId)), switchMap(() => {
1834
+ if (!this.configurationStateId) {
1835
+ return of();
1836
+ }
1837
+ return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(tap$1(() => this.configurationStateId$.next(null)), map$1(noop));
1838
+ }));
1810
1839
  }
1811
- const lineItem = generateConfigurationLineItem(props, props.qty);
1812
- return this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(tap$1(r => this.configurationStateId$.next(r.stateId)), switchMap(() => {
1813
- if (!this.configurationStateId) {
1814
- return of();
1815
- }
1816
- return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), tap$1(() => this.configurationStateId$.next(null)), map$1(noop));
1817
- }));
1818
1840
  }
1819
1841
  else {
1820
- return this.flowConfigurationService.addToCart$(props).pipe(map$1(noop));
1842
+ request$ = this.flowConfigurationService.addToCart$(props).pipe(map$1(noop));
1821
1843
  }
1844
+ return request$.pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map$1(noop));
1822
1845
  }
1823
1846
  }
1824
- FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: FlowStateService }, { token: FlowInfoService }, { token: ConfigurationService }, { token: FlowConfigurationService }, { token: i1.FlowStateApiService }], target: i0.ɵɵFactoryTarget.Injectable });
1847
+ FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: FlowInfoService }, { token: FlowConfigurationService }, { token: i1.FlowStateApiService }, { token: FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
1825
1848
  FlowStateConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, providedIn: 'root' });
1826
1849
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, decorators: [{
1827
1850
  type: Injectable,
1828
1851
  args: [{ providedIn: 'root' }]
1829
- }], ctorParameters: function () { return [{ type: FlowStateService }, { type: FlowInfoService }, { type: ConfigurationService }, { type: FlowConfigurationService }, { type: i1.FlowStateApiService }]; } });
1852
+ }], ctorParameters: function () { return [{ type: FlowInfoService }, { type: FlowConfigurationService }, { type: i1.FlowStateApiService }, { type: FlowStateService }]; } });
1830
1853
 
1831
1854
  function calculateMetricByMethod(lineItems, metric, method) {
1832
1855
  const items = getLineItemsByMethod(lineItems, method);
@@ -2096,60 +2119,191 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2096
2119
  type: Injectable
2097
2120
  }], ctorParameters: function () { return [{ type: i1.ConfigurationApiService }, { type: ContextService }, { type: RuntimeContextService }]; } });
2098
2121
 
2099
- class ConfigurationState {
2100
- constructor(statefulConfigurationApiService, runtimeService, configurationService, toastService) {
2101
- this.statefulConfigurationApiService = statefulConfigurationApiService;
2102
- this.runtimeService = runtimeService;
2122
+ class ConfigurationStateService {
2123
+ constructor(configurationRuntimeService, configurationService, quoteDraftService, toastService, flowStateService, flowInfoService, flowConfigurationService, flowStateApiService, quoteApiService) {
2124
+ this.configurationRuntimeService = configurationRuntimeService;
2103
2125
  this.configurationService = configurationService;
2126
+ this.quoteDraftService = quoteDraftService;
2104
2127
  this.toastService = toastService;
2105
- this.stateSubj$ = new BehaviorSubject({});
2106
- this.state$ = this.stateSubj$.asObservable();
2128
+ this.flowStateService = flowStateService;
2129
+ this.flowInfoService = flowInfoService;
2130
+ this.flowConfigurationService = flowConfigurationService;
2131
+ this.flowStateApiService = flowStateApiService;
2132
+ this.quoteApiService = quoteApiService;
2133
+ this.NOT_INITIALIZED = Symbol();
2107
2134
  this.stateId = null;
2135
+ this.ownerId = '';
2136
+ this.subscriptions = {};
2137
+ this.isInitialized$ = new BehaviorSubject(false);
2108
2138
  }
2109
2139
  init$() {
2110
- return this.configurationService.configure().pipe(switchMap(() => {
2111
- var _a, _b;
2112
- if (!this.isStatefulConfiguration) {
2113
- return of(undefined);
2114
- }
2115
- const { actions, selectors } = (_b = (_a = this.runtimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) !== null && _b !== void 0 ? _b : {};
2116
- return this.statefulConfigurationApiService.init({
2117
- item: this.configurationService.generateRequest(),
2118
- actions: actions === null || actions === void 0 ? void 0 : actions.map(action => ({ name: action.apiName, script: action.script })),
2119
- selectors: selectors === null || selectors === void 0 ? void 0 : selectors.map(selector => ({ name: selector.apiName, script: selector.script })),
2120
- });
2121
- }), tap$1(stateId => (this.stateId = stateId || null)), map$1(() => undefined));
2140
+ let request$;
2141
+ if (this.flowStateService.stateId && this.isStatefulConfiguration) {
2142
+ request$ = this.initStateful$();
2143
+ }
2144
+ else {
2145
+ request$ = this.initStateless$();
2146
+ }
2147
+ return request$.pipe(finalize(() => this.isInitialized$.next(true)));
2122
2148
  }
2123
2149
  cleanup() {
2124
2150
  this.stateId = null;
2125
2151
  this.configurationService.reset();
2126
- this.stateSubj$.next({});
2127
2152
  }
2128
- execute$(req) {
2153
+ execute$(req, forceSubscriptions) {
2154
+ var _a;
2155
+ const fullRequest = cloneDeep(req);
2156
+ if (((_a = fullRequest.actions) === null || _a === void 0 ? void 0 : _a.length) || forceSubscriptions) {
2157
+ for (const subscription of Object.values(this.subscriptions)) {
2158
+ fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);
2159
+ }
2160
+ }
2161
+ let execution$;
2129
2162
  if (this.isStatefulConfiguration) {
2130
- return this.executeStateful$(req);
2163
+ execution$ = this.executeStateful$(fullRequest);
2131
2164
  }
2132
2165
  else {
2133
- return this.executeStateless$(req);
2166
+ execution$ = this.executeStateless$(fullRequest);
2134
2167
  }
2168
+ return execution$.pipe(tap$1(result => this.handleSelectorsResponse(result.selectors)));
2135
2169
  }
2136
- dispatch$(actionName, inputData) {
2137
- return this.execute$({ actions: [{ name: actionName, inputData }] });
2170
+ handleSelectorsResponse(selectors) {
2171
+ Object.entries(selectors).forEach(([requestId, selectorResult]) => {
2172
+ var _a;
2173
+ if (!selectorResult.success) {
2174
+ this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });
2175
+ }
2176
+ const subscription$ = (_a = this.subscriptions[requestId]) === null || _a === void 0 ? void 0 : _a.data$;
2177
+ if (subscription$) {
2178
+ subscription$.next(selectorResult);
2179
+ }
2180
+ });
2138
2181
  }
2139
- select$(selectorName, inputData) {
2182
+ dispatch$(actionName, inputData = {}) {
2183
+ return this.execute$({ actions: [{ apiName: actionName, inputData, ownerId: this.ownerId }] });
2184
+ }
2185
+ select$(selectorName, inputData = {}) {
2140
2186
  const requestId = UUID.UUID();
2141
2187
  return this.execute$({
2142
2188
  selectors: {
2143
2189
  [requestId]: {
2144
- name: selectorName,
2190
+ apiName: selectorName,
2145
2191
  inputData,
2192
+ ownerId: this.ownerId,
2146
2193
  },
2147
2194
  },
2148
- }).pipe(map$1(() => this.stateSubj$.value[requestId]), tap$1(() => this.stateSubj$.next(omit(this.stateSubj$.value, requestId))));
2195
+ }).pipe(map$1(response => response.selectors[requestId]));
2196
+ }
2197
+ subscribe$(selectorName, inputData = {}, options) {
2198
+ const requestId = UUID.UUID();
2199
+ if (!this.subscriptions[requestId]) {
2200
+ const request = {
2201
+ selectors: {
2202
+ [requestId]: {
2203
+ apiName: selectorName,
2204
+ inputData,
2205
+ ownerId: this.ownerId,
2206
+ },
2207
+ },
2208
+ };
2209
+ this.subscriptions[requestId] = {
2210
+ request,
2211
+ data$: new BehaviorSubject(this.NOT_INITIALIZED),
2212
+ };
2213
+ if (!(options === null || options === void 0 ? void 0 : options.cold)) {
2214
+ this.execute$(request).subscribe();
2215
+ }
2216
+ }
2217
+ return this.subscriptions[requestId].data$.pipe(filter$1(data => data != this.NOT_INITIALIZED), map$1(data => data), finalize(() => {
2218
+ if (!this.subscriptions[requestId].data$.observed) {
2219
+ delete this.subscriptions[requestId];
2220
+ }
2221
+ }));
2222
+ }
2223
+ saveConfiguration(quoteId, flow) {
2224
+ var _a, _b;
2225
+ if (this.isStatefulConfiguration) {
2226
+ return this.flowStateApiService
2227
+ .saveConfiguration((_a = this.flowStateService.stateId) !== null && _a !== void 0 ? _a : '', (_b = this.stateId) !== null && _b !== void 0 ? _b : '')
2228
+ .pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map$1(() => r))));
2229
+ }
2230
+ else {
2231
+ if (!flow) {
2232
+ if (!quoteId) {
2233
+ return of({ quoteId: '' });
2234
+ }
2235
+ const rootLineItem = this.configurationService.getSnapshot();
2236
+ const currentState = rootLineItem ? [rootLineItem] : [];
2237
+ return this.quoteApiService
2238
+ .getQuoteDraft(quoteId)
2239
+ .pipe(switchMap(quoteDraft => this.quoteApiService.upsertQuote(Object.assign(Object.assign({}, quoteDraft), { currentState }))));
2240
+ }
2241
+ else {
2242
+ const quoteDraft = this.quoteDraftService.quoteDraft;
2243
+ const lineItem = this.configurationService.getSnapshot();
2244
+ if (!quoteDraft || !lineItem) {
2245
+ return of({ quoteId: '' });
2246
+ }
2247
+ const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);
2248
+ let updatedState;
2249
+ if (isNewLineItem) {
2250
+ updatedState = [...quoteDraft.currentState, lineItem];
2251
+ }
2252
+ else {
2253
+ updatedState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));
2254
+ }
2255
+ return this.flowConfigurationService
2256
+ .calculate$(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedState }))
2257
+ .pipe(map$1(() => ({ quoteId: '' })));
2258
+ }
2259
+ }
2260
+ }
2261
+ cancelConfiguration() {
2262
+ var _a, _b;
2263
+ if (!this.isInitialized$.value) {
2264
+ return of(undefined);
2265
+ }
2266
+ this.isInitialized$.next(false);
2267
+ if (!this.isInitialized$.value || !this.isStatefulConfiguration) {
2268
+ return of(undefined);
2269
+ }
2270
+ return this.flowStateApiService.cancelConfiguration((_a = this.flowStateService.stateId) !== null && _a !== void 0 ? _a : '', (_b = this.stateId) !== null && _b !== void 0 ? _b : '');
2149
2271
  }
2150
2272
  get isStatefulConfiguration() {
2151
- var _a;
2152
- return (_a = this.runtimeService.uiDefinitionProperties.statefulConfigurationEnabled) !== null && _a !== void 0 ? _a : false;
2273
+ var _a, _b;
2274
+ return (_b = (_a = this.flowInfoService.flow) === null || _a === void 0 ? void 0 : _a.properties.stateful) !== null && _b !== void 0 ? _b : false;
2275
+ }
2276
+ initStateful$() {
2277
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
2278
+ this.ownerId = (_c = (_b = (_a = this.configurationRuntimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : '';
2279
+ const lineItemId = (_e = (_d = this.configurationRuntimeService.runtimeContext) === null || _d === void 0 ? void 0 : _d.properties) === null || _e === void 0 ? void 0 : _e.lineItemId;
2280
+ if (!this.flowStateService.stateId) {
2281
+ return of(undefined);
2282
+ }
2283
+ const container = (_f = this.configurationRuntimeService.runtimeContext) === null || _f === void 0 ? void 0 : _f.uiDefinitionContainer;
2284
+ const lineItem = this.configurationService.generateLineItem();
2285
+ let request$;
2286
+ if (!lineItemId) {
2287
+ request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {
2288
+ lineItem,
2289
+ actionsOverride: (_g = container === null || container === void 0 ? void 0 : container.actions) === null || _g === void 0 ? void 0 : _g.map(processor => (Object.assign(Object.assign({}, processor), { ownerId: this.ownerId }))),
2290
+ selectorsOverride: (_h = container === null || container === void 0 ? void 0 : container.selectors) === null || _h === void 0 ? void 0 : _h.map(processor => (Object.assign(Object.assign({}, processor), { ownerId: this.ownerId }))),
2291
+ });
2292
+ }
2293
+ else {
2294
+ request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {
2295
+ lineItemId,
2296
+ actionsOverride: (_j = container === null || container === void 0 ? void 0 : container.actions) === null || _j === void 0 ? void 0 : _j.map(processor => (Object.assign(Object.assign({}, processor), { ownerId: this.ownerId }))),
2297
+ selectorsOverride: (_k = container === null || container === void 0 ? void 0 : container.selectors) === null || _k === void 0 ? void 0 : _k.map(processor => (Object.assign(Object.assign({}, processor), { ownerId: this.ownerId }))),
2298
+ });
2299
+ }
2300
+ return request$.pipe(map$1(r => {
2301
+ this.stateId = r.stateId;
2302
+ return undefined;
2303
+ }));
2304
+ }
2305
+ initStateless$() {
2306
+ return this.configurationService.configure().pipe(map$1(() => undefined));
2153
2307
  }
2154
2308
  executeStateless$(request) {
2155
2309
  return of(undefined).pipe(switchMap(() => {
@@ -2165,51 +2319,49 @@ class ConfigurationState {
2165
2319
  configurationRequest = (_a = this.executeActionScript(configurationRequest, action)) !== null && _a !== void 0 ? _a : configurationRequest;
2166
2320
  });
2167
2321
  return this.configurationService.configureRequest$(configurationRequest);
2168
- }), tap$1(() => {
2169
- if (!request.selectors) {
2170
- return;
2171
- }
2322
+ }), map$1(() => {
2323
+ var _a;
2172
2324
  // Run selectors and apply them to the state
2173
- const finalConfigurationRequest = this.configurationService.generateRequest();
2174
- const selectorsResult = EntityUtil.entries(request.selectors).reduce((trunk, [key, selector]) => {
2175
- trunk[key] = this.executeSelectorScript(finalConfigurationRequest, selector);
2176
- return trunk;
2177
- }, {});
2178
- this.stateSubj$.next(Object.assign(Object.assign({}, this.stateSubj$.value), selectorsResult));
2179
- }), map$1(() => undefined));
2325
+ const finalConfigurationRequest = this.configurationService.generateRequest(false);
2326
+ const selectorsResult = EntityUtil.entries((_a = request.selectors) !== null && _a !== void 0 ? _a : {}).reduce((result, [key, selector]) => {
2327
+ try {
2328
+ result.selectors[key] = {
2329
+ success: true,
2330
+ result: this.executeSelectorScript(finalConfigurationRequest, selector),
2331
+ };
2332
+ }
2333
+ catch (e) {
2334
+ result.selectors[key] = {
2335
+ success: false,
2336
+ errorMessage: String(e),
2337
+ };
2338
+ }
2339
+ return result;
2340
+ }, { stateId: '', selectors: {} });
2341
+ return selectorsResult;
2342
+ }));
2180
2343
  }
2181
2344
  executeStateful$(request) {
2182
- if (!this.stateId) {
2183
- return of(undefined);
2345
+ if (!this.flowStateService.stateId || !this.stateId) {
2346
+ return of();
2184
2347
  }
2185
- return this.statefulConfigurationApiService.execute(this.stateId, request).pipe(tap$1(response => {
2348
+ return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request).pipe(tap$1(response => {
2186
2349
  this.stateId = response.stateId;
2187
- const updatedState = this.stateSubj$.value;
2188
- EntityUtil.entries(response.selectors).forEach(([key, value]) => {
2189
- if (!value.success) {
2190
- if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {
2191
- this.toastService.add({ summary: value.errorMessage, severity: ToastType.error });
2192
- }
2193
- return;
2194
- }
2195
- updatedState[key] = value.result;
2196
- });
2197
- this.stateSubj$.next(updatedState);
2198
- }), map$1(() => undefined));
2350
+ }));
2199
2351
  }
2200
2352
  executeActionScript(request, processor) {
2201
2353
  var _a, _b, _c;
2202
- const { actions } = (_b = (_a = this.runtimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) !== null && _b !== void 0 ? _b : {};
2203
- const script = (_c = actions === null || actions === void 0 ? void 0 : actions.find(action => action.apiName === processor.name)) === null || _c === void 0 ? void 0 : _c.script;
2354
+ const { actions } = (_b = (_a = this.configurationRuntimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) !== null && _b !== void 0 ? _b : {};
2355
+ const script = (_c = actions === null || actions === void 0 ? void 0 : actions.find(action => action.apiName === processor.apiName)) === null || _c === void 0 ? void 0 : _c.script;
2204
2356
  if (!script) {
2205
- return null;
2357
+ return request;
2206
2358
  }
2207
2359
  return this.executeProcessorScript(request, script, processor.inputData);
2208
2360
  }
2209
2361
  executeSelectorScript(request, processor) {
2210
2362
  var _a, _b, _c;
2211
- const { selectors } = (_b = (_a = this.runtimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) !== null && _b !== void 0 ? _b : {};
2212
- const script = (_c = selectors === null || selectors === void 0 ? void 0 : selectors.find(selector => selector.apiName === processor.name)) === null || _c === void 0 ? void 0 : _c.script;
2363
+ const { selectors } = (_b = (_a = this.configurationRuntimeService.runtimeContext) === null || _a === void 0 ? void 0 : _a.uiDefinitionContainer) !== null && _b !== void 0 ? _b : {};
2364
+ const script = (_c = selectors === null || selectors === void 0 ? void 0 : selectors.find(selector => selector.apiName === processor.apiName)) === null || _c === void 0 ? void 0 : _c.script;
2213
2365
  if (!script) {
2214
2366
  return null;
2215
2367
  }
@@ -2222,11 +2374,11 @@ class ConfigurationState {
2222
2374
  });
2223
2375
  }
2224
2376
  }
2225
- ConfigurationState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationState, deps: [{ token: i1.StatefulConfigurationApiService }, { token: ConfigurationRuntimeService }, { token: ConfigurationService }, { token: i6.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
2226
- ConfigurationState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationState });
2227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationState, decorators: [{
2377
+ ConfigurationStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationStateService, deps: [{ token: ConfigurationRuntimeService }, { token: ConfigurationService }, { token: QuoteDraftService }, { token: i6.ToastService }, { token: FlowStateService }, { token: FlowInfoService }, { token: FlowConfigurationService }, { token: i1.FlowStateApiService }, { token: i1.QuoteApiService }], target: i0.ɵɵFactoryTarget.Injectable });
2378
+ ConfigurationStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationStateService });
2379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationStateService, decorators: [{
2228
2380
  type: Injectable
2229
- }], ctorParameters: function () { return [{ type: i1.StatefulConfigurationApiService }, { type: ConfigurationRuntimeService }, { type: ConfigurationService }, { type: i6.ToastService }]; } });
2381
+ }], ctorParameters: function () { return [{ type: ConfigurationRuntimeService }, { type: ConfigurationService }, { type: QuoteDraftService }, { type: i6.ToastService }, { type: FlowStateService }, { type: FlowInfoService }, { type: FlowConfigurationService }, { type: i1.FlowStateApiService }, { type: i1.QuoteApiService }]; } });
2230
2382
 
2231
2383
  class ConfigurationModule {
2232
2384
  }
@@ -2239,7 +2391,7 @@ ConfigurationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
2239
2391
  ConfigurationRuntimeService,
2240
2392
  RuntimeContextService,
2241
2393
  ConfigurationService,
2242
- ConfigurationState,
2394
+ ConfigurationStateService,
2243
2395
  ], imports: [ConfirmationDialogModule] });
2244
2396
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationModule, decorators: [{
2245
2397
  type: NgModule,
@@ -2252,7 +2404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2252
2404
  ConfigurationRuntimeService,
2253
2405
  RuntimeContextService,
2254
2406
  ConfigurationService,
2255
- ConfigurationState,
2407
+ ConfigurationStateService,
2256
2408
  ],
2257
2409
  }]
2258
2410
  }] });
@@ -2271,7 +2423,6 @@ SdkCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
2271
2423
  SdkCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] });
2272
2424
  SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SdkCoreModule, providers: [
2273
2425
  IntegrationState,
2274
- FlowStateService,
2275
2426
  {
2276
2427
  provide: FORMATTING_SETTINGS_TOKEN,
2277
2428
  useExisting: RuntimeSettingsService,
@@ -2283,7 +2434,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2283
2434
  imports: [ConfigurationModule, FlowConfigurationModule],
2284
2435
  providers: [
2285
2436
  IntegrationState,
2286
- FlowStateService,
2287
2437
  {
2288
2438
  provide: FORMATTING_SETTINGS_TOKEN,
2289
2439
  useExisting: RuntimeSettingsService,
@@ -2468,5 +2618,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2468
2618
  * Generated bundle index. Do not edit.
2469
2619
  */
2470
2620
 
2471
- export { ActionCodePipe, CalendarDirective, ConfigurationRuntimeService, ConfigurationService, ConfigurationState, ContextService, DEFAULT_FORMATTING_SETTINGS, DatePipe, FLOW_CUSTOMIZATION, FORMATTING_SETTINGS_TOKEN, FlowConfigurationModule, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, FlowUpdateService, IntegrationState, LineItemWorker, MetricsCalculationService, NumberPipe, PricePipe, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, SdkDirectivesModule, SdkPipesModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, filterOutTechnicalAttributes, findLineItem, findLineItemWithComparator, generateConfigurationLineItem, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getGuidedSellingConfigurationRequest, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, isTechnicalAttribute, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
2621
+ export { ActionCodePipe, CalendarDirective, ConfigurationRuntimeService, ConfigurationService, ConfigurationStateService, ContextService, DEFAULT_FORMATTING_SETTINGS, DatePipe, FLOW_CUSTOMIZATION, FORMATTING_SETTINGS_TOKEN, FlowConfigurationModule, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, FlowUpdateService, IntegrationState, LineItemWorker, MetricsCalculationService, NumberPipe, PricePipe, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, SdkDirectivesModule, SdkPipesModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, filterOutTechnicalAttributes, findLineItem, findLineItemWithComparator, generateConfigurationLineItem, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getGuidedSellingConfigurationRequest, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, isTechnicalAttribute, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
2472
2622
  //# sourceMappingURL=veloceapps-sdk-core.mjs.map