@veloceapps/sdk 7.0.2-7 → 7.0.2-71

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 (192) hide show
  1. package/cms/cms.actions.d.ts +102 -11
  2. package/cms/cms.default.d.ts +2 -2
  3. package/cms/components/element-children/element-children.component.d.ts +3 -1
  4. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +14 -0
  5. package/cms/components/preview/preview.component.d.ts +6 -5
  6. package/cms/components/preview/preview.module.d.ts +2 -1
  7. package/cms/components/preview/preview.types.d.ts +4 -0
  8. package/cms/definitions/index.d.ts +1 -0
  9. package/cms/definitions/ui-builder.definitions.d.ts +6 -0
  10. package/cms/index.d.ts +2 -0
  11. package/cms/injection-tokens.d.ts +2 -4
  12. package/cms/modules/migrations/services/migrations.service.d.ts +1 -1
  13. package/cms/modules/migrations/types/migrations.types.d.ts +1 -1
  14. package/cms/modules/runtime/index.d.ts +1 -0
  15. package/cms/modules/runtime/services/compilation.service.d.ts +3 -2
  16. package/cms/modules/runtime/services/runtime-editor.service.d.ts +6 -4
  17. package/cms/modules/runtime/services/runtime.service.d.ts +6 -2
  18. package/cms/modules/runtime/types/runtime.actions.d.ts +5 -2
  19. package/cms/plugins/element-hover.plugin.d.ts +33 -0
  20. package/cms/plugins/page.plugin.d.ts +15 -0
  21. package/cms/plugins/script.plugin.d.ts +0 -3
  22. package/cms/types/common.types.d.ts +11 -1
  23. package/cms/types/index.d.ts +2 -0
  24. package/cms/types/integration.types.d.ts +1 -0
  25. package/cms/types/layouts.types.d.ts +30 -2
  26. package/cms/types/pages.types.d.ts +1 -0
  27. package/cms/utils/element.utils.d.ts +1 -1
  28. package/cms/utils/elements-resolver.d.ts +6 -2
  29. package/cms/utils/index.d.ts +1 -0
  30. package/cms/utils/script.utils.d.ts +2 -0
  31. package/cms/utils/ui-builder-layout.utils.d.ts +4 -0
  32. package/cms/vendor-map.d.ts +15 -19
  33. package/core/core.module.d.ts +2 -0
  34. package/core/directives/directives.module.d.ts +7 -0
  35. package/core/directives/index.d.ts +2 -0
  36. package/core/directives/primeng-calendar.directive.d.ts +14 -0
  37. package/core/index.d.ts +2 -0
  38. package/core/modules/configuration/helpers.d.ts +4 -2
  39. package/core/modules/configuration/index.d.ts +1 -0
  40. package/core/modules/configuration/services/configuration-runtime.service.d.ts +2 -2
  41. package/core/modules/configuration/services/configuration.service.d.ts +6 -4
  42. package/core/modules/configuration/types/configuration-runtime.types.d.ts +1 -0
  43. package/core/modules/configuration/types/configuration.types.d.ts +10 -0
  44. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +2 -1
  45. package/core/pipes/date.pipe.d.ts +12 -0
  46. package/core/pipes/index.d.ts +4 -0
  47. package/core/pipes/number.pipe.d.ts +10 -0
  48. package/core/pipes/pipes.module.d.ts +9 -0
  49. package/core/pipes/price.pipe.d.ts +10 -0
  50. package/core/services/index.d.ts +1 -0
  51. package/core/services/runtime-settings.service.d.ts +21 -0
  52. package/core/types/formatting-settings.types.d.ts +11 -0
  53. package/core/types/index.d.ts +1 -0
  54. package/core/types/runtime.types.d.ts +1 -2
  55. package/core/types/ui-definition.types.d.ts +0 -40
  56. package/core/utils/line-item.utils.d.ts +10 -15
  57. package/core/utils/line-item.worker.d.ts +3 -6
  58. package/core/utils/ui-definition.utils.d.ts +1 -1
  59. package/esm2020/cms/cms.actions.mjs +140 -40
  60. package/esm2020/cms/cms.default.mjs +1 -1
  61. package/esm2020/cms/cms.elements.mjs +16 -4
  62. package/esm2020/cms/cms.layouts.mjs +73 -13
  63. package/esm2020/cms/components/element-children/element-children.component.mjs +11 -6
  64. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +2 -2
  65. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +35 -0
  66. package/esm2020/cms/components/preview/preview.component.mjs +18 -16
  67. package/esm2020/cms/components/preview/preview.module.mjs +22 -4
  68. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  69. package/esm2020/cms/definitions/index.mjs +2 -0
  70. package/esm2020/cms/definitions/ui-builder.definitions.mjs +18 -0
  71. package/esm2020/cms/index.mjs +3 -1
  72. package/esm2020/cms/injection-tokens.mjs +1 -2
  73. package/esm2020/cms/modules/migrations/migrations.mjs +10 -3
  74. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +1 -1
  75. package/esm2020/cms/modules/migrations/types/migrations.types.mjs +1 -1
  76. package/esm2020/cms/modules/runtime/index.mjs +2 -1
  77. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +5 -3
  78. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +5 -3
  79. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +41 -6
  80. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +1 -1
  81. package/esm2020/cms/plugins/element-hover.plugin.mjs +121 -0
  82. package/esm2020/cms/plugins/page.plugin.mjs +37 -0
  83. package/esm2020/cms/plugins/region.plugin.mjs +3 -2
  84. package/esm2020/cms/plugins/script.plugin.mjs +6 -40
  85. package/esm2020/cms/services/integration.state.mjs +3 -6
  86. package/esm2020/cms/services/io-provider.service.mjs +7 -5
  87. package/esm2020/cms/types/common.types.mjs +1 -1
  88. package/esm2020/cms/types/index.mjs +3 -1
  89. package/esm2020/cms/types/integration.types.mjs +1 -1
  90. package/esm2020/cms/types/layouts.types.mjs +70 -1
  91. package/esm2020/cms/types/pages.types.mjs +2 -0
  92. package/esm2020/cms/utils/element.utils.mjs +1 -1
  93. package/esm2020/cms/utils/elements-resolver.mjs +22 -8
  94. package/esm2020/cms/utils/index.mjs +2 -1
  95. package/esm2020/cms/utils/script.utils.mjs +42 -0
  96. package/esm2020/cms/utils/ui-builder-layout.utils.mjs +46 -0
  97. package/esm2020/cms/vendor-map.mjs +5 -3
  98. package/esm2020/core/core.module.mjs +33 -4
  99. package/esm2020/core/directives/directives.module.mjs +16 -0
  100. package/esm2020/core/directives/index.mjs +3 -0
  101. package/esm2020/core/directives/primeng-calendar.directive.mjs +41 -0
  102. package/esm2020/core/index.mjs +3 -1
  103. package/esm2020/core/modules/configuration/configuration.module.mjs +2 -2
  104. package/esm2020/core/modules/configuration/helpers.mjs +37 -7
  105. package/esm2020/core/modules/configuration/index.mjs +2 -1
  106. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +3 -2
  107. package/esm2020/core/modules/configuration/services/configuration.service.mjs +35 -10
  108. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +6 -12
  109. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +1 -1
  110. package/esm2020/core/modules/configuration/types/configuration.types.mjs +2 -0
  111. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +4 -4
  112. package/esm2020/core/pipes/date.pipe.mjs +38 -0
  113. package/esm2020/core/pipes/index.mjs +5 -0
  114. package/esm2020/core/pipes/number.pipe.mjs +27 -0
  115. package/esm2020/core/pipes/pipes.module.mjs +18 -0
  116. package/esm2020/core/pipes/price.pipe.mjs +30 -0
  117. package/esm2020/core/services/index.mjs +2 -1
  118. package/esm2020/core/services/runtime-settings.service.mjs +88 -0
  119. package/esm2020/core/types/formatting-settings.types.mjs +3 -0
  120. package/esm2020/core/types/index.mjs +2 -1
  121. package/esm2020/core/types/runtime.types.mjs +1 -1
  122. package/esm2020/core/types/ui-definition.types.mjs +1 -1
  123. package/esm2020/core/utils/line-item.utils.mjs +22 -9
  124. package/esm2020/core/utils/line-item.worker.mjs +5 -5
  125. package/esm2020/core/utils/ui-definition.utils.mjs +1 -1
  126. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +2 -2
  127. package/esm2020/runtime/services/runtime-context.service.mjs +8 -5
  128. package/esm2020/runtime/services/runtime.service.mjs +1 -1
  129. package/esm2020/runtime/types/runtime.types.mjs +1 -1
  130. package/esm2020/src/components/dialog/dialog.component.mjs +3 -3
  131. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +30 -7
  132. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +117 -0
  133. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +19 -0
  134. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +5 -6
  135. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +7 -4
  136. package/esm2020/src/components/header/header.component.mjs +59 -45
  137. package/esm2020/src/components/header/header.module.mjs +7 -3
  138. package/esm2020/src/components/header/metrics/metrics.component.mjs +35 -7
  139. package/esm2020/src/components/header/metrics/metrics.module.mjs +7 -3
  140. package/esm2020/src/flow-routing.module.mjs +1 -1
  141. package/esm2020/src/flow.component.mjs +4 -3
  142. package/esm2020/src/flow.module.mjs +11 -6
  143. package/esm2020/src/guards/context.guard.mjs +11 -8
  144. package/esm2020/src/pages/assets/assets.component.mjs +2 -2
  145. package/esm2020/src/pages/catalog/catalog.component.mjs +3 -3
  146. package/esm2020/src/pages/product/product.component.mjs +16 -9
  147. package/esm2020/src/pages/remote/remote.component.mjs +1 -1
  148. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +3 -3
  149. package/esm2020/src/services/flow-dialog.service.mjs +15 -15
  150. package/esm2020/src/services/flow-router.service.mjs +10 -5
  151. package/esm2020/src/services/flow.service.mjs +2 -2
  152. package/esm2020/src/services/guided-selling.service.mjs +33 -0
  153. package/esm2020/src/types/flow-customization.types.mjs +1 -1
  154. package/fesm2015/veloceapps-sdk-cms.mjs +872 -394
  155. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  156. package/fesm2015/veloceapps-sdk-core.mjs +371 -47
  157. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  158. package/fesm2015/veloceapps-sdk-runtime.mjs +7 -4
  159. package/fesm2015/veloceapps-sdk-runtime.mjs.map +1 -1
  160. package/fesm2015/veloceapps-sdk.mjs +374 -135
  161. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  162. package/fesm2020/veloceapps-sdk-cms.mjs +955 -396
  163. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  164. package/fesm2020/veloceapps-sdk-core.mjs +361 -44
  165. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  166. package/fesm2020/veloceapps-sdk-runtime.mjs +7 -4
  167. package/fesm2020/veloceapps-sdk-runtime.mjs.map +1 -1
  168. package/fesm2020/veloceapps-sdk.mjs +364 -133
  169. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  170. package/package.json +1 -1
  171. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +3 -3
  172. package/runtime/services/runtime.service.d.ts +2 -2
  173. package/runtime/types/runtime.types.d.ts +2 -2
  174. package/src/components/doc-gen/doc-gen.component.d.ts +7 -3
  175. package/src/components/guided-selling/guided-selling.component.d.ts +29 -0
  176. package/src/components/guided-selling/guided-selling.module.d.ts +9 -0
  177. package/src/components/header/cart-overlay/cart-preview.component.d.ts +1 -1
  178. package/src/components/header/cart-overlay/cart-preview.module.d.ts +1 -1
  179. package/src/components/header/header.component.d.ts +3 -4
  180. package/src/components/header/header.module.d.ts +2 -1
  181. package/src/components/header/metrics/metrics.component.d.ts +10 -2
  182. package/src/components/header/metrics/metrics.module.d.ts +2 -1
  183. package/src/flow.module.d.ts +6 -5
  184. package/src/guards/context.guard.d.ts +3 -2
  185. package/src/pages/assets/assets.component.d.ts +2 -1
  186. package/src/pages/catalog/catalog.component.d.ts +2 -1
  187. package/src/pages/product/product.component.d.ts +6 -3
  188. package/src/pages/remote/remote.component.d.ts +2 -1
  189. package/src/pages/shopping-cart/shopping-cart.component.d.ts +2 -1
  190. package/src/services/flow-router.service.d.ts +3 -1
  191. package/src/services/guided-selling.service.d.ts +13 -0
  192. package/src/types/flow-customization.types.d.ts +2 -2
