@veloceapps/sdk 6.0.0-1 → 6.0.0-100

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 (241) hide show
  1. package/README.md +10 -2
  2. package/bundles/veloceapps-sdk-cms.umd.js +1270 -798
  3. package/bundles/veloceapps-sdk-cms.umd.js.map +1 -1
  4. package/bundles/veloceapps-sdk-core.umd.js +783 -650
  5. package/bundles/veloceapps-sdk-core.umd.js.map +1 -1
  6. package/bundles/veloceapps-sdk-runtime.umd.js +216 -150
  7. package/bundles/veloceapps-sdk-runtime.umd.js.map +1 -1
  8. package/bundles/veloceapps-sdk.umd.js +574 -309
  9. package/bundles/veloceapps-sdk.umd.js.map +1 -1
  10. package/cms/cms.actions.d.ts +2 -4
  11. package/cms/components/element-children/element-children.component.d.ts +13 -3
  12. package/cms/components/element-children/element-children.module.d.ts +4 -2
  13. package/cms/components/element-drop-handle/element-drop-handle.component.d.ts +12 -0
  14. package/cms/components/element-drop-handle/element-drop-handle.module.d.ts +9 -0
  15. package/cms/components/element-renderer/element-renderer.component.d.ts +3 -3
  16. package/cms/components/preview/index.d.ts +1 -0
  17. package/cms/components/preview/preview.component.d.ts +9 -8
  18. package/cms/components/preview/preview.module.d.ts +2 -1
  19. package/cms/components/preview/preview.types.d.ts +11 -0
  20. package/cms/index.d.ts +2 -0
  21. package/cms/launcher.module.d.ts +3 -1
  22. package/cms/modules/migrations/index.d.ts +2 -0
  23. package/cms/modules/migrations/migrations.d.ts +2 -0
  24. package/cms/modules/migrations/migrations.module.d.ts +6 -0
  25. package/cms/modules/migrations/services/migrations.service.d.ts +10 -0
  26. package/cms/modules/migrations/types/migrations.types.d.ts +2 -0
  27. package/cms/modules/runtime/index.d.ts +2 -0
  28. package/cms/modules/runtime/runtime.module.d.ts +8 -0
  29. package/cms/modules/runtime/services/compilation.service.d.ts +18 -0
  30. package/cms/modules/runtime/services/runtime-editor.service.d.ts +18 -0
  31. package/cms/modules/runtime/services/runtime.service.d.ts +27 -0
  32. package/cms/modules/runtime/tokens.d.ts +3 -0
  33. package/cms/{types → modules/runtime/types}/compilation.types.d.ts +1 -1
  34. package/cms/modules/runtime/types/runtime.actions.d.ts +9 -0
  35. package/cms/services/index.d.ts +1 -1
  36. package/cms/services/integration.state.d.ts +2 -3
  37. package/cms/services/io-provider.service.d.ts +3 -3
  38. package/cms/services/resources.service.d.ts +10 -0
  39. package/cms/types/common.types.d.ts +1 -1
  40. package/cms/types/configuration.types.d.ts +1 -0
  41. package/cms/types/index.d.ts +1 -1
  42. package/cms/types/integration.types.d.ts +5 -0
  43. package/cms/utils/elements-resolver.d.ts +3 -2
  44. package/cms/utils/index.d.ts +1 -0
  45. package/cms/utils/path.utils.d.ts +0 -1
  46. package/cms/utils/ui-definition.utils.d.ts +6 -0
  47. package/cms/vendor-map.d.ts +51 -30
  48. package/core/modules/configuration/services/configuration-runtime.service.d.ts +2 -4
  49. package/core/modules/configuration/services/configuration.service.d.ts +6 -4
  50. package/core/modules/configuration/types/configuration-runtime.types.d.ts +0 -2
  51. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +6 -3
  52. package/core/modules/flow-configuration/services/flow-update.service.d.ts +3 -2
  53. package/core/services/context.service.d.ts +1 -0
  54. package/core/services/metric-calculation/metric-calculation.service.d.ts +5 -1
  55. package/core/services/quote-draft.service.d.ts +2 -2
  56. package/core/types/index.d.ts +0 -1
  57. package/core/types/ui-definition.types.d.ts +19 -4
  58. package/core/utils/index.d.ts +1 -0
  59. package/core/utils/line-item.utils.d.ts +2 -0
  60. package/core/utils/ui-definition.utils.d.ts +2 -0
  61. package/esm2015/cms/cms.actions.js +1 -6
  62. package/esm2015/cms/components/element-children/element-children.component.js +24 -8
  63. package/esm2015/cms/components/element-children/element-children.module.js +8 -6
  64. package/esm2015/cms/components/element-drop-handle/element-drop-handle.component.js +32 -0
  65. package/esm2015/cms/components/element-drop-handle/element-drop-handle.module.js +19 -0
  66. package/esm2015/cms/components/element-renderer/element-renderer.component.js +9 -9
  67. package/esm2015/cms/components/element-renderer/element-renderer.module.js +4 -4
  68. package/esm2015/cms/components/plugin.component.js +3 -3
  69. package/esm2015/cms/components/preview/index.js +2 -1
  70. package/esm2015/cms/components/preview/preview.component.js +21 -36
  71. package/esm2015/cms/components/preview/preview.module.js +7 -6
  72. package/esm2015/cms/components/preview/preview.types.js +2 -0
  73. package/esm2015/cms/directives/custom-template.directive.js +3 -3
  74. package/esm2015/cms/index.js +3 -1
  75. package/esm2015/cms/launcher.module.js +11 -10
  76. package/esm2015/cms/modules/federated/federated.component.js +3 -3
  77. package/esm2015/cms/modules/federated/federated.module.js +4 -4
  78. package/esm2015/cms/modules/migrations/index.js +3 -0
  79. package/esm2015/cms/modules/migrations/migrations.js +11 -0
  80. package/esm2015/cms/modules/migrations/migrations.module.js +15 -0
  81. package/esm2015/cms/modules/migrations/services/migrations.service.js +43 -0
  82. package/esm2015/cms/modules/migrations/types/migrations.types.js +2 -0
  83. package/esm2015/cms/modules/runtime/index.js +3 -0
  84. package/esm2015/cms/modules/runtime/runtime.module.js +32 -0
  85. package/esm2015/cms/modules/runtime/services/compilation.service.js +84 -0
  86. package/esm2015/cms/modules/runtime/services/runtime-editor.service.js +27 -0
  87. package/esm2015/cms/modules/runtime/services/runtime.service.js +74 -0
  88. package/esm2015/cms/modules/runtime/tokens.js +3 -0
  89. package/esm2015/cms/modules/runtime/types/compilation.types.js +2 -0
  90. package/esm2015/cms/modules/runtime/types/runtime.actions.js +2 -0
  91. package/esm2015/cms/plugins/configuration.plugin.js +12 -4
  92. package/esm2015/cms/plugins/io.plugin.js +3 -3
  93. package/esm2015/cms/plugins/script.plugin.js +3 -3
  94. package/esm2015/cms/services/element-context.service.js +3 -3
  95. package/esm2015/cms/services/index.js +2 -2
  96. package/esm2015/cms/services/integration.state.js +4 -4
  97. package/esm2015/cms/services/io-provider.service.js +9 -9
  98. package/esm2015/cms/services/resources.service.js +50 -0
  99. package/esm2015/cms/services/templates.service.js +3 -3
  100. package/esm2015/cms/types/common.types.js +1 -1
  101. package/esm2015/cms/types/configuration.types.js +1 -1
  102. package/esm2015/cms/types/index.js +2 -2
  103. package/esm2015/cms/types/integration.types.js +1 -1
  104. package/esm2015/cms/utils/elements-resolver.js +18 -8
  105. package/esm2015/cms/utils/index.js +2 -1
  106. package/esm2015/cms/utils/path.utils.js +2 -13
  107. package/esm2015/cms/utils/ui-definition.utils.js +82 -0
  108. package/esm2015/cms/vendor-map.js +27 -10
  109. package/esm2015/core/core.module.js +4 -4
  110. package/esm2015/core/modules/configuration/configuration.module.js +4 -4
  111. package/esm2015/core/modules/configuration/services/configuration-runtime.service.js +5 -10
  112. package/esm2015/core/modules/configuration/services/configuration.service.js +38 -34
  113. package/esm2015/core/modules/configuration/services/runtime-context.service.js +3 -3
  114. package/esm2015/core/modules/configuration/types/configuration-runtime.types.js +1 -1
  115. package/esm2015/core/modules/flow-configuration/flow-configuration.module.js +4 -4
  116. package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +18 -10
  117. package/esm2015/core/modules/flow-configuration/services/flow-update.service.js +9 -9
  118. package/esm2015/core/services/context.service.js +7 -4
  119. package/esm2015/core/services/metric-calculation/metric-calculation.service.js +18 -9
  120. package/esm2015/core/services/product-images.service.js +3 -3
  121. package/esm2015/core/services/quote-draft.service.js +7 -7
  122. package/esm2015/core/types/index.js +1 -2
  123. package/esm2015/core/types/ui-definition.types.js +2 -2
  124. package/esm2015/core/utils/index.js +2 -1
  125. package/esm2015/core/utils/line-item.utils.js +27 -11
  126. package/esm2015/core/utils/ui-definition.utils.js +9 -0
  127. package/esm2015/runtime/components/component-preview/component-preview.component.js +4 -4
  128. package/esm2015/runtime/components/section-renderer/section-renderer.component.js +3 -3
  129. package/esm2015/runtime/components/ui-runtime/runtime.component.js +3 -3
  130. package/esm2015/runtime/components/ui-runtime-preview/runtime-preview.component.js +3 -3
  131. package/esm2015/runtime/execution/components/children-placeholder/children-placeholder.component.js +6 -6
  132. package/esm2015/runtime/execution/components/context-provider/context-provider.component.js +3 -3
  133. package/esm2015/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.js +3 -3
  134. package/esm2015/runtime/execution/components/federated/federated.component.js +3 -3
  135. package/esm2015/runtime/execution/components/velo-attribute/velo-attribute.component.js +3 -3
  136. package/esm2015/runtime/execution/components/velo-multiselect/velo-multiselect.component.js +3 -3
  137. package/esm2015/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.js +3 -3
  138. package/esm2015/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.js +3 -3
  139. package/esm2015/runtime/execution/components/velo-port-radio/velo-port-radio.component.js +3 -3
  140. package/esm2015/runtime/execution/components/velo-type/velo-type.component.js +3 -3
  141. package/esm2015/runtime/execution/directives/section-script.directive.js +3 -3
  142. package/esm2015/runtime/execution/directives/sf-query.directive.js +3 -3
  143. package/esm2015/runtime/execution/directives/velo-attribute.directive.js +3 -3
  144. package/esm2015/runtime/execution/directives/velo-port.directive.js +18 -18
  145. package/esm2015/runtime/execution/directives/vl-approval.directive.js +3 -3
  146. package/esm2015/runtime/execution/directives/vl-document-attachments.directive.js +3 -3
  147. package/esm2015/runtime/execution/directives/vl-document-templates.directive.js +3 -3
  148. package/esm2015/runtime/execution/directives/vl-quote.directive.js +4 -4
  149. package/esm2015/runtime/execution/directives/vl-ramp.directive.js +3 -3
  150. package/esm2015/runtime/execution/runtime-execution.module.js +4 -4
  151. package/esm2015/runtime/runtime.module.js +4 -4
  152. package/esm2015/runtime/services/cart.service.js +3 -3
  153. package/esm2015/runtime/services/collapsible-state.service.js +3 -3
  154. package/esm2015/runtime/services/configuration.service.js +11 -12
  155. package/esm2015/runtime/services/current-state.service.js +3 -3
  156. package/esm2015/runtime/services/form-scope.service.js +3 -3
  157. package/esm2015/runtime/services/product-model-cache.service.js +3 -3
  158. package/esm2015/runtime/services/runtime-context.service.js +3 -3
  159. package/esm2015/runtime/services/runtime-form.service.js +3 -3
  160. package/esm2015/runtime/services/runtime.service.js +4 -4
  161. package/esm2015/runtime/services/section-helper.service.js +3 -3
  162. package/esm2015/runtime/services/section-scope.service.js +3 -3
  163. package/esm2015/runtime/services/section-store.service.js +3 -3
  164. package/esm2015/runtime/services/section.service.js +6 -6
  165. package/esm2015/runtime/types/index.js +2 -1
  166. package/esm2015/runtime/types/quote-states.types.js +2 -0
  167. package/esm2015/src/components/dialog/dialog.component.js +16 -6
  168. package/esm2015/src/components/dialog/dialog.module.js +4 -4
  169. package/esm2015/src/components/dialog/dialog.types.js +1 -1
  170. package/esm2015/src/components/doc-gen/doc-gen.component.js +3 -3
  171. package/esm2015/src/components/doc-gen/doc-gen.module.js +4 -4
  172. package/esm2015/src/components/header/cart-overlay/cart-preview.component.js +3 -3
  173. package/esm2015/src/components/header/cart-overlay/cart-preview.module.js +4 -4
  174. package/esm2015/src/components/header/header.component.js +39 -13
  175. package/esm2015/src/components/header/header.module.js +4 -4
  176. package/esm2015/src/components/header/metrics/metrics.component.js +79 -67
  177. package/esm2015/src/components/header/metrics/metrics.definitions.js +1 -8
  178. package/esm2015/src/components/header/metrics/metrics.module.js +4 -4
  179. package/esm2015/src/flow-routing.module.js +18 -5
  180. package/esm2015/src/flow.component.js +3 -3
  181. package/esm2015/src/flow.module.js +4 -4
  182. package/esm2015/src/guards/context.guard.js +3 -3
  183. package/esm2015/src/guards/product-unload.guard.js +5 -5
  184. package/esm2015/src/guards/root.guard.js +3 -3
  185. package/esm2015/src/pages/assets/assets.component.js +117 -0
  186. package/esm2015/src/pages/assets/assets.module.js +20 -0
  187. package/esm2015/src/pages/catalog/catalog.component.js +6 -6
  188. package/esm2015/src/pages/catalog/catalog.module.js +4 -4
  189. package/esm2015/src/pages/debug/debug.component.js +3 -3
  190. package/esm2015/src/pages/debug/debug.module.js +4 -4
  191. package/esm2015/src/pages/empty-account/empty-account.component.js +3 -3
  192. package/esm2015/src/pages/empty-account/empty-account.module.js +4 -4
  193. package/esm2015/src/pages/legacy-product/legacy-product.component.js +4 -4
  194. package/esm2015/src/pages/legacy-product/legacy-product.module.js +4 -4
  195. package/esm2015/src/pages/product/product.component.js +5 -12
  196. package/esm2015/src/pages/product/product.module.js +4 -4
  197. package/esm2015/src/pages/record-not-found/record-not-found.component.js +3 -3
  198. package/esm2015/src/pages/record-not-found/record-not-found.module.js +4 -4
  199. package/esm2015/src/pages/remote/remote.component.js +5 -8
  200. package/esm2015/src/pages/remote/remote.module.js +4 -4
  201. package/esm2015/src/pages/shopping-cart/shopping-cart.component.js +6 -6
  202. package/esm2015/src/pages/shopping-cart/shopping-cart.module.js +4 -4
  203. package/esm2015/src/resolvers/flow.resolver.js +3 -3
  204. package/esm2015/src/resolvers/quote.resolver.js +17 -12
  205. package/esm2015/src/services/doc-gen.service.js +3 -3
  206. package/esm2015/src/services/flow-dialog.service.js +5 -4
  207. package/esm2015/src/services/flow-router.service.js +12 -4
  208. package/esm2015/src/services/flow.service.js +12 -5
  209. package/esm2015/src/types/flow-customization.types.js +1 -1
  210. package/esm2015/src/utils/flow.utils.js +3 -3
  211. package/fesm2015/veloceapps-sdk-cms.js +1075 -718
  212. package/fesm2015/veloceapps-sdk-cms.js.map +1 -1
  213. package/fesm2015/veloceapps-sdk-core.js +573 -529
  214. package/fesm2015/veloceapps-sdk-core.js.map +1 -1
  215. package/fesm2015/veloceapps-sdk-runtime.js +145 -146
  216. package/fesm2015/veloceapps-sdk-runtime.js.map +1 -1
  217. package/fesm2015/veloceapps-sdk.js +446 -262
  218. package/fesm2015/veloceapps-sdk.js.map +1 -1
  219. package/package.json +5 -3
  220. package/runtime/services/configuration.service.d.ts +2 -1
  221. package/runtime/services/runtime.service.d.ts +2 -1
  222. package/runtime/types/index.d.ts +1 -0
  223. package/src/components/dialog/dialog.types.d.ts +1 -0
  224. package/src/components/header/header.component.d.ts +10 -3
  225. package/src/components/header/metrics/metrics.component.d.ts +15 -6
  226. package/src/components/header/metrics/metrics.definitions.d.ts +0 -3
  227. package/src/flow-routing.module.d.ts +4 -3
  228. package/src/pages/assets/assets.component.d.ts +32 -0
  229. package/src/pages/assets/assets.module.d.ts +10 -0
  230. package/src/pages/product/product.component.d.ts +0 -1
  231. package/src/resolvers/quote.resolver.d.ts +1 -0
  232. package/src/services/flow-router.service.d.ts +2 -0
  233. package/src/services/flow.service.d.ts +1 -0
  234. package/src/types/flow-customization.types.d.ts +1 -0
  235. package/cms/services/dynamic-module.service.d.ts +0 -15
  236. package/cms/services/launcher.service.d.ts +0 -18
  237. package/esm2015/cms/services/dynamic-module.service.js +0 -33
  238. package/esm2015/cms/services/launcher.service.js +0 -57
  239. package/esm2015/cms/types/compilation.types.js +0 -2
  240. package/esm2015/core/types/quote-states.types.js +0 -2
  241. /package/{core → runtime}/types/quote-states.types.d.ts +0 -0
