@veloceapps/sdk 7.0.2-72 → 7.0.2-73

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 (47) hide show
  1. package/cms/components/preview/preview.component.d.ts +6 -9
  2. package/cms/components/preview/preview.types.d.ts +5 -0
  3. package/cms/services/resources.service.d.ts +9 -0
  4. package/cms/vendor-map.d.ts +2 -1
  5. package/core/modules/configuration/index.d.ts +1 -0
  6. package/core/modules/configuration/services/configuration-runtime.service.d.ts +4 -3
  7. package/core/modules/configuration/services/configuration.service.d.ts +6 -4
  8. package/core/modules/configuration/services/configuration.state.d.ts +30 -0
  9. package/core/modules/configuration/services/runtime-context.service.d.ts +1 -1
  10. package/core/types/runtime.types.d.ts +2 -2
  11. package/esm2020/cms/components/preview/preview.component.mjs +17 -37
  12. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  13. package/esm2020/cms/services/resources.service.mjs +19 -1
  14. package/esm2020/cms/vendor-map.mjs +3 -2
  15. package/esm2020/core/modules/configuration/configuration.module.mjs +4 -1
  16. package/esm2020/core/modules/configuration/index.mjs +2 -1
  17. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +27 -19
  18. package/esm2020/core/modules/configuration/services/configuration.service.mjs +41 -29
  19. package/esm2020/core/modules/configuration/services/configuration.state.mjs +142 -0
  20. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +10 -11
  21. package/esm2020/core/services/quote-draft.service.mjs +1 -1
  22. package/esm2020/core/types/runtime.types.mjs +1 -1
  23. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +1 -1
  24. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +1 -1
  25. package/esm2020/src/pages/assets/assets.component.mjs +1 -1
  26. package/esm2020/src/pages/catalog/catalog.component.mjs +1 -1
  27. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +4 -4
  28. package/esm2020/src/pages/product/product.component.mjs +50 -66
  29. package/esm2020/src/pages/remote/remote.component.mjs +19 -19
  30. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +1 -1
  31. package/esm2020/src/types/flow-customization.types.mjs +1 -1
  32. package/fesm2015/veloceapps-sdk-cms.mjs +44 -43
  33. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  34. package/fesm2015/veloceapps-sdk-core.mjs +214 -59
  35. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  36. package/fesm2015/veloceapps-sdk.mjs +67 -80
  37. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  38. package/fesm2020/veloceapps-sdk-cms.mjs +42 -43
  39. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  40. package/fesm2020/veloceapps-sdk-core.mjs +206 -55
  41. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  42. package/fesm2020/veloceapps-sdk.mjs +64 -76
  43. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  44. package/package.json +1 -1
  45. package/src/pages/product/product.component.d.ts +10 -21
  46. package/src/pages/remote/remote.component.d.ts +3 -4
  47. package/src/types/flow-customization.types.d.ts +3 -3
@@ -1,12 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, InjectionToken, NgModule, inject, Directive, Input, LOCALE_ID, Pipe } from '@angular/core';
3
- import { UUID, ConfigurationContextMode, ConfigurationContext, RuntimeModel, isLegacyUIDefinition, SalesforceIdUtils, ConfigurationMode, ConfigurationTranslatorUtils, ChargeGroupUtils, DEFAULT_CURRENCY_ISO_CODE, DEFAULT_CURRENCY_SYMBOL, validateDateFormat, DEFAULT_DATE_FORMAT, DEFAULT_DECIMAL_SEPARATOR, DEFAULT_THOUSANDS_SEPARATOR, getSupportedDateFormats, DEFAULT_DECIMALS_COUNT, parseJsonSafely, formatNumber } from '@veloceapps/core';
3
+ import { UUID, ConfigurationContextMode, ConfigurationContext, RuntimeModel, getUIDefinitionProperties, isLegacyUIDefinition, SalesforceIdUtils, ConfigurationMode, ConfigurationTranslatorUtils, EntityUtil, ChargeGroupUtils, DEFAULT_CURRENCY_ISO_CODE, DEFAULT_CURRENCY_SYMBOL, validateDateFormat, DEFAULT_DATE_FORMAT, DEFAULT_DECIMAL_SEPARATOR, DEFAULT_THOUSANDS_SEPARATOR, getSupportedDateFormats, DEFAULT_DECIMALS_COUNT, parseJsonSafely, formatNumber } from '@veloceapps/core';
4
4
  import * as i1 from '@veloceapps/api';