@@ -1,31 +1,65 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
3
- import { UUID, ConfigurationContext, RuntimeModel, ConfigurationContextMode, SalesforceIdUtils, ConfigurationMode, ConfigurationTranslatorUtils, ChargeGroupUtils } from '@veloceapps/core';
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';
4
4
  import * as i1 from '@veloceapps/api';
5
5
  import { PriceApiService, ContextApiService, ProductModelApiService, ConfigurationApiService } from '@veloceapps/api';
6
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';
7
7
  import { filter, tap, map, first, switchMap, skip, take, shareReplay, catchError, finalize } from 'rxjs/operators';
8
- import { merge, isEqual, flatten, sortBy, map as map$1, omit, cloneDeep, uniq } from 'lodash';
8
+ import { merge, isEqual, flatten, sortBy, map as map$1, transform, omit, cloneDeep, uniq } from 'lodash';
9
+ import { HttpErrorResponse } from '@angular/common/http';
9
10
  import { ToastType, ConfirmationComponent, ConfirmationDialogModule } from '@veloceapps/components';
10
11
  import * as i5 from 'primeng/api';
11
12
  import * as i6 from 'primeng/dynamicdialog';
12
13
  import moment from 'moment';
14
+ import { NgControl } from '@angular/forms';
15
+ import 'primeng/calendar';
16
+ import { DATE_PIPE_DEFAULT_OPTIONS, formatDate } from '@angular/common';
13
17
 