@@ -2,7 +2,7 @@
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@veloceapps/core'), require('rxjs'), require('rxjs/operators'), require('@veloceapps/api'), require('lodash'), require('@veloceapps/components'), require('primeng/api'), require('primeng/dynamicdialog'), require('moment')) :
3
3
  typeof define === 'function' && define.amd ? define('@veloceapps/sdk/core', ['exports', '@angular/core', '@veloceapps/core', 'rxjs', 'rxjs/operators', '@veloceapps/api', 'lodash', '@veloceapps/components', 'primeng/api', 'primeng/dynamicdialog', 'moment'], factory) :
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.veloceapps = global.veloceapps || {}, global.veloceapps.sdk = global.veloceapps.sdk || {}, global.veloceapps.sdk.core = {}), global.ng.core, global["@veloceapps/core"], global.rxjs, global.rxjs.operators, global["@veloceapps/api"], global.lodash, global["@veloceapps/components"], global["primeng/api"], global["primeng/dynamicdialog"], global.moment));
5
- })(this, (function (exports, i0, core, rxjs, operators, i1, lodash, components, i4, i5, moment) { 'use strict';
5
+ })(this, (function (exports, i0, core, rxjs, operators, i1, lodash, components, i5, i6, moment) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -26,8 +26,8 @@
26
26
 
27
27
  var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
28
28
  var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
29
- var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
30
29
  var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
30
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
31
31
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
32
32
 
33
33
  var getDefaultLineItem = function (context, uiDefinitionProperties, qty) {
@@ -40,7 +40,7 @@
40
40
  return lineItem;
41
41
  };
42
42
 
43
- /*! *****************************************************************************
43
+ /******************************************************************************
44
44
  Copyright (c) Microsoft Corporation.
45
45
 
46
46
  Permission to use, copy, modify, and/or distribute this software for any
@@ -107,6 +107,64 @@
107
107
  function __param(paramIndex, decorator) {
108
108
  return function (target, key) { decorator(target, key, paramIndex); };
109
109
  }
110
+ function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
111
+ function accept(f) { if (f !== void 0 && typeof f !== "function")
112
+ throw new TypeError("Function expected"); return f; }
113
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
114
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
115
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
116
+ var _, done = false;
117
+ for (var i = decorators.length - 1; i >= 0; i--) {
118
+ var context = {};
119
+ for (var p in contextIn)
120
+ context[p] = p === "access" ? {} : contextIn[p];
121
+ for (var p in contextIn.access)
122
+ context.access[p] = contextIn.access[p];
123
+ context.addInitializer = function (f) { if (done)
124
+ throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
125
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
126
+ if (kind === "accessor") {
127
+ if (result === void 0)
128
+ continue;
129
+ if (result === null || typeof result !== "object")
130
+ throw new TypeError("Object expected");
131
+ if (_ = accept(result.get))
132
+ descriptor.get = _;
133
+ if (_ = accept(result.set))
134
+ descriptor.set = _;
135
+ if (_ = accept(result.init))
136
+ initializers.push(_);
137
+ }
138
+ else if (_ = accept(result)) {
139
+ if (kind === "field")
140
+ initializers.push(_);
141
+ else
142
+ descriptor[key] = _;
143
+ }
144
+ }
145
+ if (target)
146
+ Object.defineProperty(target, contextIn.name, descriptor);
147
+ done = true;
148
+ }
149
+ ;
150
+ function __runInitializers(thisArg, initializers, value) {
151
+ var useValue = arguments.length > 2;
152
+ for (var i = 0; i < initializers.length; i++) {
153
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
154
+ }
155
+ return useValue ? value : void 0;
156
+ }
157
+ ;
158
+ function __propKey(x) {
159
+ return typeof x === "symbol" ? x : "".concat(x);
160
+ }
161
+ ;
162
+ function __setFunctionName(f, name, prefix) {
163
+ if (typeof name === "symbol")
164
+ name = name.description ? "[".concat(name.description, "]") : "";
165
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
166
+ }
167
+ ;
110
168
  function __metadata(metadataKey, metadataValue) {
111
169
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
112
170
  return Reflect.metadata(metadataKey, metadataValue);
@@ -138,7 +196,7 @@
138
196
  function step(op) {
139
197
  if (f)
140
198
  throw new TypeError("Generator is already executing.");
141
- while (_)
199
+ while (g && (g = 0, op[0] && (_ = 0)), _)
142
200
  try {
143
201
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
144
202
  return t;
@@ -202,7 +260,11 @@
202
260
  var __createBinding = Object.create ? (function (o, m, k, k2) {
203
261
  if (k2 === undefined)
204
262
  k2 = k;
205
- Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
263
+ var desc = Object.getOwnPropertyDescriptor(m, k);
264
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
265
+ desc = { enumerable: true, get: function () { return m[k]; } };
266
+ }
267
+ Object.defineProperty(o, k2, desc);
206
268
  }) : (function (o, m, k, k2) {
207
269
  if (k2 === undefined)
208
270
  k2 = k;
@@ -302,7 +364,7 @@
302
364
  function __asyncDelegator(o) {
303
365
  var i, p;
304
366
  return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
305
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
367
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
306
368
  }
307
369
  function __asyncValues(o) {
308
370
  if (!Symbol.asyncIterator)
@@ -357,6 +419,11 @@
357
419
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
358
420
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
359
421
  }
422
+ function __classPrivateFieldIn(state, receiver) {
423
+ if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function"))
424
+ throw new TypeError("Cannot use 'in' operator on non-object");
425
+ return typeof state === "function" ? receiver === state : state.has(receiver);
426
+ }
360
427
 
361
428
  exports.RuntimeMode = void 0;
362
429
  (function (RuntimeMode) {
@@ -374,6 +441,8 @@
374
441
  RuntimeStep["UPDATE"] = "UPDATE";
375
442
  })(exports.RuntimeStep || (exports.RuntimeStep = {}));
376
443
 
444
+ var UI_DEFINITION_VERSION = 3;
445
+
377
446
  var ContextService = /** @class */ (function () {
378
447
  function ContextService(contextApiService) {
379
448
  this.contextApiService = contextApiService;
@@ -386,6 +455,13 @@
386
455
  enumerable: false,
387
456
  configurable: true
388
457
  });
458
+ Object.defineProperty(ContextService.prototype, "mode", {
459
+ get: function () {
460
+ return this.resolve().properties.mode;
461
+ },
462
+ enumerable: false,
463
+ configurable: true
464
+ });
389
465
  ContextService.prototype.resolve = function () {
390
466
  if (!this.context.value) {
391
467
  throw new Error('Context is not initialized yet!');
@@ -416,604 +492,163 @@
416
492
  };
417
493
  return ContextService;
418
494
  }());
419
- ContextService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextService, deps: [{ token: i1__namespace.ContextApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
420
- ContextService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextService, providedIn: 'root' });
421
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextService, decorators: [{
495
+ ContextService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ContextService, deps: [{ token: i1__namespace.ContextApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
496
+ ContextService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ContextService, providedIn: 'root' });
497
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ContextService, decorators: [{
422
498
  type: i0.Injectable,
423
499
  args: [{ providedIn: 'root' }]
424
500
  }], ctorParameters: function () { return [{ type: i1__namespace.ContextApiService }]; } });
425
501
 
426
- function calculateMetricByMethod(lineItems, metric, method) {
427
- var items = getLineItemsByMethod(lineItems, method);
428
- return items.reduce(function (acc, li) {
429
- var value = li.reduce(function (accProduct, item) { return accProduct + ((item.totalMetrics && item.totalMetrics[metric]) || 0); }, 0);
430
- if (method === 'avg' && li.length > 0) {
431
- value /= li.length;
432
- }
433
- return acc + value;
434
- }, 0);
435
- }
436
- function getLineItemsByMethod(lineItems, method) {
437
- switch (method) {
438
- case 'first': {
439
- return lineItems.filter(function (li) { return !li.rampInstanceId; }).map(function (item) { return [item]; });
440
- }
441
- case 'last': {
442
- var rootTermItems = lineItems.filter(function (li) { return !li.rampInstanceId; });
443
- var products = rootTermItems.map(function (lineItem) { return __spreadArray([
444
- lineItem
445
- ], __read(lineItems.filter(function (li) { return li.rampInstanceId === lineItem.id; }))); });
446
- return products
447
- .map(function (items) { return __spreadArray([], __read(items)).sort(function (a, b) { return getDateValue(a.endDate || '') - getDateValue(b.endDate || ''); }).pop(); })
448
- .filter(function (li) { return Boolean(li); })
449
- .map(function (item) { return [item]; });
450
- }
451
- case 'avg': {
452
- var rootTermItems = lineItems.filter(function (li) { return !li.rampInstanceId; });
453
- return rootTermItems.map(function (lineItem) { return __spreadArray([lineItem], __read(lineItems.filter(function (li) { return li.rampInstanceId === lineItem.id; }))); });
454
- }
455
- case 'sum': {
456
- return lineItems.map(function (item) { return [item]; });
502
+ var RuntimeContextService = /** @class */ (function () {
503
+ function RuntimeContextService(configurationApiService) {
504
+ this.configurationApiService = configurationApiService;
505
+ }
506
+ RuntimeContextService.prototype.getRuntimeContext = function (productId, offeringId) {
507
+ var _this = this;
508
+ return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(operators.map(function (runtimeData) {
509
+ var _a, _b, _c;
510
+ var uiDefinition = _this.getUIDefinition(runtimeData);
511
+ var runtimeModel = core.RuntimeModel.create(runtimeData.types, runtimeData.products);
512
+ var _d = (_a = Array.from(runtimeModel.components.values()).find(function (c) { return c.productId === productId; })) !== null && _a !== void 0 ? _a : {}, productName = _d.productName, properties = _d.properties;
513
+ return {
514
+ modelId: runtimeData.modelId,
515
+ uiDefinition: uiDefinition,
516
+ runtimeModel: runtimeModel,
517
+ runtimeMode: exports.RuntimeMode.PROD,
518
+ productId: productId,
519
+ productType: (properties === null || properties === void 0 ? void 0 : properties.displayName) || productName,
520
+ offeringId: offeringId,
521
+ properties: {
522
+ PricingEnabled: ((_b = uiDefinition === null || uiDefinition === void 0 ? void 0 : uiDefinition.properties) === null || _b === void 0 ? void 0 : _b.pricingEnabled) ? 'true' : 'false',
523
+ PriceListId: (_c = uiDefinition === null || uiDefinition === void 0 ? void 0 : uiDefinition.properties) === null || _c === void 0 ? void 0 : _c.priceList,
524
+ },
525
+ };
526
+ }));
527
+ };
528
+ RuntimeContextService.prototype.getUIDefinition = function (runtimeData) {
529
+ var _a;
530
+ var rawUiDefinitions;
531
+ try {
532
+ rawUiDefinitions = JSON.parse(runtimeData.uiDefinitionsSource);
457
533
  }
458
- default: {
459
- return lineItems.map(function (item) { return [item]; });
534
+ catch (e) {
535
+ return;
460
536
  }
461
- }
462
- }
463
- function getDateValue(date) {
464
- return date ? new Date(date).getTime() : 0;
465
- }
537
+ var uiDefinitions = rawUiDefinitions.filter(function (uiDef) { return uiDef.version; });
538
+ var uiDefinition = (_a = uiDefinitions.find(function (uiDef) { return uiDef.primary; })) !== null && _a !== void 0 ? _a : uiDefinitions[0];
539
+ return uiDefinition;
540
+ };
541
+ return RuntimeContextService;
542
+ }());
543
+ RuntimeContextService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RuntimeContextService, deps: [{ token: i1__namespace.ConfigurationApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
544
+ RuntimeContextService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RuntimeContextService });
545
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RuntimeContextService, decorators: [{
546
+ type: i0.Injectable
547
+ }], ctorParameters: function () { return [{ type: i1__namespace.ConfigurationApiService }]; } });
466
548
 
467
- var QuoteDraftService = /** @class */ (function () {
468
- function QuoteDraftService(context, quoteApiService, priceApiService) {
469
- var _this = this;
470
- this.context = context;
471
- this.quoteApiService = quoteApiService;
472
- this.priceApiService = priceApiService;
473
- this.quoteSubj$ = new rxjs.BehaviorSubject(null);
474
- this.resetSubj$ = new rxjs.BehaviorSubject(true);
475
- this.isInitializedSubj$ = new rxjs.BehaviorSubject(false);
476
- this.initialCurrentState = [];
477
- this._hasUnsavedChanges = false;
478
- this.allPriceLists = [];
479
- this.assetPriceLists = [];
480
- this.reset$ = this.resetSubj$.asObservable();
481
- this.activePriceList$ = this.context.resolve$().pipe(operators.map(function (ctx) { return _this.allPriceLists.find(function (priceList) { return priceList.id === ctx.properties.PriceListId; }); }), operators.map(function (priceList) { return priceList !== null && priceList !== void 0 ? priceList : null; }));
482
- this.isInitializedSubj$
483
- .pipe(operators.filter(function (isInitialized) { return isInitialized; }), operators.switchMap(function () { return _this.quoteSubj$.asObservable(); }), operators.skip(1), operators.tap(function (quote) { return _this.markAsUpdated(quote); }))
484
- .subscribe();
549
+ var ConfigurationRuntimeService = /** @class */ (function () {
550
+ function ConfigurationRuntimeService(apiService, contextService, runtimeContextService) {
551
+ this.apiService = apiService;
552
+ this.contextService = contextService;
553
+ this.runtimeContextService = runtimeContextService;
554
+ this._isInitialized = false;
555
+ this.uiDefinitionProperties = {};
485
556
  }
486
- Object.defineProperty(QuoteDraftService.prototype, "isInitialized", {
487
- get: function () {
488
- return this.isInitializedSubj$.getValue();
489
- },
490
- set: function (value) {
491
- if (this.isInitialized !== value) {
492
- this.isInitializedSubj$.next(value);
557
+ ConfigurationRuntimeService.prototype.reset = function () {
558
+ this._isInitialized = false;
559
+ this._runtimeContext = undefined;
560
+ this.initializationProps = undefined;
561
+ this.uiDefinitionProperties = {};
562
+ };
563
+ ConfigurationRuntimeService.prototype.initTestMode = function (modelId, uiDefinition) {
564
+ var _this = this;
565
+ var _a, _b;
566
+ this.uiDefinitionProperties = (_a = uiDefinition.properties) !== null && _a !== void 0 ? _a : {};
567
+ var uiDefinitionExternals = (_b = uiDefinition.externals) !== null && _b !== void 0 ? _b : {};
568
+ return rxjs.combineLatest([
569
+ this.apiService.getRuntimeDataByModelId(modelId),
570
+ this.contextService.create('TestId', core.ConfigurationContextMode.TEST),
571
+ ]).pipe(operators.first(), operators.tap(function (_e) {
572
+ var _f = __read(_e, 2), runtimeData = _f[0], context = _f[1];
573
+ var _a;
574
+ _this._runtimeContext = {
575
+ modelId: modelId,
576
+ runtimeModel: core.RuntimeModel.create(runtimeData.types, runtimeData.products),
577
+ runtimeMode: exports.RuntimeMode.TEST,
578
+ };
579
+ _this.contextService.update({
580
+ properties: Object.assign(Object.assign(Object.assign(Object.assign({}, (_a = _this.runtimeContext) === null || _a === void 0 ? void 0 : _a.properties), context.properties), { ModelId: modelId, RuntimeMode: core.ConfigurationContextMode.TEST, PricingEnabled: _this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false', StartDate: new Date().toISOString().substring(0, 10), PriceListId: _this.uiDefinitionProperties.priceList, standalone: 'true' }), uiDefinitionExternals),
581
+ });
582
+ _this._isInitialized = true;
583
+ }));
584
+ };
585
+ ConfigurationRuntimeService.prototype.init = function (props) {
586
+ var _this = this;
587
+ this.initializationProps = props;
588
+ var context = this.contextService.resolve();
589
+ return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(operators.tap(function (runtimeContext) {
590
+ var _a, _b, _c, _d;
591
+ _this.uiDefinitionProperties = (_b = (_a = runtimeContext.uiDefinition) === null || _a === void 0 ? void 0 : _a.properties) !== null && _b !== void 0 ? _b : {};
592
+ var PriceListId = ((_c = context.properties) !== null && _c !== void 0 ? _c : {}).PriceListId;
593
+ var mergeContext = Object.assign(Object.assign({}, runtimeContext), { properties: Object.assign(Object.assign(Object.assign({}, runtimeContext.properties), context.properties), { PricingEnabled: PriceListId ? 'true' : 'false' }) });
594
+ _this.id15to18('AccountId', mergeContext.properties);
595
+ _this._runtimeContext = mergeContext;
596
+ if (context.properties && ((_d = _this._runtimeContext.properties) === null || _d === void 0 ? void 0 : _d.StartDate)) {
597
+ _this.contextService.update({
598
+ properties: Object.assign(Object.assign({}, _this._runtimeContext.properties), context.properties),
599
+ });
493
600
  }
494
- },
495
- enumerable: false,
496
- configurable: true
497
- });
498
- Object.defineProperty(QuoteDraftService.prototype, "hasUnsavedChanges", {
601
+ _this._isInitialized = true;
602
+ }));
603
+ };
604
+ ConfigurationRuntimeService.prototype.id15to18 = function (propertyName, source) {
605
+ if (!source) {
606
+ return;
607
+ }
608
+ var value = source[propertyName];
609
+ if (typeof value === 'string' && value.length === 15) {
610
+ source[propertyName] = core.SalesforceIdUtils.generateId18FromId15(value);
611
+ }
612
+ };
613
+ Object.defineProperty(ConfigurationRuntimeService.prototype, "isInitialized", {
499
614
  get: function () {
500
- return this._hasUnsavedChanges;
501
- },
502
- set: function (value) {
503
- var _a, _b;
504
- this._hasUnsavedChanges = value;
505
- if (!this._hasUnsavedChanges) {
506
- this.initialCurrentState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
507
- }
615
+ return this._isInitialized;
508
616
  },
509
617
  enumerable: false,
510
618
  configurable: true
511
619
  });
512
- Object.defineProperty(QuoteDraftService.prototype, "hasAssets$", {
620
+ Object.defineProperty(ConfigurationRuntimeService.prototype, "runtimeModel", {
513
621
  get: function () {
514
- var _this = this;
515
- return this.quoteSubj$.pipe(operators.map(function () { return _this.hasAssets; }));
622
+ var _a;
623
+ return (_a = this.runtimeContext) === null || _a === void 0 ? void 0 : _a.runtimeModel;
516
624
  },
517
625
  enumerable: false,
518
626
  configurable: true
519
627
  });
520
- Object.defineProperty(QuoteDraftService.prototype, "hasAssets", {
628
+ Object.defineProperty(ConfigurationRuntimeService.prototype, "runtimeContext", {
521
629
  get: function () {
522
- var quoteDraft = this.quoteSubj$.value;
523
- return Boolean(quoteDraft && quoteDraft.currentState.length > 0);
630
+ return this._runtimeContext;
524
631
  },
525
632
  enumerable: false,
526
633
  configurable: true
527
634
  });
528
- QuoteDraftService.prototype.reset = function () {
529
- this.resetSubj$.next(true);
530
- this.quoteSubj$.next(null);
531
- this.hasUnsavedChanges = false;
532
- };
533
- QuoteDraftService.prototype.init = function (quoteId, params) {
534
- var _this = this;
535
- return rxjs.zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(operators.tap(function (_c) {
536
- var _d = __read(_c, 2), quote = _d[0], allPriceLists = _d[1];
537
- _this.allPriceLists = allPriceLists;
538
- _this.quoteSubj$.next(quote);
539
- _this.context.update(quote.context);
540
- _this.populateActivePriceLists$();
541
- }), operators.map(function () { return rxjs.noop(); }), operators.take(1));
542
- };
543
- QuoteDraftService.prototype.setCurrentLineItemState = function (lineItems) {
544
- var quoteDraft = this.quoteSubj$.value;
545
- if (!quoteDraft) {
546
- return;
547
- }
548
- this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), { currentState: lineItems }));
549
- };
550
- QuoteDraftService.prototype.updateQuoteDraft = function (update) {
551
- var quoteDraft = this.quoteSubj$.value;
552
- if (!quoteDraft) {
553
- return;
554
- }
555
- if (update.context) {
556
- this.context.set(update.context);
557
- }
558
- this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), update));
559
- };
560
- QuoteDraftService.prototype.updateByPriceSummary = function (priceSummary) {
561
- var quoteDraft = this.quoteSubj$.value;
562
- if (!quoteDraft) {
563
- return;
564
- }
565
- var updatedCurrentState = this.currentState.map(function (lineItem) {
566
- var updated = priceSummary.lineItems.find(function (li) { return li.id === lineItem.id; });
567
- return updated !== null && updated !== void 0 ? updated : lineItem;
568
- });
569
- this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedCurrentState, totalPrices: priceSummary.totalPrices, approvalItems: priceSummary.approvalItems }));
570
- };
571
- Object.defineProperty(QuoteDraftService.prototype, "quoteDraft$", {
572
- get: function () {
573
- var _this = this;
574
- return rxjs.combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(operators.map(function () { return _this.quoteDraft; }), operators.filter(function (quote) { return Boolean(quote); }), operators.shareReplay());
575
- },
576
- enumerable: false,
577
- configurable: true
578
- });
579
- Object.defineProperty(QuoteDraftService.prototype, "quoteDraft", {
580
- get: function () {
581
- var quote = this.quoteSubj$.value;
582
- if (!quote) {
583
- return null;
584
- }
585
- return Object.assign(Object.assign({}, quote), { context: this.context.resolve() });
586
- },
587
- enumerable: false,
588
- configurable: true
589
- });
590
- Object.defineProperty(QuoteDraftService.prototype, "quoteDraftForActivePriceList", {
591
- get: function () {
592
- var quoteDraft = this.quoteDraft;
593
- if (!quoteDraft) {
594
- return null;
595
- }
596
- return Object.assign(Object.assign({}, quoteDraft), { initialState: this.filterByActivePriceList(quoteDraft.initialState), currentState: this.filterByActivePriceList(quoteDraft.currentState) });
597
- },
598
- enumerable: false,
599
- configurable: true
600
- });
601
- Object.defineProperty(QuoteDraftService.prototype, "currentState$", {
602
- get: function () {
603
- return this.quoteDraft$.pipe(operators.map(function (quote) { return quote.currentState; }));
604
- },
605
- enumerable: false,
606
- configurable: true
607
- });
608
- Object.defineProperty(QuoteDraftService.prototype, "currentState", {
609
- get: function () {
610
- var _a, _b;
611
- return (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
612
- },
613
- enumerable: false,
614
- configurable: true
615
- });
616
- Object.defineProperty(QuoteDraftService.prototype, "activeCurrentState$", {
617
- /**
618
- * Stream of activeCurrentState
619
- */
620
- get: function () {
621
- var _this = this;
622
- return this.quoteDraft$.pipe(operators.map(function () { return _this.activeCurrentState; }));
623
- },
624
- enumerable: false,
625
- configurable: true
626
- });
627
- Object.defineProperty(QuoteDraftService.prototype, "activeCurrentState", {
628
- /**
629
- * activeCurrentState is currentState passed through additional filters
630
- */
631
- get: function () {
632
- var _a, _b;
633
- var currentState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
634
- currentState = this.filterByActivePriceList(currentState);
635
- return currentState;
636
- },
637
- enumerable: false,
638
- configurable: true
639
- });
640
- Object.defineProperty(QuoteDraftService.prototype, "activeInitialState$", {
641
- /**
642
- * Stream of activeInitialState
643
- */
644
- get: function () {
645
- var _this = this;
646
- return this.quoteDraft$.pipe(operators.map(function () { return _this.activeInitialState; }));
647
- },
648
- enumerable: false,
649
- configurable: true
650
- });
651
- Object.defineProperty(QuoteDraftService.prototype, "activeInitialState", {
652
- /**
653
- * activeInitialState is initialState passed through additional filters
654
- */
655
- get: function () {
656
- var _a, _b;
657
- var ctx = this.context.resolve();
658
- var initialState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.initialState) !== null && _b !== void 0 ? _b : [];
659
- if (ctx.mode === core.ConfigurationContextMode.ACCOUNT) {
660
- initialState = this.filterByActivePriceList(initialState);
661
- }
662
- return initialState;
663
- },
664
- enumerable: false,
665
- configurable: true
666
- });
667
- Object.defineProperty(QuoteDraftService.prototype, "isStandalone", {
668
- get: function () {
669
- return this.context.resolve().properties.standalone === 'true';
670
- },
671
- enumerable: false,
672
- configurable: true
673
- });
674
- Object.defineProperty(QuoteDraftService.prototype, "isStandalone$", {
675
- get: function () {
676
- var _this = this;
677
- return this.context.resolve$().pipe(operators.map(function () { return _this.isStandalone; }));
678
- },
679
- enumerable: false,
680
- configurable: true
681
- });
682
- QuoteDraftService.prototype.getInitialCurrentState = function () {
683
- return this.initialCurrentState;
684
- };
685
- QuoteDraftService.prototype.isEditMode$ = function () {
686
- var _this = this;
687
- return this.context.resolve$().pipe(operators.map(function () { return _this.isEditMode(); }));
688
- };
689
- QuoteDraftService.prototype.isEditMode = function () {
690
- var context = this.context.resolve();
691
- if (context.mode === core.ConfigurationContextMode.ACCOUNT) {
692
- return true;
693
- }
694
- if (context.mode === core.ConfigurationContextMode.QUOTE) {
695
- return context.properties.Status === 'Draft';
696
- }
697
- return false;
698
- };
699
- QuoteDraftService.prototype.updateActivePriceList = function (priceListId) {
700
- this.context.update({ properties: { PriceListId: priceListId } });
701
- };
702
- QuoteDraftService.prototype.populateActivePriceLists$ = function () {
703
- var _this = this;
704
- var ctx = this.context.resolve();
705
- var quoteDraft = this.quoteDraft;
706
- if (!quoteDraft) {
707
- return;
708
- }
709
- // In ACCOUNT mode populate price lists from related assets
710
- if (ctx.mode === core.ConfigurationContextMode.ACCOUNT) {
711
- // Populate list of price lists
712
- this.assetPriceLists = quoteDraft.currentState
713
- .map(function (_c) {
714
- var priceListId = _c.priceListId;
715
- return priceListId;
716
- })
717
- .reduce(function (trunk, priceListId) {
718
- var _a, _b;
719
- if (!priceListId || trunk.some(function (item) { return item.id === priceListId; })) {
720
- return trunk;
721
- }
722
- return __spreadArray(__spreadArray([], __read(trunk)), [
723
- { id: priceListId, name: (_b = (_a = _this.allPriceLists.find(function (item) { return item.id === priceListId; })) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '' },
724
- ]);
725
- }, []);
726
- }
727
- };
728
- QuoteDraftService.prototype.filterByActivePriceList = function (lineItems) {
729
- var ctx = this.context.resolve();
730
- return lineItems.filter(function (li) { return !li.priceListId || li.priceListId === ctx.properties.PriceListId; });
731
- };
732
- QuoteDraftService.prototype.markAsUpdated = function (quote) {
733
- if ((quote === null || quote === void 0 ? void 0 : quote.context.properties.mode) === core.ConfigurationContextMode.ACCOUNT) {
734
- this.hasUnsavedChanges = !!quote && !quote.currentState.every(function (li) { return li.actionCode === 'EXIST'; });
735
- }
736
- else {
737
- this.hasUnsavedChanges = !lodash.isEqual(this.initialCurrentState, quote === null || quote === void 0 ? void 0 : quote.currentState);
738
- }
739
- };
740
- return QuoteDraftService;
741
- }());
742
- QuoteDraftService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteDraftService, deps: [{ token: ContextService }, { token: i1__namespace.QuoteApiService }, { token: i1__namespace.PriceApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
743
- QuoteDraftService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteDraftService, providedIn: 'root' });
744
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteDraftService, decorators: [{
745
- type: i0.Injectable,
746
- args: [{ providedIn: 'root' }]
747
- }], ctorParameters: function () { return [{ type: ContextService }, { type: i1__namespace.QuoteApiService }, { type: i1__namespace.PriceApiService }]; } });
748
-
749
- var MetricsCalculationService = /** @class */ (function () {
750
- function MetricsCalculationService(quoteDraftService, settingsService) {
751
- var _this = this;
752
- this.quoteDraftService = quoteDraftService;
753
- this.settingsService = settingsService;
754
- this.metricsUpdated$ = new rxjs.Subject();
755
- this.quoteMetricsSettings = {};
756
- this.metricsCalculationMethodMap = {};
757
- this.metricsData = {};
758
- rxjs.combineLatest([
759
- this.quoteDraftService.currentState$,
760
- this.settingsService.fetchSetting('QUOTE_LEVEL_METRIC_CALCULATION_METHOD').pipe(rxjs.take(1)),
761
- ]).subscribe(function (_a) {
762
- var _b = __read(_a, 2), lineItems = _b[0], setting = _b[1];
763
- var settingsData = {};
764
- try {
765
- settingsData = JSON.parse((setting === null || setting === void 0 ? void 0 : setting.value) || '{}');
766
- }
767
- catch (error) {
768
- settingsData = {};
769
- }
770
- _this.quoteMetricsSettings = settingsData;
771
- _this.updateMetrics(lineItems);
772
- });
773
- }
774
- Object.defineProperty(MetricsCalculationService.prototype, "onMetricsUpdate$", {
775
- get: function () {
776
- return this.metricsUpdated$.asObservable();
777
- },
778
- enumerable: false,
779
- configurable: true
780
- });
781
- MetricsCalculationService.prototype.getMetricValue = function (metric) {
782
- return this.metricsData[metric] || 0;
783
- };
784
- MetricsCalculationService.prototype.updateMetrics = function (lineItems) {
785
- var _this = this;
786
- var metricKeys = this.collectMetricKeys(lineItems).filter(function (key) { return !key.includes('Effective_'); });
787
- this.metricsCalculationMethodMap = this.buildMetricsCalculationMethods(metricKeys, this.metricsCalculationMethodMap);
788
- this.metricsData = metricKeys.reduce(function (acc, key) {
789
- var _a;
790
- return (Object.assign(Object.assign({}, acc), (_a = {}, _a[key] = _this.calculateMetric(lineItems, key), _a)));
791
- }, {});
792
- this.metricsUpdated$.next();
793
- };
794
- MetricsCalculationService.prototype.calculateMetric = function (lineItems, metric) {
795
- return calculateMetricByMethod(lineItems, metric, this.metricsCalculationMethodMap[metric] || 'sum');
796
- };
797
- MetricsCalculationService.prototype.buildMetricsCalculationMethods = function (metricKeys, initial) {
798
- var _this = this;
799
- return metricKeys.reduce(function (acc, name) {
800
- var _a, _b;
801
- if (acc[name]) {
802
- return acc;
803
- }
804
- acc = Object.assign(Object.assign({}, acc), (_a = {}, _a[name] = 'sum', _a));
805
- var settingKey = name.replace(/VDM_|Total_/g, '');
806
- if (_this.quoteMetricsSettings[settingKey]) {
807
- acc = Object.assign(Object.assign({}, acc), (_b = {}, _b[name] = _this.quoteMetricsSettings[settingKey], _b));
808
- }
809
- return acc;
810
- }, initial);
811
- };
812
- MetricsCalculationService.prototype.collectMetricKeys = function (lineItems) {
813
- var _this = this;
814
- var keys = [];
815
- lineItems.forEach(function (lineItem) {
816
- keys.push.apply(keys, __spreadArray([], __read(Object.keys(lineItem.totalMetrics || {}))));
817
- keys.push.apply(keys, __spreadArray([], __read(_this.collectMetricKeys(lineItem.lineItems))));
818
- });
819
- return lodash.uniq(keys);
820
- };
821
- return MetricsCalculationService;
822
- }());
823
- MetricsCalculationService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: MetricsCalculationService, deps: [{ token: QuoteDraftService }, { token: i1__namespace.ConfigurationSettingsApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
824
- MetricsCalculationService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: MetricsCalculationService, providedIn: 'root' });
825
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: MetricsCalculationService, decorators: [{
826
- type: i0.Injectable,
827
- args: [{ providedIn: 'root' }]
828
- }], ctorParameters: function () { return [{ type: QuoteDraftService }, { type: i1__namespace.ConfigurationSettingsApiService }]; } });
829
-
830
- var ProductImagesService = /** @class */ (function () {
831
- function ProductImagesService(productApiService) {
832
- this.productApiService = productApiService;
833
- this.imagesMap$ = new rxjs.BehaviorSubject({});
834
- }
835
- ProductImagesService.prototype.getImageUrl$ = function (productId) {
836
- var _a;
837
- if (this.imagesMap$.value[productId] == null) {
838
- this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), (_a = {}, _a[productId] = '', _a)));
839
- this.fetchProductImage(productId);
840
- }
841
- return this.imagesMap$.pipe(rxjs.map(function (imagesMap) { return imagesMap[productId]; }), rxjs.distinctUntilChanged());
842
- };
843
- ProductImagesService.prototype.fetchProductImage = function (productId) {
844
- var _this = this;
845
- this.productApiService
846
- .fetchImage$(productId)
847
- .pipe(rxjs.map(function (file) { return URL.createObjectURL(file); }), rxjs.catchError(function () { return rxjs.of(''); }), rxjs.tap(function (url) {
848
- var _a;
849
- return _this.imagesMap$.next(Object.assign(Object.assign({}, _this.imagesMap$.value), (_a = {}, _a[productId] = url, _a)));
850
- }))
851
- .subscribe();
852
- };
853
- return ProductImagesService;
854
- }());
855
- ProductImagesService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductImagesService, deps: [{ token: i1__namespace.ProductApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
856
- ProductImagesService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductImagesService, providedIn: 'root' });
857
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductImagesService, decorators: [{
858
- type: i0.Injectable,
859
- args: [{ providedIn: 'root' }]
860
- }], ctorParameters: function () { return [{ type: i1__namespace.ProductApiService }]; } });
861
-
862
- var RuntimeContextService = /** @class */ (function () {
863
- function RuntimeContextService(configurationApiService) {
864
- this.configurationApiService = configurationApiService;
865
- }
866
- RuntimeContextService.prototype.getRuntimeContext = function (productId, offeringId) {
867
- var _this = this;
868
- return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(operators.map(function (runtimeData) {
869
- var _a, _b, _c;
870
- var uiDefinition = _this.getUIDefinition(runtimeData);
871
- var runtimeModel = core.RuntimeModel.create(runtimeData.types, runtimeData.products);
872
- var _d = (_a = Array.from(runtimeModel.components.values()).find(function (c) { return c.productId === productId; })) !== null && _a !== void 0 ? _a : {}, productName = _d.productName, properties = _d.properties;
873
- return {
874
- modelId: runtimeData.modelId,
875
- uiDefinition: uiDefinition,
876
- runtimeModel: runtimeModel,
877
- runtimeMode: exports.RuntimeMode.PROD,
878
- productId: productId,
879
- productType: (properties === null || properties === void 0 ? void 0 : properties.displayName) || productName,
880
- offeringId: offeringId,
881
- properties: {
882
- PricingEnabled: ((_b = uiDefinition === null || uiDefinition === void 0 ? void 0 : uiDefinition.properties) === null || _b === void 0 ? void 0 : _b.pricingEnabled) ? 'true' : 'false',
883
- PriceListId: (_c = uiDefinition === null || uiDefinition === void 0 ? void 0 : uiDefinition.properties) === null || _c === void 0 ? void 0 : _c.priceList,
884
- },
885
- };
886
- }));
887
- };
888
- RuntimeContextService.prototype.getUIDefinition = function (runtimeData) {
889
- var _a;
890
- var rawUiDefinitions;
891
- try {
892
- rawUiDefinitions = JSON.parse(runtimeData.uiDefinitionsSource);
893
- }
894
- catch (e) {
895
- return;
896
- }
897
- var uiDefinitions = rawUiDefinitions.filter(function (uiDef) { return uiDef.version; });
898
- var uiDefinition = (_a = uiDefinitions.find(function (uiDef) { return uiDef.primary; })) !== null && _a !== void 0 ? _a : uiDefinitions[0];
899
- return uiDefinition;
900
- };
901
- return RuntimeContextService;
902
- }());
903
- RuntimeContextService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: RuntimeContextService, deps: [{ token: i1__namespace.ConfigurationApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
904
- RuntimeContextService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: RuntimeContextService });
905
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: RuntimeContextService, decorators: [{
906
- type: i0.Injectable
907
- }], ctorParameters: function () { return [{ type: i1__namespace.ConfigurationApiService }]; } });
908
-
909
- var ConfigurationRuntimeService = /** @class */ (function () {
910
- function ConfigurationRuntimeService(apiService, contextService, runtimeContextService) {
911
- this.apiService = apiService;
912
- this.contextService = contextService;
913
- this.runtimeContextService = runtimeContextService;
914
- this._isInitialized = false;
915
- this.uiDefinitionProperties = {};
916
- }
917
- ConfigurationRuntimeService.prototype.reset = function () {
918
- this._isInitialized = false;
919
- this._runtimeContext = undefined;
920
- this._assets = undefined;
921
- this.initializationProps = undefined;
922
- this.uiDefinitionProperties = {};
923
- };
924
- ConfigurationRuntimeService.prototype.initTestMode = function (modelId, uiDefinition) {
925
- var _this = this;
926
- var _a, _b;
927
- this.uiDefinitionProperties = (_a = uiDefinition.properties) !== null && _a !== void 0 ? _a : {};
928
- var uiDefinitionExternals = (_b = uiDefinition.externals) !== null && _b !== void 0 ? _b : {};
929
- return rxjs.combineLatest([
930
- this.apiService.getRuntimeDataByModelId(modelId),
931
- this.contextService.create('TestId', core.ConfigurationContextMode.TEST),
932
- ]).pipe(operators.first(), operators.tap(function (_e) {
933
- var _f = __read(_e, 2), runtimeData = _f[0], context = _f[1];
934
- var _a;
935
- _this._runtimeContext = {
936
- modelId: modelId,
937
- runtimeModel: core.RuntimeModel.create(runtimeData.types, runtimeData.products),
938
- runtimeMode: exports.RuntimeMode.TEST,
939
- };
940
- _this.contextService.update({
941
- properties: Object.assign(Object.assign(Object.assign(Object.assign({}, (_a = _this.runtimeContext) === null || _a === void 0 ? void 0 : _a.properties), context.properties), { ModelId: modelId, RuntimeMode: core.ConfigurationContextMode.TEST, PricingEnabled: _this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false', StartDate: new Date().toISOString().substring(0, 10), PriceListId: _this.uiDefinitionProperties.priceList, standalone: 'true' }), uiDefinitionExternals),
942
- });
943
- _this._isInitialized = true;
944
- }));
945
- };
946
- ConfigurationRuntimeService.prototype.init = function (props) {
947
- var _this = this;
948
- this.initializationProps = props;
949
- this._assets = props.assets;
950
- var context = this.contextService.resolve();
951
- return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(operators.tap(function (runtimeContext) {
952
- var _a, _b, _c, _d;
953
- _this.uiDefinitionProperties = (_b = (_a = runtimeContext.uiDefinition) === null || _a === void 0 ? void 0 : _a.properties) !== null && _b !== void 0 ? _b : {};
954
- var PriceListId = ((_c = context.properties) !== null && _c !== void 0 ? _c : {}).PriceListId;
955
- var mergeContext = Object.assign(Object.assign({}, runtimeContext), { properties: Object.assign(Object.assign(Object.assign({}, runtimeContext.properties), context.properties), { PricingEnabled: PriceListId ? 'true' : 'false' }) });
956
- _this.id15to18('AccountId', mergeContext.properties);
957
- _this._runtimeContext = mergeContext;
958
- if (context.properties && ((_d = _this._runtimeContext.properties) === null || _d === void 0 ? void 0 : _d.StartDate)) {
959
- _this.contextService.update({
960
- properties: Object.assign(Object.assign({}, _this._runtimeContext.properties), context.properties),
961
- });
962
- }
963
- _this._isInitialized = true;
964
- }));
965
- };
966
- ConfigurationRuntimeService.prototype.id15to18 = function (propertyName, source) {
967
- if (!source) {
968
- return;
969
- }
970
- var value = source[propertyName];
971
- if (typeof value === 'string' && value.length === 15) {
972
- source[propertyName] = core.SalesforceIdUtils.generateId18FromId15(value);
973
- }
974
- };
975
- ConfigurationRuntimeService.prototype.getAsset = function (lineItem) {
976
- return this._assets && this._assets.find(function (a) { return a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId; });
977
- };
978
- Object.defineProperty(ConfigurationRuntimeService.prototype, "isInitialized", {
979
- get: function () {
980
- return this._isInitialized;
981
- },
982
- enumerable: false,
983
- configurable: true
984
- });
985
- Object.defineProperty(ConfigurationRuntimeService.prototype, "runtimeModel", {
986
- get: function () {
987
- var _a;
988
- return (_a = this.runtimeContext) === null || _a === void 0 ? void 0 : _a.runtimeModel;
989
- },
990
- enumerable: false,
991
- configurable: true
992
- });
993
- Object.defineProperty(ConfigurationRuntimeService.prototype, "runtimeContext", {
994
- get: function () {
995
- return this._runtimeContext;
996
- },
997
- enumerable: false,
998
- configurable: true
999
- });
1000
- return ConfigurationRuntimeService;
1001
- }());
1002
- ConfigurationRuntimeService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationRuntimeService, deps: [{ token: i1__namespace.ConfigurationApiService }, { token: ContextService }, { token: RuntimeContextService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1003
- ConfigurationRuntimeService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationRuntimeService });
1004
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationRuntimeService, decorators: [{
1005
- type: i0.Injectable
1006
- }], ctorParameters: function () { return [{ type: i1__namespace.ConfigurationApiService }, { type: ContextService }, { type: RuntimeContextService }]; } });
1007
-
1008
- var findLineItem = function (id, lineItems) {
1009
- return findLineItemWithComparator(lineItems, function (li) { return li.id === id; });
1010
- };
1011
- var findLineItemWithComparator = function (lineItems, comparator) {
1012
- var currentLevel = lineItems;
1013
- while (currentLevel.length) {
1014
- var found = currentLevel.find(comparator);
1015
- if (found) {
1016
- return found;
635
+ return ConfigurationRuntimeService;
636
+ }());
637
+ ConfigurationRuntimeService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationRuntimeService, deps: [{ token: i1__namespace.ConfigurationApiService }, { token: ContextService }, { token: RuntimeContextService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
638
+ ConfigurationRuntimeService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationRuntimeService });
639
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationRuntimeService, decorators: [{
640
+ type: i0.Injectable
641
+ }], ctorParameters: function () { return [{ type: i1__namespace.ConfigurationApiService }, { type: ContextService }, { type: RuntimeContextService }]; } });
642
+
643
+ var findLineItem = function (id, lineItems) {
644
+ return findLineItemWithComparator(lineItems, function (li) { return li.id === id; });
645
+ };
646
+ var findLineItemWithComparator = function (lineItems, comparator) {
647
+ var currentLevel = lineItems;
648
+ while (currentLevel.length) {
649
+ var found = currentLevel.find(comparator);
650
+ if (found) {
651
+ return found;
1017
652
  }
1018
653
  currentLevel = lodash.flatten(currentLevel.map(function (parent) { return parent.lineItems; }));
1019
654
  }
@@ -1040,17 +675,36 @@
1040
675
  };