5
5
  import { PriceApiService, ContextApiService, ProductModelApiService, ConfigurationApiService } from '@veloceapps/api';
6
- import { BehaviorSubject, combineLatest, zip, noop, throwError, shareReplay as shareReplay$1, tap as tap$1, map as map$2, of, switchMap as switchMap$1, catchError as catchError$1, Subject, take as take$1, distinctUntilChanged } from 'rxjs';
6
+ import { BehaviorSubject, combineLatest, zip, noop, throwError, shareReplay as shareReplay$1, switchMap as switchMap$1, of, tap as tap$1, map as map$2, catchError as catchError$1, Subject, take as take$1, distinctUntilChanged } from 'rxjs';
7
7
  import { filter, tap, map, first, switchMap, skip, take, shareReplay, catchError, finalize } from 'rxjs/operators';
8
8
  import { merge, isEqual, flatten, sortBy, map as map$1, transform, omit, cloneDeep, uniq } from 'lodash';
9
9
  import { HttpErrorResponse } from '@angular/common/http';
10
+ import * as i4 from '@veloceapps/components';
10
11
  import { ToastType, ConfirmationComponent, ConfirmationDialogModule } from '@veloceapps/components';
11
12
  import * as i5 from 'primeng/api';
12
13
  import * as i6 from 'primeng/dynamicdialog';
@@ -144,29 +145,28 @@ class RuntimeContextService {
144
145
  }
145
146
  getRuntimeContext(productId, offeringId) {
146
147
  return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(map(runtimeData => {
147
- const uiDefinition = this.getUIDefinition(runtimeData);
148
+ const uiDefinitionContainer = this.getUIDefinitionContainer(runtimeData);
148
149
  const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);
149
150
  const { productName, properties } = Array.from(runtimeModel.components.values()).find(c => c.productId === productId) ?? {};
151
+ const uiDefinitionProperties = getUIDefinitionProperties(uiDefinitionContainer);
150
152
  return {
151
153
  modelId: runtimeData.modelId,
152
- uiDefinition: uiDefinition,
154
+ uiDefinitionContainer: uiDefinitionContainer,
153
155
  runtimeModel: runtimeModel,
154
156
  runtimeMode: RuntimeMode.PROD,
155
157
  productId: productId,
156
158
  productType: properties?.['displayName'] || productName,
157
159
  offeringId: offeringId,
158
160
  properties: {
159
- PricingEnabled: uiDefinition?.properties?.pricingEnabled ? 'true' : 'false',
160
- PriceListId: uiDefinition?.properties?.priceList,
161
+ PricingEnabled: uiDefinitionProperties.pricingEnabled ? 'true' : 'false',
162
+ PriceListId: uiDefinitionProperties.priceList,
161
163
  },
162
164
  };
163
165
  }));
164
166
  }
165
- getUIDefinition(runtimeData) {
166
- const uiDefinitions = runtimeData.uiDefinitions
167
- .map(({ source }) => source)
168
- .filter((uiDefinition) => !isLegacyUIDefinition(uiDefinition));
169
- return uiDefinitions.find(uiDef => uiDef.primary) ?? uiDefinitions[0];
167
+ getUIDefinitionContainer(runtimeData) {
168
+ const containers = runtimeData.uiDefinitions.filter(container => !isLegacyUIDefinition(container.source));
169
+ return containers.find(container => container.source.primary) ?? containers[0];
170
170
  }
171
171
  }