14
18
  const getDefaultLineItem = (context, uiDefinitionProperties, qty = 1) => {
15
19
  const id = UUID.UUID();
16
- const lineItem = {
20
+ const attributes = [];
21
+ const lineItems = [];
22
+ return {
17
23
  id,
18
24
  type: uiDefinitionProperties.rootType ?? '',
19
25
  cfgStatus: 'Default',
20
26
  actionCode: 'ADD',
21
27
  qty,
28
+ attributes,
29
+ lineItems,
22
30
  productName: context.properties?.['displayName'] || context.productName,
23
31
  productId: context.productId ?? '',
24
- ...(context.offeringId
25
- ? { offeringId: context.offeringId, offeringInstanceId: context.offeringInstanceId || id }
26
- : {}),
32
+ ...(uiDefinitionProperties.offeringId ? { offeringId: uiDefinitionProperties.offeringId } : {}),
33
+ };
34
+ };
35
+ const getGuidedSellingConfigurationRequest = (data) => {
36
+ return {
37
+ mode: 'SEARCH',
38
+ step: 'START',
39
+ attributeDomainMode: 'ALL',
40
+ context: {
41
+ headerId: 'TestId',
42
+ mode: ConfigurationContextMode.TEST,
43
+ properties: {
44
+ ModelId: data.modelId,
45
+ Name: 'Veloce Guided Selling',
46
+ PricingEnabled: 'false',
47
+ RuntimeMode: 'TEST',
48
+ },
49
+ },
50
+ lineItem: {
51
+ actionCode: 'ADD',
52
+ cfgStatus: 'Default',
53
+ id: UUID.UUID(),
54
+ qty: 1,
55
+ type: data.modelType,
56
+ attributes: Object.entries(data.attributesMap).map(([name, value]) => ({
57
+ name,
58
+ value,
59
+ cfgStatus: 'User',
60
+ })),
61
+ },
27
62
  };
28
- return lineItem;
29
63
  };
30
64
 
31
65
  class ContextService {
@@ -84,6 +118,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
84
118
  args: [{ providedIn: 'root' }]
85
119
  }], ctorParameters: function () { return [{ type: i1.ContextApiService }]; } });