1041
676
  var replaceLineItem = function (lineItem, replaceTo) {
1042
677
  if (lineItem.id === replaceTo.id) {
1043
- return Object.assign({}, replaceTo);
678
+ return Object.assign({}, recalculateCardinalityVariables(lineItem, replaceTo));
1044
679
  }
1045
- return Object.assign(Object.assign({}, lineItem), { lineItems: lineItem.lineItems.map(function (li) {
1046
- if (li.id === replaceTo.id) {
1047
- return replaceTo;
1048
- }
1049
- else if (li.lineItems.length) {
1050
- return replaceLineItem(li, replaceTo);
1051
- }
1052
- return li;
1053
- }) });
680
+ return Object.assign(Object.assign({}, lineItem), { lineItems: lineItem.lineItems.map(function (li) { return replaceLineItem(li, replaceTo); }) });
681
+ };
682
+ var calculateCardinalityVariables = function (lineItems) {
683
+ var cardVars = new Map();
684
+ lineItems.forEach(function (li) {
685
+ var _a;
686
+ var cardinalityVariableName = "#CV-" + li.type + "@" + li.port;
687
+ cardVars.set(cardinalityVariableName, ((_a = cardVars.get(cardinalityVariableName)) !== null && _a !== void 0 ? _a : 0) + li.qty);
688
+ });
689
+ return cardVars;
690
+ };
691
+ var recalculateCardinalityVariables = function (original, updated) {
692
+ var cardinalityVariables = calculateCardinalityVariables(updated.lineItems);
693
+ var originalCardinalityVariables = calculateCardinalityVariables(original.lineItems);
694
+ originalCardinalityVariables.forEach(function (value, key) {
695
+ if (cardinalityVariables.get(key) === value) {
696
+ // no need to update cardinality if no changes
697
+ cardinalityVariables.delete(key);
698
+ }
699
+ else if (!cardinalityVariables.has(key)) {
700
+ // remove last item from port
701
+ cardinalityVariables.set(key, 0);
702
+ }
703
+ });
704
+ return Object.assign(Object.assign({}, updated), { attributes: upsertAttributes(updated.attributes, __spreadArray([], __read(cardinalityVariables)).map(function (_c) {
705
+ var _d = __read(_c, 2), name = _d[0], value = _d[1];
706
+ return ({ name: name, value: value });
707
+ })) });
1054
708
  };
