@veloceapps/sdk 7.0.2-3 → 7.0.2-31

Sign up to get free protection for your applications and to get access to all the features.
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