86
120
 
121
+ const FORMATTING_SETTINGS_TOKEN = new InjectionToken('Summary of formatting settings for variant types of data, e.g. numbers, text, dates, etc');
122
+
87
123
  var RuntimeMode;
88
124
  (function (RuntimeMode) {
89
125
  RuntimeMode[RuntimeMode["TEST"] = 0] = "TEST";
@@ -127,16 +163,10 @@ class RuntimeContextService {
127
163
  }));
128
164
  }
129
165
  getUIDefinition(runtimeData) {
130
- let rawUiDefinitions;
131
- try {
132
- rawUiDefinitions = JSON.parse(runtimeData.uiDefinitionsSource);
133
- }
134
- catch (e) {
135
- return;
136
- }
137
- const uiDefinitions = rawUiDefinitions.filter(uiDef => uiDef.version);
138
- const uiDefinition = uiDefinitions.find(uiDef => uiDef.primary) ?? uiDefinitions[0];
139
- return uiDefinition;
166
+ const uiDefinitions = runtimeData.uiDefinitions
167
+ .map(({ source }) => source)
168
+ .filter((uiDefinition) => !isLegacyUIDefinition(uiDefinition));
169
+ return uiDefinitions.find(uiDef => uiDef.primary) ?? uiDefinitions[0];
140
170
  }
141
171
  }
142
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 });
@@ -180,6 +210,7 @@ class ConfigurationRuntimeService {
180
210
  PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',
181
211
  StartDate: new Date().toISOString().substring(0, 10),
182
212
  PriceListId: this.uiDefinitionProperties.priceList,
213
+ offeringId: this.uiDefinitionProperties.offeringId,
183
214
  standalone: 'true',
184
215
  ...uiDefinitionExternals,
185
216
  },
@@ -503,18 +534,25 @@ const removeLineItem = (lineItem, idToRemove) => {
503
534
  .filter(r => !!r),
504
535
  };
505
536
  };
506
- const replaceLineItem = (lineItem, replaceTo) => {
537
+ const replaceLineItem = (lineItem, replaceTo, skipCardinalityCalculation = false) => {
507
538
  if (lineItem.id === replaceTo.id) {
508
- return { ...recalculateCardinalityVariables(lineItem, replaceTo) };
539
+ if (!skipCardinalityCalculation) {
540
+ return { ...recalculateCardinalityVariables(lineItem, replaceTo) };
541
+ }
542
+ else {
543
+ return { ...replaceTo };
544
+ }
509
545
  }
510
546
  return {
511
547
  ...lineItem,
512
- lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo)),
548
+ lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),
513
549
  };
514
550
  };
515
551
  const calculateCardinalityVariables = (lineItems) => {
516
552
  const cardVars = new Map();
517
- lineItems.forEach(li => {
553
+ lineItems
554
+ .filter(({ port, type }) => !!port && !!type)
555
+ .forEach(li => {
518
556
  const cardinalityVariableName = `#CV-${li.type}@${li.port}`;
519
557
  cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);
520
558
  });
@@ -554,13 +592,13 @@ const upsertAttributes = (originalAttributes, attributesToUpsert) => {
554
592
  ];
555
593
  }, originalAttributes);
556
594
  };