1055
709
  var mapAttributes = function (attributes) {
1056
710
  return attributes.reduce(function (acc, _c) {
@@ -1140,6 +794,8 @@
1140
794
  insertLineItem: insertLineItem,
1141
795
  removeLineItem: removeLineItem,
1142
796
  replaceLineItem: replaceLineItem,
797
+ calculateCardinalityVariables: calculateCardinalityVariables,
798
+ recalculateCardinalityVariables: recalculateCardinalityVariables,
1143
799
  mapAttributes: mapAttributes,
1144
800
  getAttributes: getAttributes,
1145
801
  upsertAttributes: upsertAttributes,
@@ -1157,17 +813,299 @@
1157
813
  LineItemWorker.prototype.insert = function (parentId, toInsert) {
1158
814
  return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));
1159
815
  };
1160
- LineItemWorker.prototype.remove = function (id) {
1161
- return new LineItemWorker(removeLineItem(this.li, id));
816
+ LineItemWorker.prototype.remove = function (id) {
817
+ return new LineItemWorker(removeLineItem(this.li, id));
818
+ };
819
+ LineItemWorker.prototype.replace = function (toReplace) {
820
+ return new LineItemWorker(replaceLineItem(this.li, toReplace));
821
+ };
822
+ LineItemWorker.prototype.patchAttribute = function (attrs, id) {
823
+ return new LineItemWorker(patchAttributes(this.li, id !== null && id !== void 0 ? id : this.li.id, attrs));
824
+ };
825
+ return LineItemWorker;
826
+ }());
827
+
828
+ var QuoteDraftService = /** @class */ (function () {
829
+ function QuoteDraftService(context, quoteApiService, priceApiService) {
830
+ var _this = this;
831
+ this.context = context;
832
+ this.quoteApiService = quoteApiService;
833
+ this.priceApiService = priceApiService;
834
+ this.quoteSubj$ = new rxjs.BehaviorSubject(null);
835
+ this.resetSubj$ = new rxjs.BehaviorSubject(true);
836
+ this.isInitializedSubj$ = new rxjs.BehaviorSubject(false);
837
+ this.initialCurrentState = [];
838
+ this._hasUnsavedChanges = false;
839
+ this.allPriceLists = [];
840
+ this.assetPriceLists = [];
841
+ this.reset$ = this.resetSubj$.asObservable();
842
+ this.activePriceList$ = this.context.resolve$().pipe(operators.map(function (ctx) { return _this.allPriceLists.find(function (priceList) { return priceList.id === ctx.properties.PriceListId; }); }), operators.map(function (priceList) { return priceList !== null && priceList !== void 0 ? priceList : null; }));
843
+ this.isInitializedSubj$
844
+ .pipe(operators.filter(function (isInitialized) { return isInitialized; }), operators.switchMap(function () { return _this.quoteSubj$.asObservable(); }), operators.skip(1), operators.tap(function (quote) { return _this.markAsUpdated(quote); }))
845
+ .subscribe();
846
+ }
847
+ Object.defineProperty(QuoteDraftService.prototype, "isInitialized", {
848
+ get: function () {
849
+ return this.isInitializedSubj$.getValue();
850
+ },
851
+ set: function (value) {
852
+ if (this.isInitialized !== value) {
853
+ this.isInitializedSubj$.next(value);
854
+ }
855
+ },
856
+ enumerable: false,
857
+ configurable: true
858
+ });
859
+ Object.defineProperty(QuoteDraftService.prototype, "hasUnsavedChanges", {
860
+ get: function () {
861
+ return this._hasUnsavedChanges;
862
+ },
863
+ set: function (value) {
864
+ var _a, _b;
865
+ this._hasUnsavedChanges = value;
866
+ if (!this._hasUnsavedChanges) {
867
+ this.initialCurrentState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
868
+ }
869
+ },
870
+ enumerable: false,
871
+ configurable: true
872
+ });
873
+ Object.defineProperty(QuoteDraftService.prototype, "hasProducts$", {
874
+ get: function () {
875
+ var _this = this;
876
+ return this.quoteSubj$.pipe(operators.map(function () { return _this.hasProducts; }));
877
+ },
878
+ enumerable: false,
879
+ configurable: true
880
+ });
881
+ Object.defineProperty(QuoteDraftService.prototype, "hasProducts", {
882
+ get: function () {
883
+ var quoteDraft = this.quoteSubj$.value;
884
+ return Boolean(quoteDraft && quoteDraft.currentState.length > 0);
885
+ },
886
+ enumerable: false,
887
+ configurable: true
888
+ });
889
+ QuoteDraftService.prototype.reset = function () {
890
+ this.resetSubj$.next(true);
891
+ this.quoteSubj$.next(null);
892
+ this.hasUnsavedChanges = false;
893
+ };
894
+ QuoteDraftService.prototype.init = function (quoteId, params) {
895
+ var _this = this;
896
+ return rxjs.zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(operators.tap(function (_c) {
897
+ var _d = __read(_c, 2), quote = _d[0], allPriceLists = _d[1];
898
+ _this.allPriceLists = allPriceLists;
899
+ _this.quoteSubj$.next(quote);
900
+ _this.context.update(quote.context);
901
+ _this.populateActivePriceLists$();
902
+ }), operators.map(function () { return rxjs.noop(); }), operators.take(1));
903
+ };
904
+ QuoteDraftService.prototype.setCurrentLineItemState = function (lineItems) {
905
+ var quoteDraft = this.quoteSubj$.value;
906
+ if (!quoteDraft) {
907
+ return;
908
+ }
909
+ this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), { currentState: lineItems }));
910
+ };
911
+ QuoteDraftService.prototype.updateQuoteDraft = function (update) {
912
+ var quoteDraft = this.quoteSubj$.value;
913
+ if (!quoteDraft) {
914
+ return;
915
+ }
916
+ if (update.context) {
917
+ this.context.set(update.context);
918
+ }
919
+ this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), update));
920
+ };
921
+ QuoteDraftService.prototype.updateByPriceSummary = function (priceSummary) {
922
+ var quoteDraft = this.quoteSubj$.value;
923
+ if (!quoteDraft) {
924
+ return;
925
+ }
926
+ var updatedCurrentState = this.currentState.map(function (lineItem) {
927
+ var updated = priceSummary.lineItems.find(function (li) { return li.id === lineItem.id; });
928
+ return updated !== null && updated !== void 0 ? updated : lineItem;
929
+ });
930
+ this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedCurrentState, totalPrices: priceSummary.totalPrices, approvalItems: priceSummary.approvalItems }));
931
+ };
932
+ Object.defineProperty(QuoteDraftService.prototype, "quoteDraft$", {
933
+ get: function () {
934
+ var _this = this;
935
+ return rxjs.combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(operators.map(function () { return _this.quoteDraft; }), operators.filter(function (quote) { return Boolean(quote); }), operators.shareReplay());
936
+ },
937
+ enumerable: false,
938
+ configurable: true
939
+ });
940
+ Object.defineProperty(QuoteDraftService.prototype, "quoteDraft", {
941
+ get: function () {
942
+ var quote = this.quoteSubj$.value;
943
+ if (!quote) {
944
+ return null;
945
+ }
946
+ return Object.assign(Object.assign({}, quote), { context: this.context.resolve() });
947
+ },
948
+ enumerable: false,
949
+ configurable: true
950
+ });
951
+ Object.defineProperty(QuoteDraftService.prototype, "quoteDraftForActivePriceList", {
952
+ get: function () {
953
+ var quoteDraft = this.quoteDraft;
954
+ if (!quoteDraft) {
955
+ return null;
956
+ }
957
+ return Object.assign(Object.assign({}, quoteDraft), { initialState: this.filterByActivePriceList(quoteDraft.initialState), currentState: this.filterByActivePriceList(quoteDraft.currentState) });
958
+ },
959
+ enumerable: false,
960
+ configurable: true
961
+ });
962
+ Object.defineProperty(QuoteDraftService.prototype, "currentState$", {
963
+ get: function () {
964
+ return this.quoteDraft$.pipe(operators.map(function (quote) { return quote.currentState; }));
965
+ },
966
+ enumerable: false,
967
+ configurable: true
968
+ });
969
+ Object.defineProperty(QuoteDraftService.prototype, "currentState", {
970
+ get: function () {
971
+ var _a, _b;
972
+ return (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
973
+ },
974
+ enumerable: false,
975
+ configurable: true
976
+ });
977
+ Object.defineProperty(QuoteDraftService.prototype, "activeCurrentState$", {
978
+ /**
979
+ * Stream of activeCurrentState
980
+ */
981
+ get: function () {
982
+ var _this = this;
983
+ return this.quoteDraft$.pipe(operators.map(function () { return _this.activeCurrentState; }));
984
+ },
985
+ enumerable: false,
986
+ configurable: true
987
+ });
988
+ Object.defineProperty(QuoteDraftService.prototype, "activeCurrentState", {
989
+ /**
990
+ * activeCurrentState is currentState passed through additional filters
991
+ */
992
+ get: function () {
993
+ var _a, _b;
994
+ var currentState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
995
+ currentState = this.filterByActivePriceList(currentState);
996
+ return currentState;
997
+ },
998
+ enumerable: false,
999
+ configurable: true
1000
+ });
1001
+ Object.defineProperty(QuoteDraftService.prototype, "activeInitialState$", {
1002
+ /**
1003
+ * Stream of activeInitialState
1004
+ */
1005
+ get: function () {
1006
+ var _this = this;
1007
+ return this.quoteDraft$.pipe(operators.map(function () { return _this.activeInitialState; }));
1008
+ },
1009
+ enumerable: false,
1010
+ configurable: true
1011
+ });
1012
+ Object.defineProperty(QuoteDraftService.prototype, "activeInitialState", {
1013
+ /**
1014
+ * activeInitialState is initialState passed through additional filters
1015
+ */
1016
+ get: function () {
1017
+ var _a, _b;
1018
+ var ctx = this.context.resolve();
1019
+ var initialState = (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.initialState) !== null && _b !== void 0 ? _b : [];
1020
+ if (ctx.mode === core.ConfigurationContextMode.ACCOUNT) {
1021
+ initialState = this.filterByActivePriceList(initialState);
1022
+ }
1023
+ return initialState;
1024
+ },
1025
+ enumerable: false,
1026
+ configurable: true
1027
+ });
1028
+ Object.defineProperty(QuoteDraftService.prototype, "isStandalone", {
1029
+ get: function () {
1030
+ return this.context.resolve().properties.standalone === 'true';
1031
+ },
1032
+ enumerable: false,
1033
+ configurable: true
1034
+ });
1035
+ Object.defineProperty(QuoteDraftService.prototype, "isStandalone$", {
1036
+ get: function () {
1037
+ var _this = this;
1038
+ return this.context.resolve$().pipe(operators.map(function () { return _this.isStandalone; }));
1039
+ },
1040
+ enumerable: false,
1041
+ configurable: true
1042
+ });
1043
+ QuoteDraftService.prototype.getInitialCurrentState = function () {
1044
+ return this.initialCurrentState;
1045
+ };
1046
+ QuoteDraftService.prototype.isEditMode$ = function () {
1047
+ var _this = this;
1048
+ return this.context.resolve$().pipe(operators.map(function () { return _this.isEditMode(); }));
1162
1049
  };
1163
- LineItemWorker.prototype.replace = function (toReplace) {
1164
- return new LineItemWorker(replaceLineItem(this.li, toReplace));
1050
+ QuoteDraftService.prototype.isEditMode = function () {
1051
+ var context = this.context.resolve();
1052
+ if (context.mode === core.ConfigurationContextMode.ACCOUNT) {
1053
+ return true;
1054
+ }
1055
+ if (context.mode === core.ConfigurationContextMode.QUOTE) {
1056
+ return context.properties.Status === 'Draft';
1057
+ }
1058
+ return false;
1165
1059
  };
1166
- LineItemWorker.prototype.patchAttribute = function (attrs, id) {
1167
- return new LineItemWorker(patchAttributes(this.li, id !== null && id !== void 0 ? id : this.li.id, attrs));
1060
+ QuoteDraftService.prototype.updateActivePriceList = function (priceListId) {
1061
+ this.context.update({ properties: { PriceListId: priceListId } });
1168
1062
  };
1169
- return LineItemWorker;
1063
+ QuoteDraftService.prototype.populateActivePriceLists$ = function () {
1064
+ var _this = this;
1065
+ var ctx = this.context.resolve();
1066
+ var quoteDraft = this.quoteDraft;
1067
+ if (!quoteDraft) {
1068
+ return;
1069
+ }
1070
+ // In ACCOUNT mode populate price lists from related assets
1071
+ if (ctx.mode === core.ConfigurationContextMode.ACCOUNT) {
1072
+ // Populate list of price lists
1073
+ this.assetPriceLists = quoteDraft.currentState
1074
+ .map(function (_c) {
1075
+ var priceListId = _c.priceListId;
1076
+ return priceListId;
1077
+ })
1078
+ .reduce(function (trunk, priceListId) {
1079
+ var _a, _b;
1080
+ if (!priceListId || trunk.some(function (item) { return item.id === priceListId; })) {
1081
+ return trunk;
1082
+ }
1083
+ return __spreadArray(__spreadArray([], __read(trunk)), [
1084
+ { id: priceListId, name: (_b = (_a = _this.allPriceLists.find(function (item) { return item.id === priceListId; })) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '' },
1085
+ ]);
1086
+ }, []);
1087
+ }
1088
+ };
1089
+ QuoteDraftService.prototype.filterByActivePriceList = function (lineItems) {
1090
+ var ctx = this.context.resolve();
1091
+ return lineItems.filter(function (li) { return !li.priceListId || li.priceListId === ctx.properties.PriceListId; });
1092
+ };
1093
+ QuoteDraftService.prototype.markAsUpdated = function (quote) {
1094
+ if ((quote === null || quote === void 0 ? void 0 : quote.context.properties.mode) === core.ConfigurationContextMode.ACCOUNT) {
1095
+ this.hasUnsavedChanges = !!quote && !quote.currentState.every(function (li) { return li.actionCode === 'EXIST'; });
1096
+ }
1097
+ else {
1098
+ this.hasUnsavedChanges = !lodash.isEqual(this.initialCurrentState, quote === null || quote === void 0 ? void 0 : quote.currentState);
1099
+ }
1100
+ };
1101
+ return QuoteDraftService;
1170
1102
  }());
1103
+ QuoteDraftService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: QuoteDraftService, deps: [{ token: ContextService }, { token: i1__namespace.QuoteApiService }, { token: i1__namespace.PriceApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1104
+ QuoteDraftService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: QuoteDraftService, providedIn: 'root' });
1105
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: QuoteDraftService, decorators: [{
1106
+ type: i0.Injectable,
1107
+ args: [{ providedIn: 'root' }]
1108
+ }], ctorParameters: function () { return [{ type: ContextService }, { type: i1__namespace.QuoteApiService }, { type: i1__namespace.PriceApiService }]; } });
1171
1109
 