172
172
  RuntimeContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeContextService, deps: [{ token: i1.ConfigurationApiService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -189,23 +189,18 @@ class ConfigurationRuntimeService {
189
189
  this.initializationProps = undefined;
190
190
  this.uiDefinitionProperties = {};
191
191
  }
192
- initTestMode(modelId, uiDefinition) {
193
- this.uiDefinitionProperties = uiDefinition.properties ?? {};
194
- const uiDefinitionExternals = uiDefinition.externals ?? {};
192
+ initTestMode(uiDefinitionContainer) {
193
+ this.uiDefinitionProperties = getUIDefinitionProperties(uiDefinitionContainer);
194
+ const uiDefinitionExternals = uiDefinitionContainer.source.externals ?? {};
195
195
  return combineLatest([
196
- this.apiService.getRuntimeDataByModelId(modelId),
196
+ this.apiService.getRuntimeDataByModelId(uiDefinitionContainer.modelId),
197
197
  this.contextService.create('TestId', ConfigurationContextMode.TEST),
198
- ]).pipe(first(), tap(([runtimeData, context]) => {
199
- this._runtimeContext = {
200
- modelId: modelId,
201
- runtimeModel: RuntimeModel.create(runtimeData.types, runtimeData.products),
202
- runtimeMode: RuntimeMode.TEST,
203
- };
198
+ ]).pipe(first(), map(([runtimeData, context]) => {
204
199
  this.contextService.update({
205
200
  properties: {
206
201
  ...this.runtimeContext?.properties,
207
202
  ...context.properties,
208
- ModelId: modelId,
203
+ ModelId: uiDefinitionContainer.modelId,
209
204
  RuntimeMode: ConfigurationContextMode.TEST,
210
205
  PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',
211
206
  StartDate: new Date().toISOString().substring(0, 10),
@@ -215,14 +210,20 @@ class ConfigurationRuntimeService {
215
210
  ...uiDefinitionExternals,
216
211
  },
217
212
  });
218
- this._isInitialized = true;
219
- }));
213
+ this._runtimeContext = {
214
+ modelId: uiDefinitionContainer.modelId,
215
+ runtimeModel: RuntimeModel.create(runtimeData.types, runtimeData.products),
216
+ runtimeMode: RuntimeMode.TEST,
217
+ uiDefinitionContainer,
218
+ };
219
+ return this._runtimeContext;
220
+ }), tap(() => (this._isInitialized = true)));
220
221
  }
221
222
  init(props) {
222
223
  this.initializationProps = props;
223
224
  const context = this.contextService.resolve();
224
225
  return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(tap(runtimeContext => {
225
- this.uiDefinitionProperties = runtimeContext.uiDefinition?.properties ?? {};
226
+ this.uiDefinitionProperties = getUIDefinitionProperties(runtimeContext.uiDefinitionContainer);
226
227
  const { PriceListId } = context.properties ?? {};
227
228
  const mergeContext = {
228
229
  ...runtimeContext,
@@ -242,8 +243,15 @@ class ConfigurationRuntimeService {
242
243
  },
243
244
  });
244
245
  }
245
- this._isInitialized = true;
246
- }));
246
+ return this._runtimeContext;
247
+ }), tap(() => (this._isInitialized = true)));
248
+ }
249
+ overrideUIDefinition(uiDefinitionContainer) {
250
+ if (!this._runtimeContext) {
251
+ return;
252
+ }
253
+ this._runtimeContext.uiDefinitionContainer = uiDefinitionContainer;
254
+ this.uiDefinitionProperties = getUIDefinitionProperties(uiDefinitionContainer);
247
255
  }