557
- const patchAttributes = (rootLineItem, id, attrs) => {
595
+ const patchAttributes = (rootLineItem, id, attrs, skipCardinalityCalculation = false) => {
558
596
  const lineItem = findLineItem(id, [rootLineItem]);
559
597
  if (!lineItem) {
560
598
  return rootLineItem;
561
599
  }
562
600
  const attributes = upsertAttributes(lineItem.attributes, attrs);
563
- return replaceLineItem(rootLineItem, { ...lineItem, attributes });
601
+ return replaceLineItem(rootLineItem, { ...lineItem, attributes }, skipCardinalityCalculation);
564
602
  };
565
603
  const getAttributeValue = (attributes, name) => attributes.find(attr => attr.name === name)?.value;
566
604
  const generateLineItem = (port, type, parentId, attributes = [], lineItems = []) => {
@@ -608,10 +646,10 @@ const getOriginParent = (lineItems, currentLineItem) => {
608
646
  return target;
609
647
  };
610
648
  const isLineItemModified = (lineItem) => {
611
- if (lineItem.status === 'PENDING' && lineItem.actionCode === 'EXIST') {
649
+ if (lineItem.actionCode === 'EXIST' && lineItem.status === 'PENDING') {
612
650
  return false;
613
651
  }
614
- return lineItem.status !== 'EXIST';
652
+ return lineItem.actionCode !== 'EXIST';
615
653
  };
616
654
  const multiplyLineItems = (lineItem, qty, split) => {
617
655
  if (split) {
@@ -631,10 +669,17 @@ const multiplyLineItems = (lineItem, qty, split) => {
631
669
  ];
632
670
  }
633
671
  };
672
+ const isTechnicalAttribute = (name) => {
673
+ return name.startsWith('#') || name.startsWith('$');
674
+ };
675
+ const filterOutTechnicalAttributes = (attributes) => {
676
+ return attributes.filter(({ name }) => !isTechnicalAttribute(name));
677
+ };
634
678
 
635
679
  var lineItem_utils = /*#__PURE__*/Object.freeze({
636
680
  __proto__: null,
637
681
  calculateCardinalityVariables: calculateCardinalityVariables,
682
+ filterOutTechnicalAttributes: filterOutTechnicalAttributes,
638
683
  findLineItem: findLineItem,
639
684
  findLineItemWithComparator: findLineItemWithComparator,
640
685
  generateLineItem: generateLineItem,
@@ -645,6 +690,7 @@ var lineItem_utils = /*#__PURE__*/Object.freeze({
645
690
  getRecommendedPrices: getRecommendedPrices,
646
691
  insertLineItem: insertLineItem,
647
692
  isLineItemModified: isLineItemModified,
693
+ isTechnicalAttribute: isTechnicalAttribute,
648
694
  mapAttributes: mapAttributes,
649
695
  multiplyLineItems: multiplyLineItems,
650
696
  patchAttributes: patchAttributes,
@@ -664,11 +710,11 @@ class LineItemWorker {
664
710
  remove(id) {
665
711
  return new LineItemWorker(removeLineItem(this.li, id));
666
712
  }
667
- replace(toReplace) {
668
- return new LineItemWorker(replaceLineItem(this.li, toReplace));
713
+ replace(toReplace, skipCardinalityCalculation = false) {
714
+ return new LineItemWorker(replaceLineItem(this.li, toReplace, skipCardinalityCalculation));
669
715
  }
670
- patchAttribute(attrs, id) {
671
- return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs));
716
+ patchAttribute(attrs, id, skipCardinalityCalculation = false) {
717
+ return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs, skipCardinalityCalculation));
672
718
  }
673
719
  }
674
720
 
@@ -694,11 +740,12 @@ class ConfigurationService {
694
740
  this.charges.next({});
695
741
  this.pricePlans.next({});
696
742
  }
697
- patch$(lineItem) {
743
+ patch$(lineItem, options) {
698
744
  if (!this.lineItem.value) {
699
745
  return throwError(() => new Error(`Source LineItem not found`));
700
746
  }
701
- this.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem).li;
747
+ const skipCardinalityCalculation = options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';
748
+ this.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem, skipCardinalityCalculation).li;
702
749
  return this.configure().pipe(catchError(error => {
703
750
  console.error(error);
704
751
  if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {
@@ -713,8 +760,8 @@ class ConfigurationService {
713
760
  }
714
761
  }));
715
762
  }
716
- patch(lineItem) {
717
- this.patch$(lineItem).subscribe();
763
+ patch(lineItem, options) {
764
+ this.patch$(lineItem, options).subscribe();
718
765
  }
719
766
  setConfigurableRamp(lineItem) {
720
767
  this.configurableRamp = lineItem;
@@ -759,8 +806,16 @@ class ConfigurationService {
759
806
  ...(runtimeContext.uiDefinition?.properties ?? {}),
760
807
  ...(this.runtimeService.uiDefinitionProperties ?? {}),
761
808
  };
762
- const qty = this.runtimeService.initializationProps?.defaultQty;
763
- const lineItem = this.configurableRamp ?? getDefaultLineItem(runtimeContext, uiDefinitionProperties, qty);
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
+ }
764
819
  const configurationRequest = this.createRequest(lineItem);
765
820
  const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;
766
821
  const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;
@@ -777,12 +832,26 @@ class ConfigurationService {
777
832
  }))
778
833
  .pipe(tap(lineItem => lineItem && this.lineItem.next(lineItem)), catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))));
779
834
  }