1172
1110
  var ConfigurationService = /** @class */ (function () {
1173
1111
  function ConfigurationService(quoteDraftService, runtimeService, contextService, configurationApiService, messageService, dialogService) {
@@ -1178,7 +1116,6 @@
1178
1116
  this.messageService = messageService;
1179
1117
  this.dialogService = dialogService;
1180
1118
  this.mode = core.ConfigurationMode.SEARCH;
1181
- this.states = {};
1182
1119
  this.lineItem = new rxjs.BehaviorSubject(undefined);
1183
1120
  this.charges = new rxjs.BehaviorSubject({});
1184
1121
  this.pricePlans = new rxjs.BehaviorSubject({});
@@ -1187,7 +1124,7 @@
1187
1124
  ConfigurationService.prototype.reset = function () {
1188
1125
  this.hasUnsavedChanges = false;
1189
1126
  this.runtimeService.reset();
1190
- this.states = {};
1127
+ this.configurableRamp = undefined;
1191
1128
  this.lineItem.next(undefined);
1192
1129
  this.charges.next({});
1193
1130
  this.pricePlans.next({});
@@ -1197,10 +1134,7 @@
1197
1134
  if (!this.lineItem.value) {
1198
1135
  return rxjs.throwError(function () { return new Error("Source LineItem not found"); });
1199
1136
  }
1200
- this.states.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem).li;
1201
- this.states.asset = this.states.configurableRamp
1202
- ? this.runtimeService.getAsset(this.states.configurableRamp)
1203
- : undefined;
1137
+ this.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem).li;
1204
1138
  return this.configure().pipe(operators.catchError(function (error) {
1205
1139
  console.error(error);
1206
1140
  if (!_this.runtimeService.uiDefinitionProperties.suppressToastMessages) {
@@ -1218,8 +1152,8 @@
1218
1152
  ConfigurationService.prototype.patch = function (lineItem) {
1219
1153
  this.patch$(lineItem).subscribe();
1220
1154
  };
1221
- ConfigurationService.prototype.updateCurrentStates = function (update) {
1222
- this.states = Object.assign(Object.assign({}, this.states), update);
1155
+ ConfigurationService.prototype.setConfigurableRamp = function (lineItem) {
1156
+ this.configurableRamp = lineItem;
1223
1157
  };
1224
1158
  ConfigurationService.prototype.get = function () {
1225
1159
  return this.lineItem.asObservable().pipe(rxjs.shareReplay());
@@ -1285,7 +1219,7 @@
1285
1219
  }
1286
1220
  var uiDefinitionProperties = Object.assign(Object.assign({}, ((_b = (_a = runtimeContext.uiDefinition) === null || _a === void 0 ? void 0 : _a.properties) !== null && _b !== void 0 ? _b : {})), ((_c = this.runtimeService.uiDefinitionProperties) !== null && _c !== void 0 ? _c : {}));
1287
1221
  var qty = (_d = this.runtimeService.initializationProps) === null || _d === void 0 ? void 0 : _d.defaultQty;
1288
- var lineItem = (_e = this.states.configurableRamp) !== null && _e !== void 0 ? _e : getDefaultLineItem(runtimeContext, uiDefinitionProperties, qty);
1222
+ var lineItem = (_e = this.configurableRamp) !== null && _e !== void 0 ? _e : getDefaultLineItem(runtimeContext, uiDefinitionProperties, qty);
1289
1223
  var configurationRequest = this.createRequest(lineItem);
1290
1224
  var mainPricingEnabled = (_f = runtimeContext.properties) === null || _f === void 0 ? void 0 : _f.PricingEnabled;
1291
1225
  var pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;
@@ -1305,27 +1239,33 @@
1305
1239
  };
1306
1240
  ConfigurationService.prototype.configureExternal$ = function (productId, qty) {
1307
1241
  var _this = this;
1308
- this.updateCurrentStates({
1309
- currentState: this.quoteDraftService.currentState,
1310
- });
1311
1242
  return this.runtimeService.init({ productId: productId, defaultQty: qty }).pipe(operators.switchMap(function () { return _this.configure(); }), operators.first(), operators.catchError(function (error) {
1312
1243
  _this.messageService.add({ severity: components.ToastType.error, summary: error });
1313
1244
  throw error;
1314
1245
  }), operators.finalize(function () { return _this.reset(); }));
1315
1246
  };
1316
1247
  ConfigurationService.prototype.createRequest = function (lineItem) {
1317
- return {
1248
+ var _a;
1249
+ var request = {
1318
1250
  lineItem: lineItem,
1319
1251
  mode: this.mode,
1320
1252
  step: !this.lineItem.value ? exports.RuntimeStep.START : exports.RuntimeStep.UPDATE,
1321
1253
  attributeDomainMode: 'ALL',
1322
1254
  context: this.contextService.resolve(),
1323
- lineItems: this.states.currentState || [],
1324
- asset: this.states.asset,
1255
+ lineItems: ((_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) || [],
1256
+ asset: this.getAsset(),
1325
1257
  };
1258
+ request = core.ConfigurationTranslatorUtils.lightenConfigurationRequest(request);
1259
+ return request;
1326
1260
  };
1327
1261
  ConfigurationService.prototype.showInactiveProductsConfirmation = function () {
1328
1262
  var _this = this;
1263
+ var confirmationConfig = {
1264
+ title: ' ',
1265
+ description: 'This quote contains inactive products. Do you want to remove them?',
1266
+ primaryButtonLabel: 'Remove products',
1267
+ secondaryButtonLabel: 'Back to Quote',
1268
+ };
1329
1269
  this.dialogService
1330
1270
  .open(components.ConfirmationComponent, {
1331
1271
  dismissableMask: false,
@@ -1334,14 +1274,7 @@
1334
1274
  showHeader: true,
1335
1275
  header: "Inactive Products in Quote",
1336
1276
  width: '440px',
1337
- data: {
1338
- confirmationConfig: {
1339
- title: ' ',
1340
- description: 'This quote contains inactive products. Do you want to remove them?',
1341
- submitBtn: 'Remove products',
1342
- cancelBtn: 'Back to Quote',
1343
- },
1344
- },
1277
+ data: { confirmationConfig: confirmationConfig },
1345
1278
  })
1346
1279
  .onClose.subscribe(function (result) {
1347
1280
  if (!result) {
@@ -1350,18 +1283,34 @@
1350
1283
  }
1351
1284
  });
1352
1285
  };
1286
+ ConfigurationService.prototype.getAsset = function () {
1287
+ var _a;
1288
+ var lineItem = this.configurableRamp;
1289
+ if (!lineItem) {
1290
+ return;
1291
+ }
1292
+ return (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.initialState.find(function (a) { return a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId; });
1293
+ };
1353
1294
  return ConfigurationService;
1354
1295
  }());
1355
- ConfigurationService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationService, deps: [{ token: QuoteDraftService }, { token: ConfigurationRuntimeService }, { token: ContextService }, { token: i1__namespace.ConfigurationApiService }, { token: i4__namespace.MessageService }, { token: i5__namespace.DialogService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1356
- ConfigurationService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationService });
1357
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationService, decorators: [{
1296
+ ConfigurationService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationService, deps: [{ token: QuoteDraftService }, { token: ConfigurationRuntimeService }, { token: ContextService }, { token: i1__namespace.ConfigurationApiService }, { token: i5__namespace.MessageService }, { token: i6__namespace.DialogService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1297
+ ConfigurationService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationService });
1298
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationService, decorators: [{
1358
1299
  type: i0.Injectable
1359
- }], ctorParameters: function () { return [{ type: QuoteDraftService }, { type: ConfigurationRuntimeService }, { type: ContextService }, { type: i1__namespace.ConfigurationApiService }, { type: i4__namespace.MessageService }, { type: i5__namespace.DialogService }]; } });
1300
+ }], ctorParameters: function () { return [{ type: QuoteDraftService }, { type: ConfigurationRuntimeService }, { type: ContextService }, { type: i1__namespace.ConfigurationApiService }, { type: i5__namespace.MessageService }, { type: i6__namespace.DialogService }]; } });
1301
+
1302
+ function extractMetadata(uiDefinition) {
1303
+ return lodash.omit(uiDefinition, [
1304
+ 'children',
1305
+ 'pages',
1306
+ 'components',
1307
+ ]);
1308
+ }
1360
1309
 
1361
1310
  var FlowUpdateService = /** @class */ (function () {
1362
1311
  function FlowUpdateService() {
1363
1312
  }
1364
- FlowUpdateService.prototype.update = function (rootLineItems, updates) {
1313
+ FlowUpdateService.prototype.update = function (rootLineItems, updates, charges) {
1365
1314
  var _this = this;
1366
1315
  var remainingUpdates = __spreadArray([], __read(updates));
1367
1316
  var currentLevel = rootLineItems;
@@ -1372,7 +1321,7 @@
1372
1321
  var updated = false;
1373
1322
  switch (update.dataType) {
1374
1323
  case 'LINEITEM':
1375
- updated = _this.applyLineItemUpdate(li, update);
1324
+ updated = _this.applyLineItemUpdate(li, update, charges);
1376
1325
  break;
1377
1326
  case 'CHARGE':
1378
1327
  updated = _this.applyChargeUpdate(li, update);
@@ -1410,7 +1359,7 @@
1410
1359
  var filtered = lineItems.filter(function (lineItem) { return !idsToRemove.includes(lineItem.id); });
1411
1360
  return filtered.map(function (lineItem) { return new LineItemWorker(lineItem).remove(id).li; });
1412
1361
  };
1413
- FlowUpdateService.prototype.applyLineItemUpdate = function (lineItem, update) {
1362
+ FlowUpdateService.prototype.applyLineItemUpdate = function (lineItem, update, charges) {
1414
1363
  if (lineItem.id !== update.id) {
1415
1364
  return false;
1416
1365
  }
@@ -1426,7 +1375,7 @@
1426
1375
  break;
1427
1376
  case 'PRICE_ADJUSTMENT':
1428
1377
  {
1429
- var _a = __read(lineItem.chargeItems, 1), charge = _a[0];
1378
+ var charge = lineItem.chargeItems.find(function (charge) { var _a; return (_a = (charges || {})[charge.chargeId]) === null || _a === void 0 ? void 0 : _a.main; });
1430
1379
  if (charge) {
1431
1380
  charge.priceAdjustment = update.newValue;
1432
1381
  }
@@ -1434,7 +1383,7 @@
1434
1383
  break;
1435
1384
  case 'LIST_PRICE_ADJUSTMENT':
1436
1385
  {
1437
- var _b = __read(lineItem.chargeItems, 1), charge = _b[0];
1386
+ var charge = lineItem.chargeItems.find(function (charge) { var _a; return (_a = (charges || {})[charge.chargeId]) === null || _a === void 0 ? void 0 : _a.main; });
1438
1387
  if (charge) {
1439
1388
  charge.listPriceAdjustment = update.newValue;
1440
1389
  }
@@ -1446,8 +1395,8 @@
1446
1395
  return true;
1447
1396
  };
1448
1397
  FlowUpdateService.prototype.applyChargeUpdate = function (lineItem, update) {
1449
- var foundCharge = lineItem.chargeItems.find(function (_a) {
1450
- var id = _a.id;
1398
+ var foundCharge = lineItem.chargeItems.find(function (_b) {
1399
+ var id = _b.id;
1451
1400
  return id === update.id;
1452
1401
  });
1453
1402
  if (!foundCharge) {
@@ -1482,9 +1431,9 @@
1482
1431
  };
1483
1432
  return FlowUpdateService;
1484
1433
  }());
1485
- FlowUpdateService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowUpdateService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1486
- FlowUpdateService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowUpdateService });
1487
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowUpdateService, decorators: [{
1434
+ FlowUpdateService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowUpdateService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1435
+ FlowUpdateService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowUpdateService });
1436
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowUpdateService, decorators: [{
1488
1437
  type: i0.Injectable
1489
1438
  }] });
1490
1439
 
@@ -1518,7 +1467,7 @@
1518
1467
  }
1519
1468
  return rxjs.of([]).pipe(rxjs.map(function () {
1520
1469
  var updatedState = lodash.cloneDeep(quoteDraft.currentState);
1521
- _this.updateService.update(updatedState, updates);
1470
+ _this.updateService.update(updatedState, updates, quoteDraft.charges);
1522
1471
  return updatedState;
1523
1472
  }), rxjs.switchMap(function (updatedState) { return _this.calculate$(Object.assign(Object.assign({}, quoteDraft), { currentState: updatedState })); }), rxjs.map(function () { return _this.quoteDraftService.quoteDraft; }), this.handleErrorAndBounceBack());
1524
1473
  };
@@ -1614,6 +1563,16 @@
1614
1563
  enumerable: false,
1615
1564
  configurable: true
1616
1565
  });
1566
+ Object.defineProperty(FlowConfigurationService.prototype, "activeMetrics$", {
1567
+ get: function () {
1568
+ return this.quoteDraftService.quoteDraft$.pipe(rxjs.map(function (_c) {
1569
+ var activeMetrics = _c.activeMetrics;
1570
+ return activeMetrics;
1571
+ }));
1572
+ },
1573
+ enumerable: false,
1574
+ configurable: true
1575
+ });
1617
1576
  Object.defineProperty(FlowConfigurationService.prototype, "chargesSnapshot", {
1618
1577
  get: function () {
1619
1578
  var _a, _b;
@@ -1630,6 +1589,14 @@
1630
1589
  enumerable: false,
1631
1590
  configurable: true
1632
1591
  });
1592
+ Object.defineProperty(FlowConfigurationService.prototype, "activeMetricsSnapshot", {
1593
+ get: function () {
1594
+ var _a, _b;
1595
+ return (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.activeMetrics) !== null && _b !== void 0 ? _b : [];
1596
+ },
1597
+ enumerable: false,
1598
+ configurable: true
1599
+ });
1633
1600
  Object.defineProperty(FlowConfigurationService.prototype, "contextSnapshot", {
1634
1601
  get: function () {
1635
1602
  return this.contextService.resolve();
@@ -1660,9 +1627,9 @@
1660
1627
  };
1661
1628
  return FlowConfigurationService;
1662
1629
  }());
1663
- FlowConfigurationService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationService, deps: [{ token: i1__namespace.ProceduresApiService }, { token: ContextService }, { token: QuoteDraftService }, { token: FlowUpdateService }, { token: ConfigurationService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1664
- FlowConfigurationService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationService });
1665
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationService, decorators: [{
1630
+ FlowConfigurationService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationService, deps: [{ token: i1__namespace.ProceduresApiService }, { token: ContextService }, { token: QuoteDraftService }, { token: FlowUpdateService }, { token: ConfigurationService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1631
+ FlowConfigurationService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationService });
1632
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationService, decorators: [{
1666
1633
  type: i0.Injectable
1667
1634
  }], ctorParameters: function () { return [{ type: i1__namespace.ProceduresApiService }, { type: ContextService }, { type: QuoteDraftService }, { type: FlowUpdateService }, { type: ConfigurationService }]; } });
1668
1635
 
@@ -1671,10 +1638,10 @@
1671
1638
  }
1672
1639
  return FlowConfigurationModule;
1673
1640
  }());
1674
- FlowConfigurationModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1675
- FlowConfigurationModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationModule });
1676
- FlowConfigurationModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationModule, providers: [FlowConfigurationService, FlowUpdateService, i1.PriceApiService], imports: [[]] });
1677
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowConfigurationModule, decorators: [{
1641
+ FlowConfigurationModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1642
+ FlowConfigurationModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationModule });
1643
+ FlowConfigurationModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationModule, providers: [FlowConfigurationService, FlowUpdateService, i1.PriceApiService], imports: [[]] });
1644
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: FlowConfigurationModule, decorators: [{
1678
1645
  type: i0.NgModule,
1679
1646
  args: [{
1680
1647
  imports: [],
@@ -1687,9 +1654,9 @@
1687
1654
  }
1688
1655
  return ConfigurationModule;
1689
1656
  }());
1690
- ConfigurationModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1691
- ConfigurationModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationModule, imports: [components.ConfirmationDialogModule] });
1692
- ConfigurationModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationModule, providers: [
1657
+ ConfigurationModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1658
+ ConfigurationModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationModule, imports: [components.ConfirmationDialogModule] });
1659
+ ConfigurationModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationModule, providers: [
1693
1660
  i1.ContextApiService,
1694
1661
  i1.ProductModelApiService,
1695
1662
  i1.ConfigurationApiService,
@@ -1697,7 +1664,7 @@
1697
1664
  RuntimeContextService,
1698
1665
  ConfigurationService,
1699
1666
  ], imports: [[components.ConfirmationDialogModule]] });
