@veloceapps/sdk 7.0.2-3 → 7.0.2-31

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 (81) hide show
  1. package/cms/cms.actions.d.ts +30 -1
  2. package/cms/components/element-children/element-children.component.d.ts +3 -1
  3. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +14 -0
  4. package/cms/components/preview/preview.component.d.ts +1 -0
  5. package/cms/components/preview/preview.module.d.ts +2 -1
  6. package/cms/components/preview/preview.types.d.ts +4 -0
  7. package/cms/injection-tokens.d.ts +1 -3
  8. package/cms/modules/runtime/index.d.ts +1 -0
  9. package/cms/modules/runtime/services/compilation.service.d.ts +2 -1
  10. package/cms/modules/runtime/services/runtime-editor.service.d.ts +6 -4
  11. package/cms/modules/runtime/services/runtime.service.d.ts +5 -1
  12. package/cms/modules/runtime/types/runtime.actions.d.ts +5 -2
  13. package/cms/plugins/element-hover.plugin.d.ts +32 -0
  14. package/cms/plugins/page.plugin.d.ts +15 -0
  15. package/cms/plugins/script.plugin.d.ts +0 -3
  16. package/cms/types/common.types.d.ts +11 -1
  17. package/cms/types/index.d.ts +2 -0
  18. package/cms/types/layouts.types.d.ts +28 -2
  19. package/cms/types/pages.types.d.ts +1 -0
  20. package/cms/utils/elements-resolver.d.ts +5 -1
  21. package/cms/utils/script.utils.d.ts +2 -0
  22. package/cms/vendor-map.d.ts +9 -6
  23. package/core/modules/configuration/services/configuration.service.d.ts +3 -3
  24. package/core/services/index.d.ts +1 -0
  25. package/core/services/runtime-settings.service.d.ts +18 -0
  26. package/core/types/ui-definition.types.d.ts +7 -2
  27. package/core/utils/line-item.utils.d.ts +4 -2
  28. package/core/utils/line-item.worker.d.ts +2 -2
  29. package/esm2020/cms/cms.actions.mjs +42 -2
  30. package/esm2020/cms/cms.elements.mjs +16 -4
  31. package/esm2020/cms/cms.layouts.mjs +53 -1
  32. package/esm2020/cms/components/element-children/element-children.component.mjs +11 -6
  33. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +2 -2
  34. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +35 -0
  35. package/esm2020/cms/components/preview/preview.component.mjs +11 -7
  36. package/esm2020/cms/components/preview/preview.module.mjs +22 -4
  37. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  38. package/esm2020/cms/injection-tokens.mjs +1 -2
  39. package/esm2020/cms/modules/runtime/index.mjs +2 -1
  40. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +3 -3
  41. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +5 -3
  42. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +39 -5
  43. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +1 -1
  44. package/esm2020/cms/plugins/element-hover.plugin.mjs +112 -0
  45. package/esm2020/cms/plugins/page.plugin.mjs +37 -0
  46. package/esm2020/cms/plugins/script.plugin.mjs +6 -40
  47. package/esm2020/cms/services/integration.state.mjs +3 -6
  48. package/esm2020/cms/services/io-provider.service.mjs +7 -5
  49. package/esm2020/cms/types/common.types.mjs +1 -1
  50. package/esm2020/cms/types/index.mjs +3 -1
  51. package/esm2020/cms/types/layouts.types.mjs +70 -1
  52. package/esm2020/cms/types/pages.types.mjs +2 -0
  53. package/esm2020/cms/utils/elements-resolver.mjs +22 -8
  54. package/esm2020/cms/utils/script.utils.mjs +42 -0
  55. package/esm2020/cms/vendor-map.mjs +5 -3
  56. package/esm2020/core/core.module.mjs +16 -4
  57. package/esm2020/core/modules/configuration/services/configuration.service.mjs +6 -5
  58. package/esm2020/core/services/index.mjs +2 -1
  59. package/esm2020/core/services/runtime-settings.service.mjs +62 -0
  60. package/esm2020/core/types/ui-definition.types.mjs +1 -1
  61. package/esm2020/core/utils/line-item.utils.mjs +35 -16
  62. package/esm2020/core/utils/line-item.worker.mjs +5 -5
  63. package/esm2020/src/components/header/header.component.mjs +15 -3
  64. package/esm2020/src/components/header/metrics/metrics.component.mjs +9 -7
  65. package/esm2020/src/flow-routing.module.mjs +1 -1
  66. package/esm2020/src/guards/context.guard.mjs +11 -8
  67. package/fesm2015/veloceapps-sdk-cms.mjs +497 -150
  68. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  69. package/fesm2015/veloceapps-sdk-core.mjs +117 -27
  70. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  71. package/fesm2015/veloceapps-sdk.mjs +31 -13
  72. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  73. package/fesm2020/veloceapps-sdk-cms.mjs +578 -164
  74. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  75. package/fesm2020/veloceapps-sdk-core.mjs +117 -27
  76. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  77. package/fesm2020/veloceapps-sdk.mjs +30 -13
  78. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  79. package/package.json +1 -1
  80. package/src/components/header/metrics/metrics.component.d.ts +4 -2
  81. package/src/guards/context.guard.d.ts +3 -2
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, NgModule } from '@angular/core';
3
- import { UUID, ConfigurationContext, RuntimeModel, ConfigurationContextMode, SalesforceIdUtils, ConfigurationMode, ConfigurationTranslatorUtils, ChargeGroupUtils } from '@veloceapps/core';
3
+ import { UUID, ConfigurationContext, RuntimeModel, ConfigurationContextMode, SalesforceIdUtils, ConfigurationMode, ConfigurationTranslatorUtils, ChargeGroupUtils, parseJsonSafely } from '@veloceapps/core';
4
4
  import * as i1 from '@veloceapps/api';