780
- configureExternal$(productId, qty) {
781
- return this.runtimeService.init({ productId, defaultQty: qty }).pipe(switchMap(() => this.configure()), first(), catchError(error => {
835
+ configureExternal$(props) {
836
+ return this.runtimeService
837
+ .init({ productId: props.productId, defaultQty: props.qty, attributesMap: props.attributesMap })
838
+ .pipe(switchMap(() => this.configure()), first(), catchError(error => {
782
839
  this.messageService.add({ severity: ToastType.error, summary: error });
783
840
  throw error;
784
841
  }), finalize(() => this.reset()));
785
842
  }
843
+ configureGuidedSelling$(data) {
844
+ return this.configurationApiService
845
+ .configureLineItem({
846
+ configurationRequest: getGuidedSellingConfigurationRequest(data),
847
+ })
848
+ .pipe(catchError(error => {
849
+ if (error instanceof HttpErrorResponse) {
850
+ this.messageService.add({ severity: ToastType.error, summary: error.error.message || error.error });
851
+ }
852
+ throw error;
853
+ }));
854
+ }
786
855
  createRequest(lineItem) {
787
856
  let request = {
788
857
  lineItem,
@@ -1038,15 +1107,15 @@ class FlowConfigurationService {
1038
1107
  const updatedState = [...quoteDraft.currentState, term];
1039
1108
  return of([]).pipe(switchMap$1(() => this.calculate$({ ...quoteDraft, currentState: updatedState })), map$2(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack());
1040
1109
  }
1041
- addToCart$(productId, qty) {
1110
+ addToCart$(props) {
1042
1111
  const quoteDraft = this.quoteDraftService.quoteDraft;
1043
1112
  if (!quoteDraft) {
1044
1113
  return of(null);
1045
1114
  }
1046
- return this.configurationService.configureExternal$(productId, qty).pipe(map$2(lineItem => {
1115
+ return this.configurationService.configureExternal$(props).pipe(map$2(lineItem => {
1047
1116
  const model = this.configurationService.getRuntimeModel();
1048
1117
  const split = model?.types.find(type => type.name === lineItem.type)?.split ?? false;
1049
- const lineItems = multiplyLineItems(lineItem, qty ?? 1, split);
1118
+ const lineItems = multiplyLineItems(lineItem, props.qty ?? 1, split);
1050
1119
  return [...quoteDraft.currentState, ...lineItems];
1051
1120
  }), switchMap$1(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })), map$2(() => this.quoteDraftService.quoteDraft), this.handleErrorAndBounceBack());
1052
1121
  }
@@ -1282,16 +1351,264 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
1282
1351
  args: [{ providedIn: 'root' }]
1283
1352
  }], ctorParameters: function () { return [{ type: i1.ProductApiService }]; } });
1284
1353
 
1354
+ class RuntimeSettingsService {
1355
+ constructor(configurationSettingsApiService) {
1356
+ this.configurationSettingsApiService = configurationSettingsApiService;
1357
+ this.configurationSettings$ = new BehaviorSubject({});
1358
+ this.currencySettings$ = new BehaviorSubject({
1359
+ iso: DEFAULT_CURRENCY_ISO_CODE,
1360
+ symbol: DEFAULT_CURRENCY_SYMBOL,
1361
+ });
1362
+ this.getCurrencySymbol = (locale, currency) => {
1363
+ return (0)
1364
+ .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })
1365
+ .replace(/\d/g, '')
1366
+ .trim();
1367
+ };
1368
+ }
1369
+ create() {
1370
+ return this.configurationSettingsApiService.fetchSettings().pipe(map$2(settings => this.parseConfigurationSettings(settings)), tap$1(configurationSettings => {
1371
+ this.configurationSettings$.next(configurationSettings);
1372
+ this.formattingSettings = this.getFormattingSettings();
1373
+ }), map$2(() => undefined));
1374
+ }
1375
+ initCurrency(iso) {
1376
+ if (iso) {
1377
+ const symbol = this.getCurrencySymbol('en-US', iso);
1378
+ this.currencySettings$.next({ iso, symbol });
1379
+ }
1380
+ }
1381
+ getFormattingSettings() {
1382
+ if (this.formattingSettings) {
1383
+ return this.formattingSettings;
1384
+ }
1385
+ const shoppingCartSettings = this.getConfigurationSettings()['shopping-cart']?.reduce((acc, setting) => {
1386
+ return { ...acc, [setting.id]: setting.properties };
1387
+ }, {});
1388
+ const currencySettings = this.getCurrencySettings();
1389
+ const dateFormat = (validateDateFormat(shoppingCartSettings?.DATE_FORMAT ?? '') && shoppingCartSettings?.DATE_FORMAT) ||
1390
+ DEFAULT_DATE_FORMAT;
1391
+ const decimalSeparator = shoppingCartSettings?.DECIMAL_SEPARATOR ?? DEFAULT_DECIMAL_SEPARATOR;
1392
+ const thousandsSeparator = shoppingCartSettings?.THOUSANDS_SEPARATOR ?? DEFAULT_THOUSANDS_SEPARATOR;
1393
+ return {
1394
+ currencySymbol: currencySettings.symbol,
1395
+ dateFormats: getSupportedDateFormats(dateFormat),
1396
+ decimalSeparator: (['.', ','].includes(decimalSeparator) && decimalSeparator) || DEFAULT_DECIMAL_SEPARATOR,
1397
+ decimalsCount: (!isNaN(Number(shoppingCartSettings?.PRICE_SCALE)) && Number(shoppingCartSettings?.PRICE_SCALE)) ||
1398
+ DEFAULT_DECIMALS_COUNT,
1399
+ thousandsSeparator: ['.', ',', ''].includes(thousandsSeparator)
1400
+ ? thousandsSeparator
1401
+ : DEFAULT_THOUSANDS_SEPARATOR,
1402
+ };
1403
+ }
1404
+ getConfigurationSettings() {
1405
+ return this.configurationSettings$.value;
1406
+ }
1407
+ getCurrencySettings() {
1408
+ return this.currencySettings$.value;
1409
+ }
1410
+ parseConfigurationSettings(settings) {
1411
+ return settings.reduce((acc, setting) => {
1412
+ switch (setting.key) {
1413
+ case 'shopping-cart':
1414
+ acc['shopping-cart'] = parseJsonSafely(setting.value, []);
1415
+ break;
1416
+ case 'navigation':
1417
+ acc.navigation = parseJsonSafely(setting.value, {});
1418
+ break;
1419
+ case 'flows':
1420
+ acc.flows = parseJsonSafely(setting.value, []);
1421
+ break;
1422
+ default:
1423
+ acc[setting.key] = setting.value;
1424
+ }
1425
+ return acc;
1426
+ }, {});
1427
+ }
1428
+ }
1429
+ RuntimeSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeSettingsService, deps: [{ token: i1.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
1430
+ RuntimeSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeSettingsService, providedIn: 'root' });
1431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeSettingsService, decorators: [{
1432
+ type: Injectable,
1433
+ args: [{ providedIn: 'root' }]
1434
+ }], ctorParameters: function () { return [{ type: i1.ConfigurationSettingsApiService }]; } });
1435
+
1436
+ const DEFAULT_FORMATTING_SETTINGS = {
1437
+ currencySymbol: DEFAULT_CURRENCY_SYMBOL,
1438
+ decimalsCount: DEFAULT_DECIMALS_COUNT,
1439
+ dateFormats: getSupportedDateFormats(DEFAULT_DATE_FORMAT),
1440
+ decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,
1441
+ thousandsSeparator: DEFAULT_THOUSANDS_SEPARATOR,
1442
+ };
1285
1443
  class SdkCoreModule {
1286
1444
  }
1287
1445
  SdkCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1288
1446
  SdkCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] });