1700
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ConfigurationModule, decorators: [{
1667
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ConfigurationModule, decorators: [{
1701
1668
  type: i0.NgModule,
1702
1669
  args: [{
1703
1670
  imports: [components.ConfirmationDialogModule],
@@ -1712,15 +1679,177 @@
1712
1679
  }]
1713
1680
  }] });
1714
1681
 
1682
+ function calculateMetricByMethod(lineItems, metric, method) {
1683
+ var items = getLineItemsByMethod(lineItems, method);
1684
+ return items.reduce(function (acc, li) {
1685
+ var value = li.reduce(function (accProduct, item) { return accProduct + ((item.totalMetrics && item.totalMetrics[metric]) || 0); }, 0);
1686
+ if (method === 'avg' && li.length > 0) {
1687
+ value /= li.length;
1688
+ }
1689
+ return acc + value;
1690
+ }, 0);
1691
+ }
1692
+ function getLineItemsByMethod(lineItems, method) {
1693
+ switch (method) {
1694
+ case 'first': {
1695
+ return lineItems.filter(function (li) { return !li.rampInstanceId; }).map(function (item) { return [item]; });
1696
+ }
1697
+ case 'last': {
1698
+ var rootTermItems = lineItems.filter(function (li) { return !li.rampInstanceId; });
1699
+ var products = rootTermItems.map(function (lineItem) { return __spreadArray([
1700
+ lineItem
1701
+ ], __read(lineItems.filter(function (li) { return li.rampInstanceId === lineItem.id; }))); });
1702
+ return products
1703
+ .map(function (items) { return __spreadArray([], __read(items)).sort(function (a, b) { return getDateValue(a.endDate || '') - getDateValue(b.endDate || ''); }).pop(); })
1704
+ .filter(function (li) { return Boolean(li); })
1705
+ .map(function (item) { return [item]; });
1706
+ }
1707
+ case 'avg': {
1708
+ var rootTermItems = lineItems.filter(function (li) { return !li.rampInstanceId; });
1709
+ return rootTermItems.map(function (lineItem) { return __spreadArray([lineItem], __read(lineItems.filter(function (li) { return li.rampInstanceId === lineItem.id; }))); });
1710
+ }
1711
+ case 'sum': {
1712
+ return lineItems.map(function (item) { return [item]; });
1713
+ }
1714
+ default: {
1715
+ return lineItems.map(function (item) { return [item]; });
1716
+ }
1717
+ }
1718
+ }
1719
+ function getDateValue(date) {
1720
+ return date ? new Date(date).getTime() : 0;
1721
+ }
1722
+
1723
+ var MetricsCalculationService = /** @class */ (function () {
1724
+ function MetricsCalculationService(quoteDraftService, flowConfiguration, settingsService) {
1725
+ var _this = this;
1726
+ this.quoteDraftService = quoteDraftService;
1727
+ this.flowConfiguration = flowConfiguration;
1728
+ this.settingsService = settingsService;
1729
+ this.metricsUpdated$ = new rxjs.Subject();
1730
+ this.quoteMetricsSettings = {};
1731
+ this.metricsCalculationMethodMap = {};
1732
+ this.metricsData = {};
1733
+ this.activeMetricRules = [];
1734
+ this.activeMetricRules = this.flowConfiguration.activeMetricsSnapshot.filter(function (metricRule) { return metricRule.metrics.some(function (metric) { return !!metric.totalName; }); });
1735
+ rxjs.combineLatest([
1736
+ this.quoteDraftService.currentState$,
1737
+ this.settingsService.fetchSetting('QUOTE_LEVEL_METRIC_CALCULATION_METHOD').pipe(rxjs.take(1)),
1738
+ ]).subscribe(function (_c) {
1739
+ var _d = __read(_c, 2), lineItems = _d[0], setting = _d[1];
1740
+ var settingsData = {};
1741
+ try {
1742
+ settingsData = JSON.parse((setting === null || setting === void 0 ? void 0 : setting.value) || '{}');
1743
+ }
1744
+ catch (error) {
1745
+ settingsData = {};
1746
+ }
1747
+ _this.quoteMetricsSettings = settingsData;
1748
+ _this.updateMetrics(lineItems);
1749
+ });
1750
+ }
1751
+ Object.defineProperty(MetricsCalculationService.prototype, "onMetricsUpdate$", {
1752
+ get: function () {
1753
+ return this.metricsUpdated$.asObservable();
1754
+ },
1755
+ enumerable: false,
1756
+ configurable: true
1757
+ });
1758
+ MetricsCalculationService.prototype.getMetricValue = function (metric) {
1759
+ return this.metricsData[metric] || 0;
1760
+ };
1761
+ MetricsCalculationService.prototype.updateMetrics = function (lineItems) {
1762
+ var _this = this;
1763
+ var metricKeys = this.collectMetricKeys(lineItems).filter(function (key) { return !key.includes('Effective_'); });
1764
+ this.metricsCalculationMethodMap = this.buildMetricsCalculationMethods(metricKeys, this.metricsCalculationMethodMap);
1765
+ this.metricsData = metricKeys.reduce(function (acc, key) {
1766
+ var _c;
1767
+ return (Object.assign(Object.assign({}, acc), (_c = {}, _c[key] = _this.calculateMetric(lineItems, key), _c)));
1768
+ }, {});
1769
+ this.metricsUpdated$.next();
1770
+ };
1771
+ MetricsCalculationService.prototype.calculateMetric = function (lineItems, metric) {
1772
+ return calculateMetricByMethod(lineItems, metric, this.metricsCalculationMethodMap[metric] || 'sum');
1773
+ };
1774
+ MetricsCalculationService.prototype.buildMetricsCalculationMethods = function (metricKeys, initial) {
1775
+ var _this = this;
1776
+ return metricKeys.reduce(function (acc, name) {
1777
+ var _c, _d;
1778
+ var _a, _b;
1779
+ if (acc[name]) {
1780
+ return acc;
1781
+ }
1782
+ acc = Object.assign(Object.assign({}, acc), (_c = {}, _c[name] = 'sum', _c));
1783
+ var metricRule = _this.getMetricRuleByTotalMetricName(name);
1784
+ var settingKey = ((_b = (_a = metricRule === null || metricRule === void 0 ? void 0 : metricRule.metrics) === null || _a === void 0 ? void 0 : _a.find(function (metric) { return metric.totalName === name; })) === null || _b === void 0 ? void 0 : _b.name) || name;
1785
+ if (_this.quoteMetricsSettings[settingKey]) {
1786
+ acc = Object.assign(Object.assign({}, acc), (_d = {}, _d[name] = _this.quoteMetricsSettings[settingKey], _d));
1787
+ }
1788
+ return acc;
1789
+ }, initial);
1790
+ };
1791
+ MetricsCalculationService.prototype.collectMetricKeys = function (lineItems) {
1792
+ var _this = this;
1793
+ var keys = [];
1794
+ lineItems.forEach(function (lineItem) {
1795
+ keys.push.apply(keys, __spreadArray([], __read(Object.keys(lineItem.totalMetrics || {}))));
1796
+ keys.push.apply(keys, __spreadArray([], __read(_this.collectMetricKeys(lineItem.lineItems))));
1797
+ });
1798
+ return lodash.uniq(keys);
1799
+ };
1800
+ MetricsCalculationService.prototype.getMetricRuleByTotalMetricName = function (name) {
1801
+ return this.activeMetricRules.find(function (metricRule) { return metricRule.metrics.find(function (metric) { return metric.totalName === name; }); });
1802
+ };
1803
+ return MetricsCalculationService;
1804
+ }());
1805
+ MetricsCalculationService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: MetricsCalculationService, deps: [{ token: QuoteDraftService }, { token: FlowConfigurationService }, { token: i1__namespace.ConfigurationSettingsApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1806
+ MetricsCalculationService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: MetricsCalculationService, providedIn: 'root' });
1807
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: MetricsCalculationService, decorators: [{
1808
+ type: i0.Injectable,
1809
+ args: [{ providedIn: 'root' }]
1810
+ }], ctorParameters: function () { return [{ type: QuoteDraftService }, { type: FlowConfigurationService }, { type: i1__namespace.ConfigurationSettingsApiService }]; } });
1811
+
1812
+ var ProductImagesService = /** @class */ (function () {
1813
+ function ProductImagesService(productApiService) {
1814
+ this.productApiService = productApiService;
1815
+ this.imagesMap$ = new rxjs.BehaviorSubject({});
1816
+ }
1817
+ ProductImagesService.prototype.getImageUrl$ = function (productId) {
1818
+ var _a;
1819
+ if (this.imagesMap$.value[productId] == null) {
1820
+ this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), (_a = {}, _a[productId] = '', _a)));
1821
+ this.fetchProductImage(productId);
1822
+ }
1823
+ return this.imagesMap$.pipe(rxjs.map(function (imagesMap) { return imagesMap[productId]; }), rxjs.distinctUntilChanged());
1824
+ };
1825
+ ProductImagesService.prototype.fetchProductImage = function (productId) {
1826
+ var _this = this;
1827
+ this.productApiService
1828
+ .fetchImage$(productId)
1829
+ .pipe(rxjs.map(function (file) { return URL.createObjectURL(file); }), rxjs.catchError(function () { return rxjs.of(''); }), rxjs.tap(function (url) {
1830
+ var _a;
1831
+ return _this.imagesMap$.next(Object.assign(Object.assign({}, _this.imagesMap$.value), (_a = {}, _a[productId] = url, _a)));
1832
+ }))
1833
+ .subscribe();
1834
+ };
1835
+ return ProductImagesService;
1836
+ }());
1837
+ ProductImagesService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProductImagesService, deps: [{ token: i1__namespace.ProductApiService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1838
+ ProductImagesService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProductImagesService, providedIn: 'root' });
1839
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProductImagesService, decorators: [{
1840
+ type: i0.Injectable,
1841
+ args: [{ providedIn: 'root' }]
1842
+ }], ctorParameters: function () { return [{ type: i1__namespace.ProductApiService }]; } });
1843
+
1715
1844
  var SdkCoreModule = /** @class */ (function () {
1716
1845
  function SdkCoreModule() {
1717
1846
  }
1718
1847
  return SdkCoreModule;
1719
1848
  }());