5
5
  import { PriceApiService, ContextApiService, ProductModelApiService, ConfigurationApiService } from '@veloceapps/api';
6
6
  import { BehaviorSubject, combineLatest, zip, noop, throwError, shareReplay as shareReplay$1, tap as tap$1, map as map$2, of, switchMap as switchMap$1, catchError as catchError$1, Subject, take as take$1, distinctUntilChanged } from 'rxjs';
@@ -503,18 +503,25 @@ const removeLineItem = (lineItem, idToRemove) => {
503
503
  .filter(r => !!r),
504
504
  };
505
505
  };
506
- const replaceLineItem = (lineItem, replaceTo) => {
506
+ const replaceLineItem = (lineItem, replaceTo, skipCardinalityCalculation = false) => {
507
507
  if (lineItem.id === replaceTo.id) {
508
- return { ...recalculateCardinalityVariables(lineItem, replaceTo) };
508
+ if (!skipCardinalityCalculation) {
509
+ return { ...recalculateCardinalityVariables(lineItem, replaceTo) };
510
+ }
511
+ else {
512
+ return { ...replaceTo };
513
+ }
509
514
  }
510
515
  return {
511
516
  ...lineItem,
512
- lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo)),
517
+ lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),
513
518
  };
514
519
  };
515
520
  const calculateCardinalityVariables = (lineItems) => {
516
521
  const cardVars = new Map();
517
- lineItems.forEach(li => {
522
+ lineItems
523
+ .filter(({ port, type }) => !!port && !!type)
524
+ .forEach(li => {
518
525
  const cardinalityVariableName = `#CV-${li.type}@${li.port}`;
519
526
  cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);
520
527
  });
@@ -554,13 +561,13 @@ const upsertAttributes = (originalAttributes, attributesToUpsert) => {
554
561
  ];
555
562
  }, originalAttributes);
556
563
  };