1289
- SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService], imports: [ConfigurationModule, FlowConfigurationModule] });
1447
+ SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, providers: [
1448
+ ContextService,
1449
+ QuoteDraftService,
1450
+ ProductImagesService,
1451
+ MetricsCalculationService,
1452
+ RuntimeSettingsService,
1453
+ {
1454
+ provide: FORMATTING_SETTINGS_TOKEN,
1455
+ useExisting: RuntimeSettingsService,
1456
+ },
1457
+ ], imports: [ConfigurationModule, FlowConfigurationModule] });
1290
1458
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, decorators: [{
1291
1459
  type: NgModule,
1292
1460
  args: [{
1293
1461
  imports: [ConfigurationModule, FlowConfigurationModule],
1294
- providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService],
1462
+ providers: [
1463
+ ContextService,
1464
+ QuoteDraftService,
1465
+ ProductImagesService,
1466
+ MetricsCalculationService,
1467
+ RuntimeSettingsService,
1468
+ {
1469
+ provide: FORMATTING_SETTINGS_TOKEN,
1470
+ useExisting: RuntimeSettingsService,
1471
+ },
1472
+ ],
1473
+ }]
1474
+ }] });
1475
+
1476
+ class CalendarDirective {
1477
+ constructor() {
1478
+ this.ngControl = inject(NgControl, { host: true, optional: true });
1479
+ this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();
1480
+ this.destroy$ = new Subject();
1481
+ }
1482
+ set vlCalendar(calendar) {
1483
+ this.calendar = calendar;
1484
+ }
1485
+ ngOnDestroy() {
1486
+ this.destroy$.next();
1487
+ this.destroy$.complete();
1488
+ }
1489
+ ngOnInit() {
1490
+ if (this.calendar) {
1491
+ this.calendar.dateFormat = this.formattingSettings?.dateFormats.primengFormat ?? DEFAULT_DATE_FORMAT;
1492
+ if (this.ngControl && this.ngControl.control) {
1493
+ const control = this.ngControl.control;
1494
+ control.setValue(control.value, { emitEvent: false });
1495
+ }
1496
+ }
1497
+ }
1498
+ }
1499
+ CalendarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: CalendarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1500
+ CalendarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: CalendarDirective, selector: "[vlCalendar]", inputs: { vlCalendar: "vlCalendar" }, ngImport: i0 });
1501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: CalendarDirective, decorators: [{
1502
+ type: Directive,
1503
+ args: [{
1504
+ selector: '[vlCalendar]',
1505
+ }]
1506
+ }], propDecorators: { vlCalendar: [{
1507
+ type: Input
1508
+ }] } });
1509
+
1510
+ class SdkDirectivesModule {
1511
+ }
1512
+ SdkDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1513
+ SdkDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SdkDirectivesModule, declarations: [CalendarDirective], exports: [CalendarDirective] });
1514
+ SdkDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkDirectivesModule });
1515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkDirectivesModule, decorators: [{
1516
+ type: NgModule,
1517
+ args: [{
1518
+ declarations: [CalendarDirective],
1519
+ exports: [CalendarDirective],
1520
+ }]
1521
+ }] });
1522
+
1523
+ class DatePipe {
1524
+ constructor() {
1525
+ this.locale = inject(LOCALE_ID);
1526
+ this.defaultOptions = inject(DATE_PIPE_DEFAULT_OPTIONS, { optional: true });
1527
+ this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();
1528
+ this.destroy$ = new Subject();
1529
+ }
1530
+ ngOnDestroy() {
1531
+ this.destroy$.next();
1532
+ this.destroy$.complete();
1533
+ }
1534
+ transform(date) {
1535
+ if (!date) {
1536
+ return '';
1537
+ }
1538
+ try {
1539
+ return formatDate(date, this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT, this.locale, this.defaultOptions?.timezone);
1540
+ }
1541
+ catch (error) {
1542
+ return new Date(date).toString();
1543
+ }
1544
+ }
1545
+ }
1546
+ DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1547
+ DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: DatePipe, name: "vlDate" });
1548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: DatePipe, decorators: [{
1549
+ type: Pipe,
1550
+ args: [{
1551
+ name: 'vlDate',
1552
+ }]
1553
+ }] });
1554
+
1555
+ class NumberPipe {
1556
+ constructor() {
1557
+ this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();
1558
+ this.destroy$ = new Subject();
1559
+ }
1560
+ ngOnDestroy() {
1561
+ this.destroy$.next();
1562
+ this.destroy$.complete();
1563
+ }
1564
+ transform(price) {
1565
+ return formatNumber(price, this.formattingSettings?.thousandsSeparator, this.formattingSettings?.decimalSeparator, this.formattingSettings?.decimalsCount);
1566
+ }
1567
+ }
1568
+ NumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1569
+ NumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NumberPipe, name: "vlNumber" });
1570
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NumberPipe, decorators: [{
1571
+ type: Pipe,
1572
+ args: [{
1573
+ name: 'vlNumber',
1574
+ }]
1575
+ }] });
1576
+
1577
+ class PricePipe {
1578
+ constructor() {
1579
+ this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();
1580
+ this.destroy$ = new Subject();
1581
+ }
1582
+ ngOnDestroy() {
1583
+ this.destroy$.next();
1584
+ this.destroy$.complete();
1585
+ }
1586
+ transform(price) {
1587
+ if (price == null || price === '') {
1588
+ return '';
1589
+ }
1590
+ return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(price, this.formattingSettings?.thousandsSeparator, this.formattingSettings?.decimalSeparator, this.formattingSettings?.decimalsCount)}`;
1591
+ }
1592
+ }
1593
+ PricePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PricePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1594
+ PricePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: PricePipe, name: "vlPrice" });
1595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PricePipe, decorators: [{
1596
+ type: Pipe,
1597
+ args: [{
1598
+ name: 'vlPrice',
1599
+ }]
1600
+ }] });
1601
+
1602
+ class SdkPipesModule {
1603
+ }
1604
+ SdkPipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1605
+ SdkPipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SdkPipesModule, declarations: [NumberPipe, PricePipe, DatePipe], exports: [NumberPipe, PricePipe, DatePipe] });
1606
+ SdkPipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkPipesModule });
1607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkPipesModule, decorators: [{
1608
+ type: NgModule,
1609
+ args: [{
1610
+ declarations: [NumberPipe, PricePipe, DatePipe],
1611
+ exports: [NumberPipe, PricePipe, DatePipe],
1295
1612
  }]
1296
1613
  }] });
1297
1614
 
@@ -1299,5 +1616,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
1299
1616
  * Generated bundle index. Do not edit.
1300
1617
  */
1301
1618
 
1302
- export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeStep, SdkCoreModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
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 };
1303
1620
  //# sourceMappingURL=veloceapps-sdk-core.mjs.map