248
256
  id15to18(propertyName, source) {
249
257
  if (!source) {
@@ -773,10 +781,18 @@ class ConfigurationService {
773
781
  return this.lineItem.value ? { ...this.lineItem.value } : undefined;
774
782
  }
775
783
  getRuntimeModel() {
776
- return this.runtimeService.runtimeModel;
784
+ const runtimeModel = this.runtimeService.runtimeModel;
785
+ if (!runtimeModel) {
786
+ throw new Error('Runtime model not initialized');
787
+ }
788
+ return runtimeModel;
777
789
  }
778
790
  getRuntimeContext() {
779
- return this.runtimeService.runtimeContext;
791
+ const runtimeContext = this.runtimeService.runtimeContext;
792
+ if (!runtimeContext) {
793
+ throw new Error('Runtime context not initialized');
794
+ }
795
+ return runtimeContext;
780
796
  }
781
797
  get contextSnapshot() {
782
798
  return this.contextService.resolve();
@@ -797,40 +813,26 @@ class ConfigurationService {
797
813
  return this.pricePlans.value;
798
814
  }
799
815
  configure() {
816
+ return this.configureRequest$(this.generateRequest());
817
+ }
818
+ configureRequest$(configurationRequest) {
800
819
  const runtimeContext = this.getRuntimeContext();
801
820
  const runtimeModel = this.getRuntimeModel();
802
- if (!runtimeContext || !runtimeModel) {
803
- return throwError(() => new Error('Runtime context/model not initialized'));
804
- }
805
- const uiDefinitionProperties = {
806
- ...(runtimeContext.uiDefinition?.properties ?? {}),
807
- ...(this.runtimeService.uiDefinitionProperties ?? {}),
808
- };
809
- let lineItem = this.configurableRamp;
810
- if (!lineItem) {
811
- const { initializationProps } = this.runtimeService ?? {};
812
- lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);
813
- // Set default attributes
814
- if (initializationProps?.attributesMap) {
815
- const attributes = transform(initializationProps?.attributesMap, (acc, value, name) => acc.push({ name, value }), []);
816
- lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;
817
- }
818
- }
819
- const configurationRequest = this.createRequest(lineItem);
821
+ const uiDefinitionProperties = this.getUIDefinitionProperties();
820
822
  const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;
821
823
  const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;
822
- return this.configurationApiService
823
- .configureLineItem({ configurationRequest, runtimeModel, pricingEnabled })
824
- .pipe(map(({ lineItem, context, charges, pricePlans, deletedLineItems }) => {
824
+ return this.configurationApiService.configureLineItem({ configurationRequest, runtimeModel, pricingEnabled }).pipe(tap(({ lineItem, context, charges, pricePlans, deletedLineItems }) => {
825
825
  this.contextService.update(context ?? {});
826
826
  this.charges.next(charges ?? {});
827
827
  this.pricePlans.next(pricePlans ?? {});
828
+ if (lineItem) {
829
+ this.lineItem.next(lineItem);
830
+ }
828
831
  if (deletedLineItems?.length) {
829
832
  this.showInactiveProductsConfirmation();
830
833
  }
831
- return lineItem;
832
- }))
833
- .pipe(tap(lineItem => lineItem && this.lineItem.next(lineItem)), catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))));
834
+ this.configurableRamp = lineItem;
835
+ }), map(({ lineItem }) => lineItem), catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))));
834
836
  }
835
837
  configureExternal$(props) {
836
838
  return this.runtimeService
@@ -852,7 +854,19 @@ class ConfigurationService {
852
854
  throw error;
853
855
  }));
854
856
  }
855
- createRequest(lineItem) {
857
+ generateRequest() {
858
+ const runtimeContext = this.getRuntimeContext();
859
+ const uiDefinitionProperties = this.getUIDefinitionProperties();
860
+ let lineItem = this.configurableRamp;
861
+ if (!lineItem) {
862
+ const { initializationProps } = this.runtimeService ?? {};
863
+ lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);
864
+ // Set default attributes
865
+ if (initializationProps?.attributesMap) {
866
+ const attributes = transform(initializationProps?.attributesMap, (acc, value, name) => acc.push({ name, value }), []);
867
+ lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;
868
+ }
869
+ }
856
870
  let request = {
857
871
  lineItem,
858
872
  mode: this.mode,
@@ -865,6 +879,12 @@ class ConfigurationService {
865
879
  request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);
866
880
  return request;
867
881
  }
882
+ getUIDefinitionProperties() {
883
+ return {
884
+ ...getUIDefinitionProperties(this.getRuntimeContext().uiDefinitionContainer),
885
+ ...(this.runtimeService.uiDefinitionProperties ?? {}),
886
+ };
887
+ }
868
888
  showInactiveProductsConfirmation() {
869
889
  const confirmationConfig = {
870
890
  title: ' ',
@@ -903,6 +923,135 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
903
923
  type: Injectable
904
924
  }], ctorParameters: function () { return [{ type: QuoteDraftService }, { type: ConfigurationRuntimeService }, { type: ContextService }, { type: i1.ConfigurationApiService }, { type: i5.MessageService }, { type: i6.DialogService }]; } });