1720
- SdkCoreModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: SdkCoreModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1721
- SdkCoreModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] });
1722
- SdkCoreModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: SdkCoreModule, providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService], imports: [[ConfigurationModule, FlowConfigurationModule]] });
1723
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: SdkCoreModule, decorators: [{
1849
+ SdkCoreModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SdkCoreModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1850
+ SdkCoreModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] });
1851
+ SdkCoreModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SdkCoreModule, providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService], imports: [[ConfigurationModule, FlowConfigurationModule]] });
1852
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SdkCoreModule, decorators: [{
1724
1853
  type: i0.NgModule,
1725
1854
  args: [{
1726
1855
  imports: [ConfigurationModule, FlowConfigurationModule],
@@ -1743,6 +1872,9 @@
1743
1872
  exports.ProductImagesService = ProductImagesService;
1744
1873
  exports.QuoteDraftService = QuoteDraftService;
1745
1874
  exports.SdkCoreModule = SdkCoreModule;
1875
+ exports.UI_DEFINITION_VERSION = UI_DEFINITION_VERSION;
1876
+ exports.calculateCardinalityVariables = calculateCardinalityVariables;
1877
+ exports.extractMetadata = extractMetadata;
1746
1878
  exports.findLineItem = findLineItem;
1747
1879
  exports.findLineItemWithComparator = findLineItemWithComparator;
1748
1880
  exports.generateLineItem = generateLineItem;
@@ -1755,6 +1887,7 @@
1755
1887
  exports.mapAttributes = mapAttributes;
1756
1888
  exports.multiplyLineItems = multiplyLineItems;
1757
1889
  exports.patchAttributes = patchAttributes;
1890
+ exports.recalculateCardinalityVariables = recalculateCardinalityVariables;
1758
1891
  exports.removeLineItem = removeLineItem;
1759
1892
  exports.replaceLineItem = replaceLineItem;
1760
1893
  exports.upsertAttributes = upsertAttributes;