557
- const patchAttributes = (rootLineItem, id, attrs) => {
564
+ const patchAttributes = (rootLineItem, id, attrs, skipCardinalityCalculation = false) => {
558
565
  const lineItem = findLineItem(id, [rootLineItem]);
559
566
  if (!lineItem) {
560
567
  return rootLineItem;
561
568
  }
562
569
  const attributes = upsertAttributes(lineItem.attributes, attrs);
563
- return replaceLineItem(rootLineItem, { ...lineItem, attributes });
570
+ return replaceLineItem(rootLineItem, { ...lineItem, attributes }, skipCardinalityCalculation);
564
571
  };
565
572
  const getAttributeValue = (attributes, name) => attributes.find(attr => attr.name === name)?.value;
566
573
  const generateLineItem = (port, type, parentId, attributes = [], lineItems = []) => {
@@ -588,19 +595,31 @@ const getRecommendedPrices = (portDomain, type) => {
588
595
  };
589
596
  const generateModifiedAssetsMap = (lineItems) => {
590
597
  return lineItems.reduce((acc, li) => {
591
- if (li.rampInstanceId && li.status !== 'EXIST') {
592
- let target = li;
593
- while (target && target.rampInstanceId) {
594
- target = lineItems.find(sub => sub.id === li.rampInstanceId);
595
- }
596
- const id = target?.assetId ?? target?.openOrderLineItemId;
597
- if (id) {
598
- acc[id] = true;
599
- }
598
+ const isModified = isLineItemModified(li);
599
+ if (!isModified) {
600
+ return acc;
601
+ }
602
+ const target = getOriginParent(lineItems, li);
603
+ const id = target?.assetId ?? target?.openOrderLineItemId;
604
+ if (id) {
605
+ acc[id] = true;
600
606
  }
601
607
  return acc;
602
608
  }, {});
603
609
  };
610
+ const getOriginParent = (lineItems, currentLineItem) => {
611
+ let target = currentLineItem;
612
+ while (target && target.rampInstanceId) {
613
+ target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);
614
+ }
615
+ return target;
616
+ };
617
+ const isLineItemModified = (lineItem) => {
618
+ if (lineItem.actionCode === 'EXIST' && lineItem.status === 'PENDING') {
619
+ return false;
620
+ }
621
+ return lineItem.actionCode !== 'EXIST';
622
+ };
604
623
  const multiplyLineItems = (lineItem, qty, split) => {
605
624
  if (split) {
606
625
  const unifyIds = (lineItem) => ({
@@ -629,8 +648,10 @@ var lineItem_utils = /*#__PURE__*/Object.freeze({
629
648
  generateModifiedAssetsMap: generateModifiedAssetsMap,
630
649
  getAttributeValue: getAttributeValue,
631
650
  getAttributes: getAttributes,
651
+ getOriginParent: getOriginParent,
632
652
  getRecommendedPrices: getRecommendedPrices,
633
653
  insertLineItem: insertLineItem,
654
+ isLineItemModified: isLineItemModified,
634
655
  mapAttributes: mapAttributes,
635
656
  multiplyLineItems: multiplyLineItems,
636
657
  patchAttributes: patchAttributes,
@@ -650,11 +671,11 @@ class LineItemWorker {
650
671
  remove(id) {
651
672
  return new LineItemWorker(removeLineItem(this.li, id));
652
673
  }
653
- replace(toReplace) {
654
- return new LineItemWorker(replaceLineItem(this.li, toReplace));
674
+ replace(toReplace, skipCardinalityCalculation = false) {
675
+ return new LineItemWorker(replaceLineItem(this.li, toReplace, skipCardinalityCalculation));
655
676
  }
656
- patchAttribute(attrs, id) {
657
- return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs));
677
+ patchAttribute(attrs, id, skipCardinalityCalculation = false) {
678
+ return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs, skipCardinalityCalculation));
658
679
  }
659
680
  }
660
681
 
@@ -680,11 +701,12 @@ class ConfigurationService {
680
701
  this.charges.next({});
681
702
  this.pricePlans.next({});
682
703
  }
683
- patch$(lineItem) {
704
+ patch$(lineItem, options) {
684
705
  if (!this.lineItem.value) {
685
706
  return throwError(() => new Error(`Source LineItem not found`));
686
707
  }
687
- this.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem).li;
708
+ const skipCardinalityCalculation = options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';
709
+ this.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem, skipCardinalityCalculation).li;
688
710
  return this.configure().pipe(catchError(error => {
689
711
  console.error(error);
690
712
  if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {
@@ -699,8 +721,8 @@ class ConfigurationService {
699
721
  }
700
722
  }));
701
723
  }
702
- patch(lineItem) {
703
- this.patch$(lineItem).subscribe();
724
+ patch(lineItem, options) {
725
+ this.patch$(lineItem, options).subscribe();
704
726
  }
705
727
  setConfigurableRamp(lineItem) {
706
728
  this.configurableRamp = lineItem;
@@ -1268,16 +1290,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
1268
1290
  args: [{ providedIn: 'root' }]
1269
1291
  }], ctorParameters: function () { return [{ type: i1.ProductApiService }]; } });
1270
1292
 
1293
+ class RuntimeSettingsService {
1294
+ constructor(configurationSettingsApiService) {
1295
+ this.configurationSettingsApiService = configurationSettingsApiService;
1296
+ this.configurationSettings$ = new BehaviorSubject({});
1297
+ this.currencySettings$ = new BehaviorSubject({
1298
+ iso: 'USD',
1299
+ symbol: '$',
1300
+ });
1301
+ this.getCurrencySymbol = (locale, currency) => {
1302
+ return (0)
1303
+ .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })
1304
+ .replace(/\d/g, '')
1305
+ .trim();
1306
+ };
1307
+ }
1308
+ create() {
1309
+ return this.configurationSettingsApiService.fetchSettings().pipe(map$2(settings => this.parseConfigurationSettings(settings)), tap$1(configurationSettings => this.configurationSettings$.next(configurationSettings)), map$2(() => undefined));
1310
+ }
1311
+ initCurrency(iso) {
1312
+ if (iso) {
1313
+ const symbol = this.getCurrencySymbol('en-US', iso);
1314
+ this.currencySettings$.next({ iso, symbol });
1315
+ }
1316
+ }
1317
+ getConfigurationSettings() {
1318
+ return this.configurationSettings$.value;
1319
+ }
1320
+ getCurrencySettings() {
1321
+ return this.currencySettings$.value;
1322
+ }
1323
+ parseConfigurationSettings(settings) {
1324
+ return settings.reduce((acc, setting) => {
1325
+ switch (setting.key) {
1326
+ case 'shopping-cart':
1327
+ acc['shopping-cart'] = parseJsonSafely(setting.value, []);
1328
+ break;
1329
+ case 'navigation':
1330
+ acc.navigation = parseJsonSafely(setting.value, {});
1331
+ break;
1332
+ case 'flows':
1333
+ acc.flows = parseJsonSafely(setting.value, []);
1334
+ break;
1335
+ default:
1336
+ acc[setting.key] = setting.value;
1337
+ }
1338
+ return acc;
1339
+ }, {});
1340
+ }
1341
+ }
1342
+ RuntimeSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeSettingsService, deps: [{ token: i1.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
1343
+ RuntimeSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeSettingsService, providedIn: 'root' });
1344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeSettingsService, decorators: [{
1345
+ type: Injectable,
1346
+ args: [{ providedIn: 'root' }]
1347
+ }], ctorParameters: function () { return [{ type: i1.ConfigurationSettingsApiService }]; } });
1348
+
1271
1349
  class SdkCoreModule {
1272
1350
  }