905
925
 
926
+ class ConfigurationState {
927
+ constructor(statefulConfigurationApiService, runtimeService, configurationService, toastService) {
928
+ this.statefulConfigurationApiService = statefulConfigurationApiService;
929
+ this.runtimeService = runtimeService;
930
+ this.configurationService = configurationService;
931
+ this.toastService = toastService;
932
+ this.stateSubj$ = new BehaviorSubject({});
933
+ this.state$ = this.stateSubj$.asObservable();
934
+ this.stateId = null;
935
+ }
936
+ init$() {
937
+ return this.configurationService.configure().pipe(switchMap$1(() => {
938
+ if (!this.isStatefulConfiguration) {
939
+ return of(undefined);
940
+ }
941
+ const { actions, selectors } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};
942
+ return this.statefulConfigurationApiService.init({
943
+ request: this.configurationService.generateRequest(),
944
+ actions: actions?.map(action => ({ name: action.apiName, script: action.script })),
945
+ selectors: selectors?.map(selector => ({ name: selector.apiName, script: selector.script })),
946
+ });
947
+ }), tap$1(stateId => (this.stateId = stateId || null)), map$2(() => undefined));
948
+ }
949
+ cleanup() {
950
+ this.stateId = null;
951
+ this.configurationService.reset();
952
+ this.stateSubj$.next({});
953
+ }
954
+ execute$(req) {
955
+ if (this.isStatefulConfiguration) {
956
+ return this.executeStateful$(req);
957
+ }
958
+ else {
959
+ return this.executeStateless$(req);
960
+ }
961
+ }
962
+ dispatch$(actionName, inputData) {
963
+ return this.execute$({ actions: [{ name: actionName, inputData }] });
964
+ }
965
+ select$(selectorName, inputData) {
966
+ const requestId = UUID.UUID();
967
+ return this.execute$({
968
+ selectors: {
969
+ [requestId]: {
970
+ name: selectorName,
971
+ inputData,
972
+ },
973
+ },
974
+ }).pipe(map$2(() => this.stateSubj$.value[requestId]), tap$1(() => this.stateSubj$.next(omit(this.stateSubj$.value, requestId))));
975
+ }
976
+ get isStatefulConfiguration() {
977
+ return this.runtimeService.uiDefinitionProperties.statefulConfigurationEnabled ?? false;
978
+ }
979
+ executeStateless$(request) {
980
+ return of(undefined).pipe(switchMap$1(() => {
981
+ // Apply actions and execute configuration/price call
982
+ // No need to run configuration if no actions in the request
983
+ if (!request.actions?.length) {
984
+ return of(undefined);
985
+ }
986
+ let configurationRequest = this.configurationService.generateRequest();
987
+ request.actions.forEach(action => {
988
+ configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;
989
+ });
990
+ return this.configurationService.configureRequest$(configurationRequest);
991
+ }), tap$1(() => {
992
+ if (!request.selectors) {
993
+ return;
994
+ }
995
+ // Run selectors and apply them to the state
996
+ const finalConfigurationRequest = this.configurationService.generateRequest();
997
+ const selectorsResult = EntityUtil.entries(request.selectors).reduce((trunk, [key, selector]) => {
998
+ trunk[key] = this.executeSelectorScript(finalConfigurationRequest, selector);
999
+ return trunk;
1000
+ }, {});
1001
+ this.stateSubj$.next({
1002
+ ...this.stateSubj$.value,
1003
+ ...selectorsResult,
1004
+ });
1005
+ }), map$2(() => undefined));
1006
+ }
1007
+ executeStateful$(request) {
1008
+ if (!this.stateId) {
1009
+ return of(undefined);
1010
+ }
1011
+ return this.statefulConfigurationApiService.execute(this.stateId, request).pipe(tap$1(response => {
1012
+ this.stateId = response.stateId;
1013
+ const updatedState = this.stateSubj$.value;
1014
+ EntityUtil.entries(response.selectors).forEach(([key, value]) => {
1015
+ if (!value.success) {
1016
+ if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {
1017
+ this.toastService.add({ summary: value.errorMessage, severity: ToastType.error });
1018
+ }
1019
+ return;
1020
+ }
1021
+ updatedState[key] = value.result;
1022
+ });
1023
+ this.stateSubj$.next(updatedState);
1024
+ }), map$2(() => undefined));
1025
+ }
1026
+ executeActionScript(request, processor) {
1027
+ const { actions } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};
1028
+ const script = actions?.find(action => action.apiName === processor.name)?.script;
1029
+ if (!script) {
1030
+ return null;
1031
+ }
1032
+ return this.executeProcessorScript(request, script, processor.inputData);
1033
+ }
1034
+ executeSelectorScript(request, processor) {
1035
+ const { selectors } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};
1036
+ const script = selectors?.find(selector => selector.apiName === processor.name)?.script;
1037
+ if (!script) {
1038
+ return null;
1039
+ }
1040
+ return this.executeProcessorScript(request, script, processor.inputData);
1041
+ }
1042
+ executeProcessorScript(request, script, inputData) {
1043
+ return new Function(`${script}\nreturn transform;`)()({
1044
+ request,
1045
+ inputData: inputData,
1046
+ });
1047
+ }
1048
+ }
1049
+ ConfigurationState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationState, deps: [{ token: i1.StatefulConfigurationApiService }, { token: ConfigurationRuntimeService }, { token: ConfigurationService }, { token: i4.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
1050
+ ConfigurationState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationState });
1051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationState, decorators: [{
1052
+ type: Injectable
1053
+ }], ctorParameters: function () { return [{ type: i1.StatefulConfigurationApiService }, { type: ConfigurationRuntimeService }, { type: ConfigurationService }, { type: i4.ToastService }]; } });
1054
+
906
1055
  function extractMetadata(uiDefinition) {
907
1056
  return omit(uiDefinition, [
908
1057
  'children',
@@ -1193,6 +1342,7 @@ ConfigurationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
1193
1342
  ConfigurationRuntimeService,
1194
1343
  RuntimeContextService,
1195
1344
  ConfigurationService,
1345
+ ConfigurationState,
1196
1346
  ], imports: [ConfirmationDialogModule] });
1197
1347
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ConfigurationModule, decorators: [{
1198
1348
  type: NgModule,
@@ -1205,6 +1355,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
1205
1355
  ConfigurationRuntimeService,
1206
1356
  RuntimeContextService,
1207
1357
  ConfigurationService,
1358
+ ConfigurationState,
1208
1359
  ],
1209
1360
  }]
1210
1361
  }] });
@@ -1616,5 +1767,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
1616
1767
  * Generated bundle index. Do not edit.
1617
1768
  */
1618
1769
 
1619
- export { CalendarDirective, ConfigurationRuntimeService, ConfigurationService, ContextService, DEFAULT_FORMATTING_SETTINGS, DatePipe, FORMATTING_SETTINGS_TOKEN, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, NumberPipe, PricePipe, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, SdkDirectivesModule, SdkPipesModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, filterOutTechnicalAttributes, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getGuidedSellingConfigurationRequest, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, isTechnicalAttribute, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
1770
+ export { CalendarDirective, ConfigurationRuntimeService, ConfigurationService, ConfigurationState, ContextService, DEFAULT_FORMATTING_SETTINGS, DatePipe, FORMATTING_SETTINGS_TOKEN, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, NumberPipe, PricePipe, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, SdkDirectivesModule, SdkPipesModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, filterOutTechnicalAttributes, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getGuidedSellingConfigurationRequest, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, isTechnicalAttribute, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
1620
1771
  //# sourceMappingURL=veloceapps-sdk-core.mjs.map