1273
1351
  SdkCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1274
1352
  SdkCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] });
1275
- SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService], imports: [ConfigurationModule, FlowConfigurationModule] });
1353
+ SdkCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, providers: [
1354
+ ContextService,
1355
+ QuoteDraftService,
1356
+ ProductImagesService,
1357
+ MetricsCalculationService,
1358
+ RuntimeSettingsService,
1359
+ ], imports: [ConfigurationModule, FlowConfigurationModule] });
1276
1360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SdkCoreModule, decorators: [{
1277
1361
  type: NgModule,
1278
1362
  args: [{
1279
1363
  imports: [ConfigurationModule, FlowConfigurationModule],
1280
- providers: [ContextService, QuoteDraftService, ProductImagesService, MetricsCalculationService],
1364
+ providers: [
1365
+ ContextService,
1366
+ QuoteDraftService,
1367
+ ProductImagesService,
1368
+ MetricsCalculationService,
1369
+ RuntimeSettingsService,
1370
+ ],
1281
1371
  }]
1282
1372
  }] });
1283
1373
 
@@ -1285,5 +1375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
1285
1375
  * Generated bundle index. Do not edit.
1286
1376
  */
1287
1377
 
1288
- export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeStep, SdkCoreModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getRecommendedPrices, insertLineItem, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
1378
+ export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeSettingsService, RuntimeStep, SdkCoreModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
1289
1379
  //# sourceMappingURL=veloceapps-sdk-core.mjs.map