@crystaldesign/web-planner-logic 26.8.0-beta.3 → 26.8.0-beta.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 (52) hide show
  1. package/build/cjs/{DivaBoxPlanner-918c1acc.js → DivaBoxPlanner-651e4672.js} +29 -31
  2. package/build/cjs/{DivaStandardPlanner-59aa2171.js → DivaStandardPlanner-c6c5463c.js} +3 -3
  3. package/build/cjs/{DoorPlanner-eddb88e7.js → DoorPlanner-58c28b85.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-729b5af1.js → Host3DSignalR-f228c610.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-3b54678e.js → LiviqueWWSHandler-fe01a475.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-5cb6da74.js → PfisterWWSHandler-009e5938.js} +10 -1
  7. package/build/cjs/{PlannerHandler2D-6884347b.js → PlannerHandler2D-96aec24b.js} +24 -9
  8. package/build/cjs/{SeriousBasketHandler-76e316d8.js → SeriousBasketHandler-f6c4cf9f.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-a5bc0cfa.js → ShelfPlanner-82e1d8f2.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-5a417412.js → StandardWWSHandler-2f6885c1.js} +1 -1
  11. package/build/cjs/{index-cd535960.js → index-f6950d9d.js} +334 -224
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-bbcd759e.js → DivaBoxPlanner-7b04b981.js} +29 -31
  14. package/build/esm/{DivaStandardPlanner-de0d17ea.js → DivaStandardPlanner-66d98f28.js} +3 -3
  15. package/build/esm/{DoorPlanner-3ffef3a1.js → DoorPlanner-4976af8c.js} +1 -1
  16. package/build/esm/{Host3DSignalR-2143e221.js → Host3DSignalR-07217ea7.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-7f997d91.js → LiviqueWWSHandler-546997f8.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-97602df8.js → PfisterWWSHandler-18a7f828.js} +10 -1
  19. package/build/esm/{PlannerHandler2D-4e43043b.js → PlannerHandler2D-cc67cb62.js} +24 -9
  20. package/build/esm/{SeriousBasketHandler-b9638fda.js → SeriousBasketHandler-3022bee6.js} +1 -1
  21. package/build/esm/{ShelfPlanner-f50e9483.js → ShelfPlanner-305ae4a8.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-99a090bc.js → StandardWWSHandler-e98bbbac.js} +1 -1
  23. package/build/esm/{index-2d218fcd.js → index-e386b6fa.js} +334 -224
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +1 -0
  26. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  28. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +1 -0
  30. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/logic/Article/Engine/DivaArticleEngine.d.ts.map +1 -1
  32. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/logic/Basket/PfisterWWSHandler.d.ts.map +1 -1
  34. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts +1 -0
  36. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +13 -0
  38. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts.map +1 -1
  40. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +1 -0
  42. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  44. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +1 -0
  46. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  48. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +9 -0
  49. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts.map +1 -1
  52. package/package.json +2 -2
@@ -75,6 +75,7 @@ var DivaApiHandler = /*#__PURE__*/function () {
75
75
  _defineProperty(this, "actions", void 0);
76
76
  _defineProperty(this, "state", void 0);
77
77
  _defineProperty(this, "i18n", void 0);
78
+ _defineProperty(this, "enricherErrorModalShown", false);
78
79
  _defineProperty(this, "getSessionGuid", void 0);
79
80
  _defineProperty(this, "useEkPrices", false);
80
81
  _defineProperty(this, "smSupplierNr", undefined);
@@ -215,10 +216,12 @@ var DivaApiHandler = /*#__PURE__*/function () {
215
216
  case 38:
216
217
  _context.prev = 38;
217
218
  _context.t5 = _context["catch"](5);
219
+ // Check if this is a rate limiting error (429)
220
+ this.notifyEnricherError(url, dontLogError);
218
221
  throw Error('fetch failed! ' + url + ' Error: ' + _context.t5, {
219
222
  cause: _context.t5 === null || _context.t5 === void 0 || (_e$response = _context.t5.response) === null || _e$response === void 0 || (_e$response = _e$response.data) === null || _e$response === void 0 ? void 0 : _e$response.error
220
223
  });
221
- case 41:
224
+ case 42:
222
225
  case "end":
223
226
  return _context.stop();
224
227
  }
@@ -229,11 +232,57 @@ var DivaApiHandler = /*#__PURE__*/function () {
229
232
  }
230
233
  return fetchData;
231
234
  }()
235
+ /**
236
+ * Surface critical failures to the user. A hard failure of any enricher call (catalog / serie /
237
+ * items / decisions / features ...) leaves the planner unable to load, so give the user actionable
238
+ * feedback instead of a silently broken UI. Optional enricher calls (e.g. the catalog mask) pass
239
+ * `dontLogError` and are skipped. Only one modal is shown at a time to avoid stacking on parallel failures.
240
+ */
241
+ }, {
242
+ key: "notifyEnricherError",
243
+ value: function notifyEnricherError(url, dontLogError) {
244
+ var _this$apiConfig,
245
+ _this$apiConfig2,
246
+ _this$apiConfig3,
247
+ _this$apiConfig4,
248
+ _this$apiConfig5,
249
+ _this$actions,
250
+ _this$i18n,
251
+ _translate$t,
252
+ _translate$t2,
253
+ _translate$t3,
254
+ _this = this;
255
+ if (dontLogError || this.enricherErrorModalShown) return;
256
+ var services = [(_this$apiConfig = this.apiConfig) === null || _this$apiConfig === void 0 ? void 0 : _this$apiConfig.enricherService, (_this$apiConfig2 = this.apiConfig) === null || _this$apiConfig2 === void 0 ? void 0 : _this$apiConfig2.idmService, (_this$apiConfig3 = this.apiConfig) === null || _this$apiConfig3 === void 0 ? void 0 : _this$apiConfig3.api2["default"], (_this$apiConfig4 = this.apiConfig) === null || _this$apiConfig4 === void 0 ? void 0 : _this$apiConfig4.api2.web, (_this$apiConfig5 = this.apiConfig) === null || _this$apiConfig5 === void 0 ? void 0 : _this$apiConfig5.api2.ek];
257
+ if (!services.some(function (service) {
258
+ return service && url.startsWith(service);
259
+ })) return;
260
+ if (!((_this$actions = this.actions) !== null && _this$actions !== void 0 && _this$actions.openModal)) return;
261
+ this.enricherErrorModalShown = true;
262
+ var translate = (_this$i18n = this.i18n) === null || _this$i18n === void 0 ? void 0 : _this$i18n.call(this);
263
+ this.actions.openModal({
264
+ title: (_translate$t = translate === null || translate === void 0 ? void 0 : translate.t('modals.error_accured')) !== null && _translate$t !== void 0 ? _translate$t : 'An error occured. Please try again later.',
265
+ accept: (_translate$t2 = translate === null || translate === void 0 ? void 0 : translate.t('modals.reload_page')) !== null && _translate$t2 !== void 0 ? _translate$t2 : 'Reload',
266
+ reject: (_translate$t3 = translate === null || translate === void 0 ? void 0 : translate.t('modals.close')) !== null && _translate$t3 !== void 0 ? _translate$t3 : 'Close',
267
+ callback: function callback(accepted) {
268
+ _this.enricherErrorModalShown = false;
269
+ if (accepted === true) {
270
+ if (_this.getApplicationEnvironment() === 'WEB' && typeof window !== 'undefined') window.location.reload();
271
+ } else if (accepted === false) {
272
+ var _this$actions2, _this$actions3;
273
+ (_this$actions2 = _this.actions) === null || _this$actions2 === void 0 || _this$actions2.onEvent({
274
+ type: 'onWebPlanerClose'
275
+ });
276
+ (_this$actions3 = _this.actions) === null || _this$actions3 === void 0 || _this$actions3.closeComponentInFullscreen();
277
+ }
278
+ }
279
+ });
280
+ }
232
281
  }, {
233
282
  key: "getDataWithoutCache",
234
283
  value: function () {
235
284
  var _getDataWithoutCache = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(queryString, init, useWebServiceApi) {
236
- var _this$apiConfig, _this$apiConfig2, api2Url;
285
+ var _this$apiConfig6, _this$apiConfig7, api2Url;
237
286
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
238
287
  while (1) switch (_context2.prev = _context2.next) {
239
288
  case 0:
@@ -275,8 +324,8 @@ var DivaApiHandler = /*#__PURE__*/function () {
275
324
  _context2.next = 24;
276
325
  break;
277
326
  case 14:
278
- api2Url = (_this$apiConfig = this.apiConfig) === null || _this$apiConfig === void 0 ? void 0 : _this$apiConfig.api2["default"];
279
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig2 = this.apiConfig) !== null && _this$apiConfig2 !== void 0 && _this$apiConfig2.api2.web) {
327
+ api2Url = (_this$apiConfig6 = this.apiConfig) === null || _this$apiConfig6 === void 0 ? void 0 : _this$apiConfig6.api2["default"];
328
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig7 = this.apiConfig) !== null && _this$apiConfig7 !== void 0 && _this$apiConfig7.api2.web) {
280
329
  api2Url = this.apiConfig.api2.web;
281
330
  }
282
331
  _context2.t0 = _objectSpread$q;
@@ -311,7 +360,7 @@ var DivaApiHandler = /*#__PURE__*/function () {
311
360
  value: function () {
312
361
  var _getDataCache = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(queryString, cacheMD5, accountSessionGuid, useWebServiceApi, method, data, dontLogError) {
313
362
  var _this$divaWebConfigDa, _this$divaWebConfigDa2;
314
- var myQS, url, init, addSession, cacheHit, _this$apiConfig3, _this$apiConfig4, api2Url, resolvedSessionGuid, result, _this$divaWebConfigDa3;
363
+ var myQS, url, init, addSession, cacheHit, _this$apiConfig8, _this$apiConfig9, api2Url, resolvedSessionGuid, result, _this$divaWebConfigDa3;
315
364
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
316
365
  while (1) switch (_context3.prev = _context3.next) {
317
366
  case 0:
@@ -379,8 +428,8 @@ var DivaApiHandler = /*#__PURE__*/function () {
379
428
  _context3.next = 35;
380
429
  break;
381
430
  case 25:
382
- api2Url = (_this$apiConfig3 = this.apiConfig) === null || _this$apiConfig3 === void 0 ? void 0 : _this$apiConfig3.api2["default"];
383
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig4 = this.apiConfig) !== null && _this$apiConfig4 !== void 0 && _this$apiConfig4.api2.web) {
431
+ api2Url = (_this$apiConfig8 = this.apiConfig) === null || _this$apiConfig8 === void 0 ? void 0 : _this$apiConfig8.api2["default"];
432
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig9 = this.apiConfig) !== null && _this$apiConfig9 !== void 0 && _this$apiConfig9.api2.web) {
384
433
  api2Url = this.apiConfig.api2.web;
385
434
  }
386
435
  this.apiCallCount += 1;
@@ -466,6 +515,10 @@ var DivaApiHandler = /*#__PURE__*/function () {
466
515
  }
467
516
  return saveAsProduct;
468
517
  }()
518
+ /**
519
+ * to run service on localhost
520
+ * diva3dRenderGroup :MYCCMEDIA
521
+ */
469
522
  }, {
470
523
  key: "initalizeWebConfigData",
471
524
  value: function initalizeWebConfigData(plannerConfig) {
@@ -540,38 +593,38 @@ var DivaApiHandler = /*#__PURE__*/function () {
540
593
  }, {
541
594
  key: "getReportServiceUrl",
542
595
  value: function getReportServiceUrl() {
543
- var _this$apiConfig$repor, _this$apiConfig5;
544
- return (_this$apiConfig$repor = (_this$apiConfig5 = this.apiConfig) === null || _this$apiConfig5 === void 0 ? void 0 : _this$apiConfig5.reportService) !== null && _this$apiConfig$repor !== void 0 ? _this$apiConfig$repor : '';
596
+ var _this$apiConfig$repor, _this$apiConfig10;
597
+ return (_this$apiConfig$repor = (_this$apiConfig10 = this.apiConfig) === null || _this$apiConfig10 === void 0 ? void 0 : _this$apiConfig10.reportService) !== null && _this$apiConfig$repor !== void 0 ? _this$apiConfig$repor : '';
545
598
  }
546
599
  }, {
547
600
  key: "getDivaSupportServiceUrl",
548
601
  value: function getDivaSupportServiceUrl() {
549
- var _this$apiConfig$suppo, _this$apiConfig6;
550
- return (_this$apiConfig$suppo = (_this$apiConfig6 = this.apiConfig) === null || _this$apiConfig6 === void 0 ? void 0 : _this$apiConfig6.supportService) !== null && _this$apiConfig$suppo !== void 0 ? _this$apiConfig$suppo : '';
602
+ var _this$apiConfig$suppo, _this$apiConfig11;
603
+ return (_this$apiConfig$suppo = (_this$apiConfig11 = this.apiConfig) === null || _this$apiConfig11 === void 0 ? void 0 : _this$apiConfig11.supportService) !== null && _this$apiConfig$suppo !== void 0 ? _this$apiConfig$suppo : '';
551
604
  }
552
605
  }, {
553
606
  key: "getDivaMediaServiceUrl",
554
607
  value: function getDivaMediaServiceUrl() {
555
- var _this$apiConfig$media, _this$apiConfig7;
556
- return (_this$apiConfig$media = (_this$apiConfig7 = this.apiConfig) === null || _this$apiConfig7 === void 0 ? void 0 : _this$apiConfig7.mediaService) !== null && _this$apiConfig$media !== void 0 ? _this$apiConfig$media : '';
608
+ var _this$apiConfig$media, _this$apiConfig12;
609
+ return (_this$apiConfig$media = (_this$apiConfig12 = this.apiConfig) === null || _this$apiConfig12 === void 0 ? void 0 : _this$apiConfig12.mediaService) !== null && _this$apiConfig$media !== void 0 ? _this$apiConfig$media : '';
557
610
  }
558
611
  }, {
559
612
  key: "getDivaAiServiceUrl",
560
613
  value: function getDivaAiServiceUrl() {
561
- var _this$apiConfig$aiSer, _this$apiConfig8;
562
- return (_this$apiConfig$aiSer = (_this$apiConfig8 = this.apiConfig) === null || _this$apiConfig8 === void 0 ? void 0 : _this$apiConfig8.aiService) !== null && _this$apiConfig$aiSer !== void 0 ? _this$apiConfig$aiSer : '';
614
+ var _this$apiConfig$aiSer, _this$apiConfig13;
615
+ return (_this$apiConfig$aiSer = (_this$apiConfig13 = this.apiConfig) === null || _this$apiConfig13 === void 0 ? void 0 : _this$apiConfig13.aiService) !== null && _this$apiConfig$aiSer !== void 0 ? _this$apiConfig$aiSer : '';
563
616
  }
564
617
  }, {
565
618
  key: "getConstructorServiceUrl",
566
619
  value: function getConstructorServiceUrl() {
567
- var _this$apiConfig$const, _this$apiConfig9;
568
- return (_this$apiConfig$const = (_this$apiConfig9 = this.apiConfig) === null || _this$apiConfig9 === void 0 ? void 0 : _this$apiConfig9.constructorService) !== null && _this$apiConfig$const !== void 0 ? _this$apiConfig$const : '';
620
+ var _this$apiConfig$const, _this$apiConfig14;
621
+ return (_this$apiConfig$const = (_this$apiConfig14 = this.apiConfig) === null || _this$apiConfig14 === void 0 ? void 0 : _this$apiConfig14.constructorService) !== null && _this$apiConfig$const !== void 0 ? _this$apiConfig$const : '';
569
622
  }
570
623
  }, {
571
624
  key: "getDivaBasketServiceUrl",
572
625
  value: function getDivaBasketServiceUrl() {
573
- var _this$apiConfig$baske, _this$apiConfig10;
574
- return (_this$apiConfig$baske = (_this$apiConfig10 = this.apiConfig) === null || _this$apiConfig10 === void 0 ? void 0 : _this$apiConfig10.basketService) !== null && _this$apiConfig$baske !== void 0 ? _this$apiConfig$baske : '';
626
+ var _this$apiConfig$baske, _this$apiConfig15;
627
+ return (_this$apiConfig$baske = (_this$apiConfig15 = this.apiConfig) === null || _this$apiConfig15 === void 0 ? void 0 : _this$apiConfig15.basketService) !== null && _this$apiConfig$baske !== void 0 ? _this$apiConfig$baske : '';
575
628
  }
576
629
  }, {
577
630
  key: "getLoadProductBasketParams",
@@ -582,8 +635,8 @@ var DivaApiHandler = /*#__PURE__*/function () {
582
635
  }, {
583
636
  key: "get3DServerUrl",
584
637
  value: function get3DServerUrl() {
585
- var _this$apiConfig$host, _this$apiConfig11;
586
- return (_this$apiConfig$host = (_this$apiConfig11 = this.apiConfig) === null || _this$apiConfig11 === void 0 ? void 0 : _this$apiConfig11.host3d) !== null && _this$apiConfig$host !== void 0 ? _this$apiConfig$host : '';
638
+ var _this$apiConfig$host, _this$apiConfig16;
639
+ return (_this$apiConfig$host = (_this$apiConfig16 = this.apiConfig) === null || _this$apiConfig16 === void 0 ? void 0 : _this$apiConfig16.host3d) !== null && _this$apiConfig$host !== void 0 ? _this$apiConfig$host : '';
587
640
  }
588
641
  }, {
589
642
  key: "doCheckForProductsPrice",
@@ -652,9 +705,9 @@ var DivaApiHandler = /*#__PURE__*/function () {
652
705
  }, {
653
706
  key: "getBaseUrl",
654
707
  value: function getBaseUrl() {
655
- var _this$apiConfig12, _this$apiConfig13;
656
- var url = (_this$apiConfig12 = this.apiConfig) === null || _this$apiConfig12 === void 0 ? void 0 : _this$apiConfig12.api2["default"];
657
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig13 = this.apiConfig) !== null && _this$apiConfig13 !== void 0 && _this$apiConfig13.api2.web) {
708
+ var _this$apiConfig17, _this$apiConfig18;
709
+ var url = (_this$apiConfig17 = this.apiConfig) === null || _this$apiConfig17 === void 0 ? void 0 : _this$apiConfig17.api2["default"];
710
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig18 = this.apiConfig) !== null && _this$apiConfig18 !== void 0 && _this$apiConfig18.api2.web) {
658
711
  url = this.apiConfig.api2.web;
659
712
  }
660
713
  if (!url) throw new Error('No API2 defined');
@@ -770,14 +823,14 @@ var DivaApiHandler = /*#__PURE__*/function () {
770
823
  }, {
771
824
  key: "getI18n",
772
825
  value: function getI18n() {
773
- var _this$i18n;
774
- return (_this$i18n = this.i18n) === null || _this$i18n === void 0 ? void 0 : _this$i18n.call(this);
826
+ var _this$i18n2;
827
+ return (_this$i18n2 = this.i18n) === null || _this$i18n2 === void 0 ? void 0 : _this$i18n2.call(this);
775
828
  }
776
829
  }, {
777
830
  key: "setAccountSessionGuid",
778
831
  value: function () {
779
832
  var _setAccountSessionGuid = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(_ref) {
780
- var os, accountGuid, catalogGuid, response, _this$actions, _this$state$navigatio, _this$state;
833
+ var os, accountGuid, catalogGuid, response, _this$actions4, _this$state$navigatio, _this$state;
781
834
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
782
835
  while (1) switch (_context5.prev = _context5.next) {
783
836
  case 0:
@@ -816,7 +869,7 @@ var DivaApiHandler = /*#__PURE__*/function () {
816
869
  break;
817
870
  case 16:
818
871
  if (this.applicationEnvironment == 'SELLER') {
819
- (_this$actions = this.actions) === null || _this$actions === void 0 || _this$actions.openComponent((_this$state$navigatio = (_this$state = this.state) === null || _this$state === void 0 || (_this$state = _this$state.navigationConfiguration) === null || _this$state === void 0 ? void 0 : _this$state.logoAction) !== null && _this$state$navigatio !== void 0 ? _this$state$navigatio : {
872
+ (_this$actions4 = this.actions) === null || _this$actions4 === void 0 || _this$actions4.openComponent((_this$state$navigatio = (_this$state = this.state) === null || _this$state === void 0 || (_this$state = _this$state.navigationConfiguration) === null || _this$state === void 0 ? void 0 : _this$state.logoAction) !== null && _this$state$navigatio !== void 0 ? _this$state$navigatio : {
820
873
  type: 'SELLER',
821
874
  parameters: {
822
875
  module: 'Collections'
@@ -915,39 +968,39 @@ var DivaApiHandler = /*#__PURE__*/function () {
915
968
  }, {
916
969
  key: "apiUrl",
917
970
  value: function apiUrl(queryString, useWebServiceApi) {
918
- var _this$apiConfig24, _this$apiConfig25, _this$apiConfig26;
971
+ var _this$apiConfig29, _this$apiConfig30, _this$apiConfig31;
919
972
  if (useWebServiceApi == 'catalog') {
920
- var _this$apiConfig14, _this$apiConfig15;
921
- if (!((_this$apiConfig14 = this.apiConfig) !== null && _this$apiConfig14 !== void 0 && _this$apiConfig14.catalogService)) throw new Error('No catalog Service defined');
922
- return ((_this$apiConfig15 = this.apiConfig) === null || _this$apiConfig15 === void 0 ? void 0 : _this$apiConfig15.catalogService) + queryString;
973
+ var _this$apiConfig19, _this$apiConfig20;
974
+ if (!((_this$apiConfig19 = this.apiConfig) !== null && _this$apiConfig19 !== void 0 && _this$apiConfig19.catalogService)) throw new Error('No catalog Service defined');
975
+ return ((_this$apiConfig20 = this.apiConfig) === null || _this$apiConfig20 === void 0 ? void 0 : _this$apiConfig20.catalogService) + queryString;
923
976
  }
924
977
  if (useWebServiceApi == 'basket') {
925
- var _this$apiConfig16, _this$apiConfig17;
926
- if (!((_this$apiConfig16 = this.apiConfig) !== null && _this$apiConfig16 !== void 0 && _this$apiConfig16.basketService)) throw new Error('No basket Service defined');
927
- return ((_this$apiConfig17 = this.apiConfig) === null || _this$apiConfig17 === void 0 ? void 0 : _this$apiConfig17.basketService) + queryString;
978
+ var _this$apiConfig21, _this$apiConfig22;
979
+ if (!((_this$apiConfig21 = this.apiConfig) !== null && _this$apiConfig21 !== void 0 && _this$apiConfig21.basketService)) throw new Error('No basket Service defined');
980
+ return ((_this$apiConfig22 = this.apiConfig) === null || _this$apiConfig22 === void 0 ? void 0 : _this$apiConfig22.basketService) + queryString;
928
981
  }
929
982
  if (useWebServiceApi == 'report') {
930
- var _this$apiConfig18, _this$apiConfig19;
931
- if (!((_this$apiConfig18 = this.apiConfig) !== null && _this$apiConfig18 !== void 0 && _this$apiConfig18.reportService)) throw new Error('No report Service defined');
932
- return ((_this$apiConfig19 = this.apiConfig) === null || _this$apiConfig19 === void 0 ? void 0 : _this$apiConfig19.reportService) + queryString;
983
+ var _this$apiConfig23, _this$apiConfig24;
984
+ if (!((_this$apiConfig23 = this.apiConfig) !== null && _this$apiConfig23 !== void 0 && _this$apiConfig23.reportService)) throw new Error('No report Service defined');
985
+ return ((_this$apiConfig24 = this.apiConfig) === null || _this$apiConfig24 === void 0 ? void 0 : _this$apiConfig24.reportService) + queryString;
933
986
  }
934
987
  if (useWebServiceApi == 'enricher') {
935
- var _this$apiConfig22, _this$apiConfig23;
988
+ var _this$apiConfig27, _this$apiConfig28;
936
989
  if (this.useIDMService) {
937
- var _this$apiConfig20, _this$apiConfig21;
938
- if (!((_this$apiConfig20 = this.apiConfig) !== null && _this$apiConfig20 !== void 0 && _this$apiConfig20.idmService)) throw new Error('No report Service defined');
939
- return ((_this$apiConfig21 = this.apiConfig) === null || _this$apiConfig21 === void 0 ? void 0 : _this$apiConfig21.idmService) + queryString;
990
+ var _this$apiConfig25, _this$apiConfig26;
991
+ if (!((_this$apiConfig25 = this.apiConfig) !== null && _this$apiConfig25 !== void 0 && _this$apiConfig25.idmService)) throw new Error('No report Service defined');
992
+ return ((_this$apiConfig26 = this.apiConfig) === null || _this$apiConfig26 === void 0 ? void 0 : _this$apiConfig26.idmService) + queryString;
940
993
  }
941
- if (!((_this$apiConfig22 = this.apiConfig) !== null && _this$apiConfig22 !== void 0 && _this$apiConfig22.enricherService)) throw new Error('No report Service defined');
942
- return ((_this$apiConfig23 = this.apiConfig) === null || _this$apiConfig23 === void 0 ? void 0 : _this$apiConfig23.enricherService) + queryString;
994
+ if (!((_this$apiConfig27 = this.apiConfig) !== null && _this$apiConfig27 !== void 0 && _this$apiConfig27.enricherService)) throw new Error('No report Service defined');
995
+ return ((_this$apiConfig28 = this.apiConfig) === null || _this$apiConfig28 === void 0 ? void 0 : _this$apiConfig28.enricherService) + queryString;
943
996
  }
944
- var url = (_this$apiConfig24 = this.apiConfig) === null || _this$apiConfig24 === void 0 ? void 0 : _this$apiConfig24.api2["default"];
945
- if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig25 = this.apiConfig) !== null && _this$apiConfig25 !== void 0 && _this$apiConfig25.api2.web) {
997
+ var url = (_this$apiConfig29 = this.apiConfig) === null || _this$apiConfig29 === void 0 ? void 0 : _this$apiConfig29.api2["default"];
998
+ if (this.getApplicationEnvironment() == 'WEB' && (_this$apiConfig30 = this.apiConfig) !== null && _this$apiConfig30 !== void 0 && _this$apiConfig30.api2.web) {
946
999
  url = this.apiConfig.api2.web;
947
1000
  }
948
- if (this.useEkPrices && (_this$apiConfig26 = this.apiConfig) !== null && _this$apiConfig26 !== void 0 && _this$apiConfig26.api2.ek) {
949
- var _this$apiConfig27;
950
- url = (_this$apiConfig27 = this.apiConfig) === null || _this$apiConfig27 === void 0 ? void 0 : _this$apiConfig27.api2.ek;
1001
+ if (this.useEkPrices && (_this$apiConfig31 = this.apiConfig) !== null && _this$apiConfig31 !== void 0 && _this$apiConfig31.api2.ek) {
1002
+ var _this$apiConfig32;
1003
+ url = (_this$apiConfig32 = this.apiConfig) === null || _this$apiConfig32 === void 0 ? void 0 : _this$apiConfig32.api2.ek;
951
1004
  }
952
1005
  if (!url) throw new Error('No API2 defined');
953
1006
  return url + '?' + queryString;
@@ -1153,6 +1206,11 @@ var DivaApiHandler = /*#__PURE__*/function () {
1153
1206
  value: function getIDMDecisions(packageId, decisions) {
1154
1207
  return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/decisions' + '?decisionNos=' + decisions.join(';') + (this.smSupplierNr ? '&supplierNo=' + this.smSupplierNr : '');
1155
1208
  }
1209
+ }, {
1210
+ key: "getIDMDecisionsQueryUrl",
1211
+ value: function getIDMDecisionsQueryUrl(packageId) {
1212
+ return this.idmPrefix + (this.isSeller ? '/packages/' : '/catalogs/') + packageId + '/decisions/query' + (this.smSupplierNr ? '?supplierNo=' + this.smSupplierNr : '');
1213
+ }
1156
1214
  }, {
1157
1215
  key: "getIDMDetailInfos",
1158
1216
  value: function getIDMDetailInfos(packageId, detailinfos) {
@@ -1494,12 +1552,12 @@ var DivaApiHandler = /*#__PURE__*/function () {
1494
1552
  key: "getDimensionbyId",
1495
1553
  value: function () {
1496
1554
  var _getDimensionbyId = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee15(id, iln, catalogCodex, plannedOptions) {
1497
- var _this$apiConfig28;
1555
+ var _this$apiConfig33;
1498
1556
  var fullUrl, res, headers;
1499
1557
  return _regeneratorRuntime.wrap(function _callee15$(_context15) {
1500
1558
  while (1) switch (_context15.prev = _context15.next) {
1501
1559
  case 0:
1502
- fullUrl = this.getConstructorServiceUrl() + '/dimension/' + id + '?iln=' + iln + '&catalogCodex=' + catalogCodex + '&debug=' + ((_this$apiConfig28 = this.apiConfig) === null || _this$apiConfig28 === void 0 ? void 0 : _this$apiConfig28.useDebugUrl);
1560
+ fullUrl = this.getConstructorServiceUrl() + '/dimension/' + id + '?iln=' + iln + '&catalogCodex=' + catalogCodex + '&debug=' + ((_this$apiConfig33 = this.apiConfig) === null || _this$apiConfig33 === void 0 ? void 0 : _this$apiConfig33.useDebugUrl);
1503
1561
  headers = {};
1504
1562
  if (this.jwt) headers = {
1505
1563
  Authorization: 'Bearer ' + this.jwt
@@ -16871,6 +16929,9 @@ var CatalogArticleData = /*#__PURE__*/function () {
16871
16929
  case 'ACCESSOIRE_POS_PRIO':
16872
16930
  this._catalogArticle.accPosPrio = Number(prop.Value);
16873
16931
  break;
16932
+ case 'ADD_AS_ZKAT':
16933
+ this._catalogArticle.addAsZKAT = prop.Value === 'true' || prop.Value === '1';
16934
+ break;
16874
16935
  case 'HEIGHTGRIDUSED':
16875
16936
  this._catalogArticle.heightGridUsed = Number(prop.Value);
16876
16937
  break;
@@ -17332,6 +17393,11 @@ var CatalogArticleData = /*#__PURE__*/function () {
17332
17393
  get: function get() {
17333
17394
  return this._catalogArticle.accPosPrio;
17334
17395
  }
17396
+ }, {
17397
+ key: "addAsZKAT",
17398
+ get: function get() {
17399
+ return this._catalogArticle.addAsZKAT;
17400
+ }
17335
17401
  }, {
17336
17402
  key: "overwriteParentWidth",
17337
17403
  get: function get() {
@@ -17979,18 +18045,18 @@ function getCatalogOptionValueDataType(codex, jsonOPV, catalogData) {
17979
18045
  }
17980
18046
  function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogProps, plannerPaletteViewInfo) {
17981
18047
  //Hier muss es dann reingespeichert werden catalogPlannerArticlesView;
17982
- var getFilterType = function getFilterType(hasArticleRelation, AVLFilter, AVRFilter, catalogProps) {
18048
+ var getFilterType = function getFilterType(hasArticleRelation, hasAVL, hasAVR, catalogProps) {
17983
18049
  var ret;
17984
18050
  if (hasArticleRelation) {
17985
18051
  if (!catalogProps.showAllItemsInPlanner && !catalogProps.showAccOnDpOnly) plannerPaletteViewInfo.filterType['Accessoire'] = true;
17986
18052
  ret = 'Accessoire';
17987
- } else if (AVLFilter.length > 0 && AVRFilter.length > 0) {
18053
+ } else if (hasAVL && hasAVR) {
17988
18054
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockLR'] = true;
17989
18055
  ret = 'DockLR';
17990
- } else if (AVLFilter.length > 0) {
18056
+ } else if (hasAVL) {
17991
18057
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockR'] = true;
17992
18058
  ret = 'DockR';
17993
- } else if (AVRFilter.length > 0) {
18059
+ } else if (hasAVR) {
17994
18060
  if (!catalogProps.showAllItemsInPlanner) plannerPaletteViewInfo.filterType['DockL'] = true;
17995
18061
  ret = 'DockL';
17996
18062
  } else {
@@ -18084,12 +18150,9 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18084
18150
  if (catalogProps.diva3dPlanerShowArticleAsSvg && topSvg.SVG) {
18085
18151
  image = getSVGUrl(topSvg.SVG, mediaUrl);
18086
18152
  }
18087
- if (topSvg.HasAVL && catPlanArticle.avlFilter.length == 0) {
18088
- catPlanArticle.avlFilter = ['ALWAYS_DOCKABLE'];
18089
- }
18090
- if (topSvg.HasAVR && catPlanArticle.avrFilter.length == 0) {
18091
- catPlanArticle.avrFilter = ['ALWAYS_DOCKABLE'];
18092
- }
18153
+
18154
+ // An empty AVL/AVR filter means "no connector restriction" and is treated as a match by the
18155
+ // docking/palette comparison (see checkDPFilterDoMatch / checkDPAV*FilterDoMatch). No sentinel needed.
18093
18156
 
18094
18157
  //Wäre für Rofl Benz gedacht um die Information zu speichern welche Artikel in welcher Ausrichtung ausmultipliziert werden
18095
18158
  if (topSvg.JsFormula.includes('202_LI')) {
@@ -18097,7 +18160,7 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18097
18160
  } else if (topSvg.JsFormula.includes('202_RE')) {
18098
18161
  elementName = elementName + ' (Rechts)';
18099
18162
  }
18100
- var filterType = getFilterType(catPlanArticle.isArticleRelation, topSvg.HasAVL ? catPlanArticle.avlFilter : [], topSvg.HasAVR ? catPlanArticle.avrFilter : [], catalogProps);
18163
+ var filterType = getFilterType(catPlanArticle.isArticleRelation, !!topSvg.HasAVL, !!topSvg.HasAVR, catalogProps);
18101
18164
  catPlanArticle.filterType = filterType;
18102
18165
  //ausmultiplizierte Elemente (über meherere SVGs)
18103
18166
  var catPlanArtView = {
@@ -18150,7 +18213,7 @@ function initCatalogPlannerArticleView$1(catalogData, catPlanArticle, catalogPro
18150
18213
  }
18151
18214
  if (!catPlanArticle.hasTopSvgsWithFormula || catPlanArticle.topSvgsWithFormula.length == 1) {
18152
18215
  var _catalogArticle$artic2;
18153
- var _filterType = getFilterType(catPlanArticle.isArticleRelation, catPlanArticle.topHasAVL ? catPlanArticle.avlFilter : [], catPlanArticle.topHasAVR ? catPlanArticle.avrFilter : [], catalogProps);
18216
+ var _filterType = getFilterType(catPlanArticle.isArticleRelation, !!catPlanArticle.topHasAVL, !!catPlanArticle.topHasAVR, catalogProps);
18154
18217
  catPlanArticle.filterType = _filterType;
18155
18218
  //Artikelbild ist abh�ngig von DIVA3DPlanerShowArticleAsSvg das SVG des Elements
18156
18219
  if (catalogProps.diva3dPlanerShowArticleAsSvg && (catPlanArticle.hasTopSvg || catPlanArticle.hasTopSvgsWithFormula)) {
@@ -19693,7 +19756,15 @@ function _loadMoreFromIDMArticles() {
19693
19756
  }).map(function (a) {
19694
19757
  return a.featureClassRefNo;
19695
19758
  })));
19696
- promises = [set.api.getDataCache(set.api.getIDMFeatureClass(set.CatalogData.accountGuid, toLoadFeatureClassRefNo), undefined, undefined, 'enricher'), toLoadPFGroups.length ? set.api.getDataCache(set.api.getIDMPriceFeatureGroups(set.CatalogData.accountGuid, toLoadPFGroups), undefined, undefined, 'enricher') : undefined, toLoadDecisionIds.length ? set.api.getDataCache(set.api.getIDMDecisions(set.CatalogData.accountGuid, toLoadDecisionIds), undefined, undefined, 'enricher') : undefined];
19759
+ promises = [set.api.getDataCache(set.api.getIDMFeatureClass(set.CatalogData.accountGuid, toLoadFeatureClassRefNo), undefined, undefined, 'enricher'), toLoadPFGroups.length ? set.api.getDataCache(set.api.getIDMPriceFeatureGroups(set.CatalogData.accountGuid, toLoadPFGroups), undefined, undefined, 'enricher') : undefined, toLoadDecisionIds.length ? function () {
19760
+ var getUrl = set.api.getIDMDecisions(set.CatalogData.accountGuid, toLoadDecisionIds);
19761
+ if (getUrl.length > 2000) {
19762
+ return set.api.getDataCache(set.api.getIDMDecisionsQueryUrl(set.CatalogData.accountGuid), undefined, undefined, 'enricher', 'POST', {
19763
+ decisionNos: toLoadDecisionIds.join(';')
19764
+ });
19765
+ }
19766
+ return set.api.getDataCache(getUrl, undefined, undefined, 'enricher');
19767
+ }() : undefined];
19697
19768
  _context5.next = 16;
19698
19769
  return Promise.all(promises);
19699
19770
  case 16:
@@ -20322,9 +20393,12 @@ function initIDMArticles(jsonItems, catalogData) {
20322
20393
  }
20323
20394
  }
20324
20395
  function getCatalogArticle(article, catalogData) {
20325
- var _catalogData$catalogM, _article$typeKey, _article$salesNumber, _ref, _articleMask$name, _article$fullText, _article$fullText2, _article$fullText3, _articleMask$properti, _article$depthBasicSh, _article$depthBasicSh2, _article$depthBasicSh3, _article$widthBasicSh, _article$widthBasicSh2, _article$widthBasicSh3, _article$heightBasicS, _article$heightBasicS2, _article$heightBasicS3, _article$weightNetto, _article$detailInfos, _article$detailInfos2, _article$detailInfos3, _articleMask$groupnam, _articleMask$groupnam2;
20396
+ var _catalogData$catalogM, _article$typeKey, _article$salesNumber, _articleMask$name, _articleMask$properti, _article$depthBasicSh, _article$depthBasicSh2, _article$depthBasicSh3, _article$widthBasicSh, _article$widthBasicSh2, _article$widthBasicSh3, _article$heightBasicS, _article$heightBasicS2, _article$heightBasicS3, _article$weightNetto, _article$detailInfos, _article$detailInfos2, _article$detailInfos3, _articleMask$groupnam, _articleMask$groupnam2;
20326
20397
  var articleMask = (_catalogData$catalogM = catalogData.catalogMask) === null || _catalogData$catalogM === void 0 || (_catalogData$catalogM = _catalogData$catalogM.articles) === null || _catalogData$catalogM === void 0 ? void 0 : _catalogData$catalogM[article.typeNo];
20327
20398
  var lang = catalogData.api.getLanguageLowercase();
20399
+ // empty locale objects ({} or only empty strings) are truthy, so ?? alone doesn't fall back
20400
+ var fullText = hasLocaleText(article.fullText) ? article.fullText : article.shortText;
20401
+ var shortText = hasLocaleText(article.shortText) ? article.shortText : article.fullText;
20328
20402
  var featureProperties = convertProperties(article.properties, lang, 'featureNos');
20329
20403
  var optionProperties = convertProperties(article.properties, lang, 'optionKeys');
20330
20404
  return {
@@ -20347,14 +20421,14 @@ function getCatalogArticle(article, catalogData) {
20347
20421
  hasArticleRelations: false,
20348
20422
  hasPartlistArticle: !!article.partListRef,
20349
20423
  hasType1Dependencies: false,
20350
- name: DivaUtils.getLocals((_ref = (_articleMask$name = articleMask === null || articleMask === void 0 ? void 0 : articleMask.name) !== null && _articleMask$name !== void 0 ? _articleMask$name : article.fullText) !== null && _ref !== void 0 ? _ref : article.shortText, lang),
20351
- longDescription: DivaUtils.getLocals((_article$fullText = article.fullText) !== null && _article$fullText !== void 0 ? _article$fullText : article.shortText, lang),
20352
- longDescription_locales: (_article$fullText2 = article.fullText) !== null && _article$fullText2 !== void 0 ? _article$fullText2 : article.shortText,
20424
+ name: DivaUtils.getLocals((_articleMask$name = articleMask === null || articleMask === void 0 ? void 0 : articleMask.name) !== null && _articleMask$name !== void 0 ? _articleMask$name : fullText, lang),
20425
+ longDescription: DivaUtils.getLocals(fullText, lang),
20426
+ longDescription_locales: fullText,
20353
20427
  isHidden: !!(articleMask !== null && articleMask !== void 0 && articleMask.hidden),
20354
- origName: DivaUtils.getLocals((_article$fullText3 = article.fullText) !== null && _article$fullText3 !== void 0 ? _article$fullText3 : article.shortText, lang),
20355
- shortName: DivaUtils.getLocals(article.shortText, lang),
20356
- origShortName: DivaUtils.getLocals(article.shortText, lang),
20357
- shortName_locales: article.shortText,
20428
+ origName: DivaUtils.getLocals(fullText, lang),
20429
+ shortName: DivaUtils.getLocals(shortText, lang),
20430
+ origShortName: DivaUtils.getLocals(shortText, lang),
20431
+ shortName_locales: shortText,
20358
20432
  properties: [].concat(_toConsumableArray(convertProperties(article.properties, lang)), _toConsumableArray((_articleMask$properti = articleMask === null || articleMask === void 0 ? void 0 : articleMask.properties) !== null && _articleMask$properti !== void 0 ? _articleMask$properti : [])),
20359
20433
  optionProperties: optionProperties,
20360
20434
  featureProperties: featureProperties,
@@ -20414,6 +20488,11 @@ function getCatalogArticle(article, catalogData) {
20414
20488
  modelName3D: jsonArticle.ModelName3D && jsonArticle.ModelName3D != '' ? jsonArticle.ModelName3D : undefined,
20415
20489
  */
20416
20490
 
20491
+ function hasLocaleText(locales) {
20492
+ return !!locales && Object.values(locales).some(function (v) {
20493
+ return !!(v !== null && v !== void 0 && v.trim());
20494
+ });
20495
+ }
20417
20496
  function getLowResUrl(url) {
20418
20497
  return url === null || url === void 0 ? void 0 : url.replace('.jpg', '_low.jpg').replace('.jpeg', '_low.jpeg').replace('.png', '_low.png');
20419
20498
  }
@@ -20654,6 +20733,8 @@ var DivaCatalogData = /*#__PURE__*/function () {
20654
20733
  //
20655
20734
  ignoreLayerAVNAVS: false,
20656
20735
  //
20736
+ ignoreDockingNumber: false,
20737
+ // ignoriert die Nummern-Regel beim Andocken (z.B. AVU1 darf an AVO2). Die Nummer dient dann nur der Identifikation, nicht als Zuordnungsschlüssel.
20657
20738
  checkCollisionForDifferentLayers: [],
20658
20739
  //
20659
20740
 
@@ -21199,6 +21280,24 @@ var DivaCatalogData = /*#__PURE__*/function () {
21199
21280
  return _ret;
21200
21281
  }
21201
21282
  }
21283
+
21284
+ /**
21285
+ * Default dock filter applied when nothing is selected (e.g. after a deselect or when adding a new element).
21286
+ * When completeness warnings are hidden, any element may start a planning, so every dock type the catalog
21287
+ * actually has is shown. Otherwise the catalog's configured start filter (startFilterParams / available
21288
+ * start types) is used.
21289
+ */
21290
+ }, {
21291
+ key: "defaultDockFilter",
21292
+ get: function get() {
21293
+ if (this.doHideCompletenessWarning) {
21294
+ var filterType = this.plannerPaletteViewInfo.filterType;
21295
+ return Object.keys(filterType).filter(function (key) {
21296
+ return filterType[key];
21297
+ });
21298
+ }
21299
+ return this.getStartFilter;
21300
+ }
21202
21301
  }, {
21203
21302
  key: "dontHideOption",
21204
21303
  get: function get() {
@@ -21688,6 +21787,7 @@ var DivaCatalogData = /*#__PURE__*/function () {
21688
21787
  ignoreLayerAVC: this.catalogProps.ignoreLayerAVC,
21689
21788
  ignoreLayerAVOAVU: this.catalogProps.ignoreLayerAVOAVU,
21690
21789
  ignoreLayerAVNAVS: this.catalogProps.ignoreLayerAVNAVS,
21790
+ ignoreDockingNumber: this.catalogProps.ignoreDockingNumber,
21691
21791
  showAccOnDpOnly: this.catalogProps.showAccOnDpOnly,
21692
21792
  dockAccOnAvoOnly: this.catalogProps.dockAccOnAvoOnly,
21693
21793
  hideAccessoriesInPlanner: this.catalogProps.accessorieStepAsPlanner,
@@ -21847,6 +21947,9 @@ var DivaCatalogData = /*#__PURE__*/function () {
21847
21947
  case 'IGNORELAYERAVNAVS':
21848
21948
  _this4.catalogProps.ignoreLayerAVNAVS = item.Value == '1';
21849
21949
  break;
21950
+ case 'IGNOREDOCKINGNUMBER':
21951
+ _this4.catalogProps.ignoreDockingNumber = item.Value == '1';
21952
+ break;
21850
21953
  case 'CHECK_COLLISION_DIFFERENT_LAYERS':
21851
21954
  _this4.catalogProps.checkCollisionForDifferentLayers = item.Value.split(';').map(function (t) {
21852
21955
  return parseInt(t);
@@ -22303,11 +22406,12 @@ var DivaCatalogHandler = /*#__PURE__*/function () {
22303
22406
  key: "loadDivaCatalog",
22304
22407
  value: function () {
22305
22408
  var _loadDivaCatalog = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(state, catalogCodex, orderSet) {
22409
+ var _orderSet$OrderLines;
22306
22410
  var promises, _yield$Promise$all, _yield$Promise$all2, catalogApiData, catalogArticleListData, catalogArticlePlannerListData, additionalModelInfos, mask, _state$catalogMask, catalogData;
22307
22411
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
22308
22412
  while (1) switch (_context2.prev = _context2.next) {
22309
22413
  case 0:
22310
- promises = [state.api.getDataCache(state.api.getCatalogDataQS(catalogCodex), state.api.getCatalogDataCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonArticleListQS(catalogCodex), state.api.getJsonArticleListCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonPlannerElementsQS(catalogCodex), state.api.getJsonPlannerElementsCacheKey(catalogCodex), orderSet.AccountSessionGUID)].concat([this.loadAdditionalModelInfos(state, orderSet.AccountGUID, orderSet.CatalogGUID)], _toConsumableArray(state.onlyRunLogic ? [] : _toConsumableArray(new Map(orderSet.OrderLines.filter(function (ol) {
22414
+ promises = [state.api.getDataCache(state.api.getCatalogDataQS(catalogCodex), state.api.getCatalogDataCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonArticleListQS(catalogCodex), state.api.getJsonArticleListCacheKey(catalogCodex), orderSet.AccountSessionGUID), state.api.getDataCache(state.api.getJsonPlannerElementsQS(catalogCodex), state.api.getJsonPlannerElementsCacheKey(catalogCodex), orderSet.AccountSessionGUID)].concat([this.loadAdditionalModelInfos(state, orderSet.AccountGUID, orderSet.CatalogGUID)], _toConsumableArray(state.onlyRunLogic ? [] : _toConsumableArray(new Map(((_orderSet$OrderLines = orderSet.OrderLines) !== null && _orderSet$OrderLines !== void 0 ? _orderSet$OrderLines : []).filter(function (ol) {
22311
22415
  var _ol$VariantBasketData;
22312
22416
  return ((_ol$VariantBasketData = ol.VariantBasketDatas) === null || _ol$VariantBasketData === void 0 ? void 0 : _ol$VariantBasketData.length) && ol.ArticleType === 'OPTIONTREE';
22313
22417
  }).map(function (os) {
@@ -22338,7 +22442,8 @@ var DivaCatalogHandler = /*#__PURE__*/function () {
22338
22442
  break;
22339
22443
  }
22340
22444
  _context2.next = 16;
22341
- return state.api.getDataCache(state.api.getCatalogMaskQS(catalogApiData.GUID, state.api.OrganizationId), undefined, undefined, 'enricher');
22445
+ return state.api.getDataCache(state.api.getCatalogMaskQS(catalogApiData.GUID, state.api.OrganizationId), undefined, undefined, 'enricher', undefined, undefined, true // optional call - failure is swallowed below, so don't surface the enricher error modal
22446
+ );
22342
22447
  case 16:
22343
22448
  mask = _context2.sent;
22344
22449
  case 17:
@@ -23513,45 +23618,19 @@ var DivaEngine = /*#__PURE__*/function () {
23513
23618
  value: function updateIDMSpecificFeature(ops) {
23514
23619
  var _ops$option$idmVarian, _ops$option$idmVarian2, _ops$option$idmVarian3, _ops$option$idmVarian4, _ops$option$idmVarian5;
23515
23620
  if (!this.article.parentHasSameOption(ops.optionCodex)) return;
23621
+ // The OPV codex embeds the option codex as a prefix: "OPV<body>_<connector>" (e.g. "OPV1090_CT500"),
23622
+ // while ops.optionCodex is "OPT<body>". Strip that prefix so the filter holds the bare connector codex.
23623
+ var toConnectorCodex = function toConnectorCodex(value) {
23624
+ var prefix = 'OPV' + ops.optionCodex.substring(3) + '_';
23625
+ return value.codex.startsWith(prefix) ? value.codex.substring(prefix.length) : value.codex;
23626
+ };
23516
23627
  if ([90, 1090].includes((_ops$option$idmVarian = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian !== void 0 ? _ops$option$idmVarian : 0)) {
23517
23628
  //R (Anschlusstyp R) - AVR
23518
- var newAVRFilter = [],
23519
- visibleOPVs = ops.visibleOptionValues;
23520
- var _iterator5 = _createForOfIteratorHelper$c(visibleOPVs),
23521
- _step5;
23522
- try {
23523
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
23524
- var _step5$value = _slicedToArray(_step5.value, 2),
23525
- key = _step5$value[0],
23526
- value = _step5$value[1];
23527
- newAVRFilter.push(value.codex.substring(3));
23528
- }
23529
- } catch (err) {
23530
- _iterator5.e(err);
23531
- } finally {
23532
- _iterator5.f();
23533
- }
23534
- this.article.newPossibleAVRFilters = newAVRFilter;
23629
+ this.article.newPossibleAVRFilters = Array.from(ops.visibleOptionValues.values()).map(toConnectorCodex);
23535
23630
  }
23536
23631
  if ([89, 1089].includes((_ops$option$idmVarian2 = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian2 !== void 0 ? _ops$option$idmVarian2 : 0)) {
23537
23632
  //L (Anschlusstyp L) - AVL
23538
- var newAVLFilter = [],
23539
- _visibleOPVs = ops.visibleOptionValues;
23540
- var _iterator6 = _createForOfIteratorHelper$c(_visibleOPVs),
23541
- _step6;
23542
- try {
23543
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
23544
- var _step6$value = _slicedToArray(_step6.value, 2),
23545
- _key = _step6$value[0],
23546
- _value = _step6$value[1];
23547
- newAVLFilter.push(_value.codex.substring(3));
23548
- }
23549
- } catch (err) {
23550
- _iterator6.e(err);
23551
- } finally {
23552
- _iterator6.f();
23553
- }
23554
- this.article.newPossibleAVLFilters = newAVLFilter;
23633
+ this.article.newPossibleAVLFilters = Array.from(ops.visibleOptionValues.values()).map(toConnectorCodex);
23555
23634
  }
23556
23635
  //beim article abspeichern. Das Planungselement kann es sich per Funktion von dort dann holen
23557
23636
  if ([97, 1097].includes((_ops$option$idmVarian3 = ops.option.idmVariantenArt) !== null && _ops$option$idmVarian3 !== void 0 ? _ops$option$idmVarian3 : 0)) {
@@ -23780,18 +23859,18 @@ var DivaEngine = /*#__PURE__*/function () {
23780
23859
  myDecisions[_i].disableHistory = [];
23781
23860
  myDecisions[_i].activeCombination = undefined;
23782
23861
  }
23783
- var _iterator7 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23784
- _step7;
23862
+ var _iterator5 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23863
+ _step5;
23785
23864
  try {
23786
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
23787
- var ops = _step7.value;
23865
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
23866
+ var ops = _step5.value;
23788
23867
  ops.updateVisibleOptionValues(ops.option.articleOptionValues);
23789
23868
  ops.definedBySetFeatureFixed = false;
23790
23869
  }
23791
23870
  } catch (err) {
23792
- _iterator7.e(err);
23871
+ _iterator5.e(err);
23793
23872
  } finally {
23794
- _iterator7.f();
23873
+ _iterator5.f();
23795
23874
  }
23796
23875
  this.catalogDecisionsByNumber = new Map(this.article.catalogArticle.articleDecisions.map(function (d) {
23797
23876
  return [d.Number, d];
@@ -23922,11 +24001,11 @@ var DivaEngine = /*#__PURE__*/function () {
23922
24001
  key: "updateIDMSpecificFeatures",
23923
24002
  value: function updateIDMSpecificFeatures() {
23924
24003
  //updaten idm planner specific options
23925
- var _iterator8 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
23926
- _step8;
24004
+ var _iterator6 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24005
+ _step6;
23927
24006
  try {
23928
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
23929
- var ops = _step8.value;
24007
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
24008
+ var ops = _step6.value;
23930
24009
  //when an option has no decisions the first visible optionValue has to be selected per default
23931
24010
  if (ops.val === undefined && ops.visibleCount && !this.article.CatalogData.useDiomexConfigLogic) {
23932
24011
  this.assignOptionValue(ops.optionCodex, ops.visibleOPVKeys[0]);
@@ -23947,9 +24026,9 @@ var DivaEngine = /*#__PURE__*/function () {
23947
24026
  }
23948
24027
  }
23949
24028
  } catch (err) {
23950
- _iterator8.e(err);
24029
+ _iterator6.e(err);
23951
24030
  } finally {
23952
- _iterator8.f();
24031
+ _iterator6.f();
23953
24032
  }
23954
24033
  }
23955
24034
  }, {
@@ -24183,21 +24262,21 @@ var DivaEngine = /*#__PURE__*/function () {
24183
24262
  var negatedValues = new Set(myDoc.Row[OPT].map(function (v) {
24184
24263
  return v.slice(1);
24185
24264
  })); // remove the '!' from the value
24186
- var _iterator9 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
24187
- _step9;
24265
+ var _iterator7 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
24266
+ _step7;
24188
24267
  try {
24189
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
24190
- var _step9$value = _slicedToArray(_step9.value, 2),
24191
- opvKey = _step9$value[0],
24192
- _opv = _step9$value[1];
24268
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
24269
+ var _step7$value = _slicedToArray(_step7.value, 2),
24270
+ opvKey = _step7$value[0],
24271
+ _opv = _step7$value[1];
24193
24272
  if (!negatedValues.has(opvKey)) {
24194
24273
  validOPVs[OPT].set(opvKey, _opv);
24195
24274
  }
24196
24275
  }
24197
24276
  } catch (err) {
24198
- _iterator9.e(err);
24277
+ _iterator7.e(err);
24199
24278
  } finally {
24200
- _iterator9.f();
24279
+ _iterator7.f();
24201
24280
  }
24202
24281
  } else {
24203
24282
  validOPVs[OPT] = new Map(ops.visibleOptionValues);
@@ -24325,11 +24404,11 @@ var DivaEngine = /*#__PURE__*/function () {
24325
24404
  }, {
24326
24405
  key: "evalShowOnlyWhenHasPrice",
24327
24406
  value: function evalShowOnlyWhenHasPrice() {
24328
- var _iterator10 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24329
- _step10;
24407
+ var _iterator8 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24408
+ _step8;
24330
24409
  try {
24331
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
24332
- var ops = _step10.value;
24410
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
24411
+ var ops = _step8.value;
24333
24412
  for (var jKey in ops.visibleOptionValues) {
24334
24413
  var opv = ops.visibleOptionValues.get(jKey);
24335
24414
  if (opv.showOnlyWhenHasPrice && opv.price == 0) {
@@ -24341,9 +24420,9 @@ var DivaEngine = /*#__PURE__*/function () {
24341
24420
  }
24342
24421
  }
24343
24422
  } catch (err) {
24344
- _iterator10.e(err);
24423
+ _iterator8.e(err);
24345
24424
  } finally {
24346
- _iterator10.f();
24425
+ _iterator8.f();
24347
24426
  }
24348
24427
  }
24349
24428
 
@@ -24817,12 +24896,12 @@ var DivaEngine = /*#__PURE__*/function () {
24817
24896
  }
24818
24897
 
24819
24898
  //mengen und größenabhängige Preisberechungn.
24820
- var _iterator11 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24821
- _step11;
24899
+ var _iterator9 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24900
+ _step9;
24822
24901
  try {
24823
- for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
24902
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
24824
24903
  var _ops$addToMeasure;
24825
- var ops = _step11.value;
24904
+ var ops = _step9.value;
24826
24905
  var OP = ops.optionCodex;
24827
24906
  var mUnit = ops.measureUnit;
24828
24907
  var pUnit = ops.priceUnit;
@@ -24905,15 +24984,15 @@ var DivaEngine = /*#__PURE__*/function () {
24905
24984
  }
24906
24985
  //jetzt nochmal prozentuelle Preise mit TargetOption berechnen
24907
24986
  } catch (err) {
24908
- _iterator11.e(err);
24987
+ _iterator9.e(err);
24909
24988
  } finally {
24910
- _iterator11.f();
24989
+ _iterator9.f();
24911
24990
  }
24912
- var _iterator12 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24913
- _step12;
24991
+ var _iterator10 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24992
+ _step10;
24914
24993
  try {
24915
- for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
24916
- var _ops4 = _step12.value;
24994
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
24995
+ var _ops4 = _step10.value;
24917
24996
  var targetPPGPrefixes = _ops4.targetPPGPrefixes;
24918
24997
  if (!targetPPGPrefixes) continue;
24919
24998
  var _loop7 = function _loop7() {
@@ -24933,9 +25012,9 @@ var DivaEngine = /*#__PURE__*/function () {
24933
25012
  }
24934
25013
  }
24935
25014
  } catch (err) {
24936
- _iterator12.e(err);
25015
+ _iterator10.e(err);
24937
25016
  } finally {
24938
- _iterator12.f();
25017
+ _iterator10.f();
24939
25018
  }
24940
25019
  for (var _i5 = 0; _i5 < this.article.priceRefs.length; _i5++) {
24941
25020
  var basePriceRef = this.article.priceRefs[_i5];
@@ -24947,19 +25026,19 @@ var DivaEngine = /*#__PURE__*/function () {
24947
25026
  return item.PPG && item.PPG.split('_')[0] == targetPrefix;
24948
25027
  });
24949
25028
  if (!priceRef) {
24950
- var _iterator13 = _createForOfIteratorHelper$c(_this5.article.articleOptionStates.values()),
24951
- _step13;
25029
+ var _iterator11 = _createForOfIteratorHelper$c(_this5.article.articleOptionStates.values()),
25030
+ _step11;
24952
25031
  try {
24953
- for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
24954
- var ops = _step13.value;
25032
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
25033
+ var ops = _step11.value;
24955
25034
  if (ops.ppg && ops.ppg.split('_')[0] == targetPrefix) {
24956
25035
  myArtOpv = ops;
24957
25036
  }
24958
25037
  }
24959
25038
  } catch (err) {
24960
- _iterator13.e(err);
25039
+ _iterator11.e(err);
24961
25040
  } finally {
24962
- _iterator13.f();
25041
+ _iterator11.f();
24963
25042
  }
24964
25043
  }
24965
25044
 
@@ -24985,36 +25064,36 @@ var DivaEngine = /*#__PURE__*/function () {
24985
25064
  myArticleBasePrice += priceRef.Price ? DivaUtils.decimalAdjust('round', (_priceRef$calcPrice = priceRef.calcPrice) !== null && _priceRef$calcPrice !== void 0 ? _priceRef$calcPrice : priceRef.Price, digits) : 0.0;
24986
25065
  }
24987
25066
  var articleUsedCalcPrice = myArticleBasePrice;
24988
- var _iterator14 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
24989
- _step14;
25067
+ var _iterator12 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25068
+ _step12;
24990
25069
  try {
24991
- for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
24992
- var tmpOps = _step14.value;
25070
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
25071
+ var tmpOps = _step12.value;
24993
25072
  articleUsedCalcPrice = this.getOptionPrice(articleUsedCalcPrice, tmpOps.option, digits);
24994
25073
  }
24995
25074
 
24996
25075
  //jetzt nochmal prozentuelle Preise mit GLOBAL tarbetoption berechnen
24997
25076
  /* TODO ABklären mit Franz - ops hat nie die Optionen - targetPPGPrefixes - ich glaube hier sollte article.priceRefs durchlaufen werden. */
24998
25077
  } catch (err) {
24999
- _iterator14.e(err);
25078
+ _iterator12.e(err);
25000
25079
  } finally {
25001
- _iterator14.f();
25080
+ _iterator12.f();
25002
25081
  }
25003
- var _iterator15 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25004
- _step15;
25082
+ var _iterator13 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25083
+ _step13;
25005
25084
  try {
25006
- for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
25085
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
25007
25086
  var _ops5$targetPPGPrefix, _ops5$targetPPGPrefix2;
25008
- var _ops5 = _step15.value;
25087
+ var _ops5 = _step13.value;
25009
25088
  var targetOption = (_ops5$targetPPGPrefix = (_ops5$targetPPGPrefix2 = _ops5.targetPPGPrefixes) === null || _ops5$targetPPGPrefix2 === void 0 ? void 0 : _ops5$targetPPGPrefix2[0]) !== null && _ops5$targetPPGPrefix !== void 0 ? _ops5$targetPPGPrefix : _ops5.targetOption;
25010
25089
  if (_ops5.isPercentage && targetOption == 'GLOBAL') {
25011
25090
  articleUsedCalcPrice = articleUsedCalcPrice * (1 + _ops5.calcPrice);
25012
25091
  }
25013
25092
  }
25014
25093
  } catch (err) {
25015
- _iterator15.e(err);
25094
+ _iterator13.e(err);
25016
25095
  } finally {
25017
- _iterator15.f();
25096
+ _iterator13.f();
25018
25097
  }
25019
25098
  for (var _i7 = 0; _i7 < this.article.priceRefs.length; _i7++) {
25020
25099
  var _priceRef = this.article.priceRefs[_i7];
@@ -25156,11 +25235,11 @@ var DivaEngine = /*#__PURE__*/function () {
25156
25235
  if (a[i].trim() != '') {
25157
25236
  var searchOpt = 'OPT' + a[i].trim();
25158
25237
  //Optionsbaum des Artikels durchsuchen
25159
- var _iterator16 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25160
- _step16;
25238
+ var _iterator14 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25239
+ _step14;
25161
25240
  try {
25162
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
25163
- var _ops6 = _step16.value;
25241
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
25242
+ var _ops6 = _step14.value;
25164
25243
  if (_ops6.ocd == searchOpt || _ops6.optionCodex == searchOpt) {
25165
25244
  if (_ops6 && _ops6.price > 0) {
25166
25245
  myPercBasePrice += _ops6.price * _ops6.quantity;
@@ -25169,9 +25248,9 @@ var DivaEngine = /*#__PURE__*/function () {
25169
25248
  }
25170
25249
  }
25171
25250
  } catch (err) {
25172
- _iterator16.e(err);
25251
+ _iterator14.e(err);
25173
25252
  } finally {
25174
- _iterator16.f();
25253
+ _iterator14.f();
25175
25254
  }
25176
25255
  }
25177
25256
  }
@@ -25217,18 +25296,18 @@ var DivaEngine = /*#__PURE__*/function () {
25217
25296
  }
25218
25297
 
25219
25298
  // this functions updates the images of OPVs that depend on rules
25220
- var _iterator17 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25221
- _step17;
25299
+ var _iterator15 = _createForOfIteratorHelper$c(this.article.articleOptionStates.values()),
25300
+ _step15;
25222
25301
  try {
25223
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
25224
- var ops = _step17.value;
25225
- var _iterator18 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
25226
- _step18;
25302
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
25303
+ var ops = _step15.value;
25304
+ var _iterator16 = _createForOfIteratorHelper$c(ops.visibleOptionValues),
25305
+ _step16;
25227
25306
  try {
25228
- for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
25229
- var _step18$value = _slicedToArray(_step18.value, 2),
25230
- jKey = _step18$value[0],
25231
- opv = _step18$value[1];
25307
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
25308
+ var _step16$value = _slicedToArray(_step16.value, 2),
25309
+ jKey = _step16$value[0],
25310
+ opv = _step16$value[1];
25232
25311
  if (opv.images) {
25233
25312
  var imageFound = false;
25234
25313
  for (var _i10 = 0; _i10 < opv.images.length; _i10++) {
@@ -25247,18 +25326,18 @@ var DivaEngine = /*#__PURE__*/function () {
25247
25326
  }
25248
25327
  }
25249
25328
  } catch (err) {
25250
- _iterator18.e(err);
25329
+ _iterator16.e(err);
25251
25330
  } finally {
25252
- _iterator18.f();
25331
+ _iterator16.f();
25253
25332
  }
25254
25333
  }
25255
25334
 
25256
25335
  // this function calculates an Svg to the current configuration if neccessary (SVG Tausch)
25257
25336
  // if the Article has no SVG Tausch nothing is done
25258
25337
  } catch (err) {
25259
- _iterator17.e(err);
25338
+ _iterator15.e(err);
25260
25339
  } finally {
25261
- _iterator17.f();
25340
+ _iterator15.f();
25262
25341
  }
25263
25342
  var newSVGFile = null;
25264
25343
  var svgChangedViaSvgTausch = false;
@@ -25889,7 +25968,7 @@ var IDMEngine = /*#__PURE__*/function () {
25889
25968
  } else if (!_ops4.valCodex) {
25890
25969
  LOG$g.warn('evalSetFeature(featureRef) decision ' + decision.decisionNo + ': referenced source feature ' + action.featureRef.featureNo + ' has no selected value (valCodex undefined) - target feature ' + action.featureNo + ' will NOT be set (price relevant)');
25891
25970
  } else if (!targetHasSourceValue) {
25892
- LOG$g.warn('evalSetFeature(featureRef) decision ' + decision.decisionNo + ': target feature ' + action.featureNo + " does not have source feature " + action.featureRef.featureNo + "'s value '" + _ops4.valCodex + "' among its visible option values - assignOptionValue will be a no-op (price relevant). Target visible values: " + (targetOps ? Array.from(targetOps.visibleOptionValues.keys()).join(', ') : '<no target>'));
25971
+ LOG$g.warn('evalSetFeature(featureRef) decision ' + decision.decisionNo + ': target feature ' + action.featureNo + ' does not have source feature ' + action.featureRef.featureNo + "'s value '" + _ops4.valCodex + "' among its visible option values - assignOptionValue will be a no-op (price relevant). Target visible values: " + (targetOps ? Array.from(targetOps.visibleOptionValues.keys()).join(', ') : '<no target>'));
25893
25972
  }
25894
25973
  if (_ops4 !== null && _ops4 !== void 0 && _ops4.valCodex) this.assignOptionValue(action.featureNo.toString(), _ops4.valCodex, isFixed ? 'fix' : 'set');
25895
25974
  } else if (action.optionRef) {
@@ -26485,13 +26564,18 @@ var IDMEngine = /*#__PURE__*/function () {
26485
26564
  value: function updateIDMSpecificFeature(myArtOPS) {
26486
26565
  var _myArtOPS$option$idmV, _myArtOPS$option$idmV2, _myArtOPS$option$idmV3, _myArtOPS$option$idmV4, _myArtOPS$option$idmV5;
26487
26566
  if (!this.article.parentHasSameOption(myArtOPS.optionCodex)) return;
26567
+ // The OPV key embeds the option codex as a prefix: "<optionCodex>_<connector>" (e.g. "1089_CT20").
26568
+ // Strip the codex AND the separator so the filter holds the bare connector codex ("CT20").
26569
+ var toConnectorCodex = function toConnectorCodex(key) {
26570
+ return key.startsWith(myArtOPS.optionCodex + '_') ? key.substring(myArtOPS.optionCodex.length + 1) : key;
26571
+ };
26488
26572
  if ([90, 1090].includes((_myArtOPS$option$idmV = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV !== void 0 ? _myArtOPS$option$idmV : 0)) {
26489
26573
  //R (Anschlusstyp R) - AVR
26490
- this.article.newPossibleAVRFilters = myArtOPS.visibleOPVKeys;
26574
+ this.article.newPossibleAVRFilters = myArtOPS.visibleOPVKeys.map(toConnectorCodex);
26491
26575
  }
26492
26576
  if ([89, 1089].includes((_myArtOPS$option$idmV2 = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV2 !== void 0 ? _myArtOPS$option$idmV2 : 0)) {
26493
26577
  //L (Anschlusstyp L) - AVL
26494
- this.article.newPossibleAVLFilters = myArtOPS.visibleOPVKeys;
26578
+ this.article.newPossibleAVLFilters = myArtOPS.visibleOPVKeys.map(toConnectorCodex);
26495
26579
  }
26496
26580
  if ([97, 1097].includes((_myArtOPS$option$idmV3 = myArtOPS.option.idmVariantenArt) !== null && _myArtOPS$option$idmV3 !== void 0 ? _myArtOPS$option$idmV3 : 0)) {
26497
26581
  try {
@@ -27930,6 +28014,11 @@ var DivaArticle = /*#__PURE__*/function () {
27930
28014
  get: function get() {
27931
28015
  return this.catalogArticle.bundleRules;
27932
28016
  }
28017
+ }, {
28018
+ key: "addAsZKAT",
28019
+ get: function get() {
28020
+ return this.catalogArticle.addAsZKAT;
28021
+ }
27933
28022
  }, {
27934
28023
  key: "hasPartlistArticleVisibleInTree",
27935
28024
  get: function get() {
@@ -29534,7 +29623,7 @@ var DivaArticle = /*#__PURE__*/function () {
29534
29623
  break;
29535
29624
  }
29536
29625
  _context.next = 4;
29537
- return import('./ShelfPlanner-f50e9483.js');
29626
+ return import('./ShelfPlanner-305ae4a8.js');
29538
29627
  case 4:
29539
29628
  _yield$import = _context.sent;
29540
29629
  ShelfPlanner = _yield$import["default"];
@@ -33268,7 +33357,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33268
33357
  }
33269
33358
  }, {
33270
33359
  key: "getSummaryItemsofArticle",
33271
- value: function getSummaryItemsofArticle(article, set, summaryTabItems, baseArticlesCount, summaryForBasket) {
33360
+ value: function getSummaryItemsofArticle(article, set, summaryTabItems, baseArticlesCount, summaryForBasket, parentArticle) {
33272
33361
  var _iterator2 = _createForOfIteratorHelper$7(article.articleOptionStates.values()),
33273
33362
  _step2;
33274
33363
  try {
@@ -33276,6 +33365,12 @@ var SummaryHandler = /*#__PURE__*/function () {
33276
33365
  var ops = _step2.value;
33277
33366
  if (ops.visibleInSummary(article, summaryForBasket)) {
33278
33367
  var _set$configTree$getCo, _set$hiddenConfigTree;
33368
+ //for accessoires only render an option if it differs from the parent article's selection
33369
+ if (parentArticle) {
33370
+ var _parentOps$val, _ops$val;
33371
+ var parentOps = parentArticle.getArticleOptionState(ops.optionCodex);
33372
+ if (parentOps && ((_parentOps$val = parentOps.val) === null || _parentOps$val === void 0 ? void 0 : _parentOps$val.codex) === ((_ops$val = ops.val) === null || _ops$val === void 0 ? void 0 : _ops$val.codex)) continue;
33373
+ }
33279
33374
  var tabGroupCodex = void 0;
33280
33375
  var tabGroupTitel = void 0;
33281
33376
  if (ops.optionTabGroup) {
@@ -33292,9 +33387,9 @@ var SummaryHandler = /*#__PURE__*/function () {
33292
33387
  var itemsInTabGroup = summaryTabItems[tabGroupCodex].summaryItems;
33293
33388
  var itemImage = ops.val.image ? set.CatalogData.getCatImageURL(ops.val.image, '') : undefined;
33294
33389
  if (configStep && itemsInTabGroup) {
33295
- var _ops$val, _this$getAdditionalPr;
33390
+ var _ops$val2, _this$getAdditionalPr;
33296
33391
  var sameOPVAndOPTDoAlreadyExist = false;
33297
- var configStepKeyToUse = configStep.key + ((_ops$val = ops.val) === null || _ops$val === void 0 ? void 0 : _ops$val.codex);
33392
+ var configStepKeyToUse = configStep.key + ((_ops$val2 = ops.val) === null || _ops$val2 === void 0 ? void 0 : _ops$val2.codex);
33298
33393
  var posNr = configStep === null || configStep === void 0 ? void 0 : configStep.posNr;
33299
33394
  if (configStep !== null && configStep !== void 0 && configStep.accessoireArticleCodex && article.relatedToBasketId) {
33300
33395
  var _set$configTree$getCo2, _set$configTree$getCo3, _set$hiddenConfigTree2;
@@ -33315,7 +33410,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33315
33410
  var rabatt = set.getCurrentDisountPercentage();
33316
33411
  var price = rabatt ? DivaUtils.roundPrice(bruttoPrice * ((100 - rabatt) / 100), 1, 2) : bruttoPrice;
33317
33412
  if (!sameOPVAndOPTDoAlreadyExist) {
33318
- var _ops$val$contentItemI, _ops$val2, _ops$val3;
33413
+ var _ops$val$contentItemI, _ops$val3, _ops$val4;
33319
33414
  itemsInTabGroup[configStepKeyToUse] = {
33320
33415
  title: ops.optionName,
33321
33416
  title_locales: ops.optionName_locales,
@@ -33329,7 +33424,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33329
33424
  image: itemImage,
33330
33425
  isDefined: ops.isDefined,
33331
33426
  setId: set.getSetId(),
33332
- contentItemId: (_ops$val$contentItemI = (_ops$val2 = ops.val) === null || _ops$val2 === void 0 ? void 0 : _ops$val2.contentItemId) !== null && _ops$val$contentItemI !== void 0 ? _ops$val$contentItemI : (_ops$val3 = ops.val) === null || _ops$val3 === void 0 ? void 0 : _ops$val3.groupContentItemId,
33427
+ contentItemId: (_ops$val$contentItemI = (_ops$val3 = ops.val) === null || _ops$val3 === void 0 ? void 0 : _ops$val3.contentItemId) !== null && _ops$val$contentItemI !== void 0 ? _ops$val$contentItemI : (_ops$val4 = ops.val) === null || _ops$val4 === void 0 ? void 0 : _ops$val4.groupContentItemId,
33333
33428
  optionContentItemId: ops.option.contentItemId,
33334
33429
  includesAllPosNrs: baseArticlesCount <= 1
33335
33430
  };
@@ -33383,7 +33478,7 @@ var SummaryHandler = /*#__PURE__*/function () {
33383
33478
  } else {
33384
33479
  var _set$i18n$t2, _set$i18n2, _accessoire$catalogAr, _accessoire$catalogAr2, _accessoire$catalogAr3;
33385
33480
  var summaryItems = {};
33386
- this.getSummaryItemsofArticle(accessoire, set, summaryItems, 0, summaryForBasket);
33481
+ this.getSummaryItemsofArticle(accessoire, set, summaryItems, 0, summaryForBasket, article);
33387
33482
  this.addAccessoires([accessoire], summaryItems, set, articlesPosNrs, baseArticlesCount, summaryForBasket);
33388
33483
  tabGroup.summaryItems[entryKey] = {
33389
33484
  title: accessoire.name,
@@ -33660,14 +33755,26 @@ var SummaryHandler = /*#__PURE__*/function () {
33660
33755
  counter++;
33661
33756
  SummaryInfo.push(new GroupsData(GroupDataInitParams));
33662
33757
  for (var jKey in mySummaryObejct.summaryItems) {
33663
- var _mySummaryItem$title_, _mySummaryItem$descri, _mySummaryItem$target;
33664
- var mySummaryItem = mySummaryObejct.summaryItems[jKey];
33665
- SummaryInfo[SummaryInfo.length - 1].Group.addItem(mySummaryItem.title, (_mySummaryItem$title_ = mySummaryItem.title_locales) !== null && _mySummaryItem$title_ !== void 0 ? _mySummaryItem$title_ : {}, DivaUtils.stripTags(mySummaryItem.description), DivaUtils.stripTagsFromDict((_mySummaryItem$descri = mySummaryItem.description_locales) !== null && _mySummaryItem$descri !== void 0 ? _mySummaryItem$descri : {}), (_mySummaryItem$target = mySummaryItem.targetArticlePosNrs) !== null && _mySummaryItem$target !== void 0 ? _mySummaryItem$target : [], SummaryInfo[SummaryInfo.length - 1].Group.GroupID, mySummaryItem.image);
33758
+ this.addSummaryItemToGroup(SummaryInfo[SummaryInfo.length - 1].Group, mySummaryObejct.summaryItems[jKey]);
33666
33759
  }
33667
33760
  }
33668
33761
  }
33669
33762
  return SummaryInfo;
33670
33763
  }
33764
+ }, {
33765
+ key: "addSummaryItemToGroup",
33766
+ value: function addSummaryItemToGroup(group, summaryItem) {
33767
+ //tab-group shells only structure the nested config; skip them so they don't become empty property lines
33768
+ if (!summaryItem.isTabGroup) {
33769
+ var _summaryItem$title_lo, _summaryItem$descript, _summaryItem$targetAr4;
33770
+ group.addItem(summaryItem.title, (_summaryItem$title_lo = summaryItem.title_locales) !== null && _summaryItem$title_lo !== void 0 ? _summaryItem$title_lo : {}, DivaUtils.stripTags(summaryItem.description), DivaUtils.stripTagsFromDict((_summaryItem$descript = summaryItem.description_locales) !== null && _summaryItem$descript !== void 0 ? _summaryItem$descript : {}), (_summaryItem$targetAr4 = summaryItem.targetArticlePosNrs) !== null && _summaryItem$targetAr4 !== void 0 ? _summaryItem$targetAr4 : [], group.GroupID, summaryItem.image);
33771
+ }
33772
+
33773
+ //nested config (e.g. accessory option values like a custom color) is kept flat in the same group
33774
+ for (var _key7 in summaryItem.summaryItems) {
33775
+ this.addSummaryItemToGroup(group, summaryItem.summaryItems[_key7]);
33776
+ }
33777
+ }
33671
33778
  }, {
33672
33779
  key: "getSummaryType",
33673
33780
  value: function getSummaryType(set) {
@@ -33698,8 +33805,8 @@ var SummaryHandler = /*#__PURE__*/function () {
33698
33805
  }
33699
33806
  };
33700
33807
  }
33701
- for (var _key7 in elementGroups) {
33702
- var group = elementGroups[_key7];
33808
+ for (var _key8 in elementGroups) {
33809
+ var group = elementGroups[_key8];
33703
33810
  ret.push({
33704
33811
  items: this.buildSummaryItems(this.getArticlesPosNr(group.articles), set, summaryForBasket),
33705
33812
  price: this.getArticlesPrice(group.articles),
@@ -33716,10 +33823,10 @@ var SummaryHandler = /*#__PURE__*/function () {
33716
33823
  var groupedArticles = setHandlerInstance.getDockedGroupedArticles(set);
33717
33824
  var retGroups = {};
33718
33825
  var articlesCodexesOnIndex = {};
33719
- for (var _key8 in groupedArticles) {
33720
- var basketId = groupedArticles[_key8][Object.keys(groupedArticles[_key8])[0]].basketId;
33826
+ for (var _key9 in groupedArticles) {
33827
+ var basketId = groupedArticles[_key9][Object.keys(groupedArticles[_key9])[0]].basketId;
33721
33828
  retGroups[basketId] = {
33722
- articles: groupedArticles[_key8],
33829
+ articles: groupedArticles[_key9],
33723
33830
  quantity: 1
33724
33831
  };
33725
33832
  }
@@ -33734,12 +33841,12 @@ var SummaryHandler = /*#__PURE__*/function () {
33734
33841
  articlesCodexesOnIndex[articleCodex].push(i);
33735
33842
  }
33736
33843
  }
33737
- for (var _key9 in articlesCodexesOnIndex) {
33738
- if (articlesCodexesOnIndex[_key9].length > 1) {
33844
+ for (var _key10 in articlesCodexesOnIndex) {
33845
+ if (articlesCodexesOnIndex[_key10].length > 1) {
33739
33846
  //group the single groups by the aricleCodex
33740
33847
  var articles = [];
33741
- for (var _i4 = 0; _i4 < articlesCodexesOnIndex[_key9].length; _i4++) {
33742
- var _group = groupedArticles[articlesCodexesOnIndex[_key9][_i4]];
33848
+ for (var _i4 = 0; _i4 < articlesCodexesOnIndex[_key10].length; _i4++) {
33849
+ var _group = groupedArticles[articlesCodexesOnIndex[_key10][_i4]];
33743
33850
  articles.push({
33744
33851
  article: _group[Object.keys(_group)[0]]
33745
33852
  });
@@ -33784,11 +33891,11 @@ var SummaryHandler = /*#__PURE__*/function () {
33784
33891
  var isIDM = article.CatalogData.isIDMFormat;
33785
33892
  var tabGroups = [];
33786
33893
  for (var basketId in article.partlistArticles) {
33787
- var _ops$val4;
33894
+ var _ops$val5;
33788
33895
  var partlistArticle = article.partlistArticles[basketId];
33789
33896
  if (!partlistArticle.tabGroup) continue;
33790
33897
  var ops = article.getArticleOptionState((!isIDM ? 'OPT' : '') + partlistArticle.tabGroup);
33791
- if (ops && !ops.isInvisible && (ops.selectionmode != 0 || (ops.visibleCount > 1 || ops.isFreeText) && article.set.api.showSelectionModeZero()) && ops.isDoShow && !((_ops$val4 = ops.val) !== null && _ops$val4 !== void 0 && _ops$val4.isNotRelevant) && ops !== null && ops !== void 0 && ops.optionTabGroup) {
33898
+ if (ops && !ops.isInvisible && (ops.selectionmode != 0 || (ops.visibleCount > 1 || ops.isFreeText) && article.set.api.showSelectionModeZero()) && ops.isDoShow && !((_ops$val5 = ops.val) !== null && _ops$val5 !== void 0 && _ops$val5.isNotRelevant) && ops !== null && ops !== void 0 && ops.optionTabGroup) {
33792
33899
  tabGroups.push({
33793
33900
  optionCodex: ops.optionCodex,
33794
33901
  tabGroup: ops.optionTabGroup
@@ -34024,8 +34131,8 @@ var SummaryHandler = /*#__PURE__*/function () {
34024
34131
  key: "getArticlesPrice",
34025
34132
  value: function getArticlesPrice(articles) {
34026
34133
  var price = 0;
34027
- for (var _key10 in articles) {
34028
- price = price + articles[_key10].price * articles[_key10].quantity;
34134
+ for (var _key11 in articles) {
34135
+ price = price + articles[_key11].price * articles[_key11].quantity;
34029
34136
  }
34030
34137
  return price;
34031
34138
  }
@@ -35177,8 +35284,9 @@ var DivaConfigTreeHandler = /*#__PURE__*/function () {
35177
35284
  }
35178
35285
  var configInAccessoire = set.configAccessoiresInAccessoireStep;
35179
35286
  var configInAccessoireAndTree = set.CatalogData.configAccessoires && !article.isShelfAccessoire;
35287
+ var isRelatedAccessoire = !!article.relatedToBasketId && !(article.isPartListArticle && article.partlistArticleVisibleInTree);
35180
35288
  //give this step a unique key so it is not merged with any option of te main article
35181
- if (configInAccessoire && !!(article !== null && article !== void 0 && article.relatedToBasketId)) {
35289
+ if (configInAccessoire && isRelatedAccessoire) {
35182
35290
  if (configInAccessoireAndTree) {
35183
35291
  //remember old configStepKey to push basketId to its targetArticles anyways
35184
35292
  mainConfigStepKey = configStepKey;
@@ -35187,7 +35295,7 @@ var DivaConfigTreeHandler = /*#__PURE__*/function () {
35187
35295
  }
35188
35296
  var plaBasketIds = Object.keys(articles[basketId].getRecursivePartlistArticles(true, true));
35189
35297
  var singleOPVOnly = ops.visibleCount == 1 && !ops.isFreeText && !set.CatalogData.dontHideOption.includes(ops.option.codex) && !((_set$ViewConfig4 = set.ViewConfig) !== null && _set$ViewConfig4 !== void 0 && _set$ViewConfig4.showSingleOPVOnly);
35190
- var isAccessoire = !!article.relatedToBasketId ? article.articleCodex : false;
35298
+ var isAccessoire = isRelatedAccessoire ? article.articleCodex : false;
35191
35299
  if (!configTree.getTabGroupByCodex(tabGroupCodex)) {
35192
35300
  var newTabGroup = this.createTabGroup(tabGroupCodex, tabGroupTitel, 'OPTION', configTree);
35193
35301
  configTree.addTabGroup(tabGroupCodex, newTabGroup);
@@ -37538,7 +37646,7 @@ var DivaSet = /*#__PURE__*/function () {
37538
37646
  break;
37539
37647
  }
37540
37648
  _context5.next = 3;
37541
- return import('./DoorPlanner-3ffef3a1.js');
37649
+ return import('./DoorPlanner-4976af8c.js');
37542
37650
  case 3:
37543
37651
  _yield$import = _context5.sent;
37544
37652
  DoorPlanner = _yield$import["default"];
@@ -43012,7 +43120,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43012
43120
  break;
43013
43121
  case 3:
43014
43122
  _context12.next = 5;
43015
- return import('./PfisterWWSHandler-97602df8.js');
43123
+ return import('./PfisterWWSHandler-18a7f828.js');
43016
43124
  case 5:
43017
43125
  _yield$import = _context12.sent;
43018
43126
  PfisterWWSHandler = _yield$import["default"];
@@ -43020,7 +43128,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43020
43128
  return _context12.abrupt("break", 27);
43021
43129
  case 9:
43022
43130
  _context12.next = 11;
43023
- return import('./LiviqueWWSHandler-7f997d91.js');
43131
+ return import('./LiviqueWWSHandler-546997f8.js');
43024
43132
  case 11:
43025
43133
  _yield$import2 = _context12.sent;
43026
43134
  LiviqueWWSHandler = _yield$import2["default"];
@@ -43028,7 +43136,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43028
43136
  return _context12.abrupt("break", 27);
43029
43137
  case 15:
43030
43138
  _context12.next = 17;
43031
- return import('./SeriousBasketHandler-b9638fda.js');
43139
+ return import('./SeriousBasketHandler-3022bee6.js');
43032
43140
  case 17:
43033
43141
  _yield$import3 = _context12.sent;
43034
43142
  SeriousWWSHandler = _yield$import3["default"];
@@ -43036,7 +43144,7 @@ var DivaBasketHandler = /*#__PURE__*/function () {
43036
43144
  return _context12.abrupt("break", 27);
43037
43145
  case 21:
43038
43146
  _context12.next = 23;
43039
- return import('./StandardWWSHandler-99a090bc.js');
43147
+ return import('./StandardWWSHandler-e98bbbac.js');
43040
43148
  case 23:
43041
43149
  _yield$import4 = _context12.sent;
43042
43150
  StandardWWSHandler = _yield$import4["default"];
@@ -44460,7 +44568,7 @@ var PlannerHandler3D = /*#__PURE__*/function () {
44460
44568
  while (1) switch (_context3.prev = _context3.next) {
44461
44569
  case 0:
44462
44570
  _context3.next = 2;
44463
- return import('./Host3DSignalR-2143e221.js');
44571
+ return import('./Host3DSignalR-07217ea7.js');
44464
44572
  case 2:
44465
44573
  _yield$import = _context3.sent;
44466
44574
  Host3DSignalR = _yield$import["default"];
@@ -46146,7 +46254,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
46146
46254
  break;
46147
46255
  case 8:
46148
46256
  _context5.next = 10;
46149
- return import('./DivaStandardPlanner-de0d17ea.js');
46257
+ return import('./DivaStandardPlanner-66d98f28.js');
46150
46258
  case 10:
46151
46259
  _yield$import = _context5.sent;
46152
46260
  DivaStandardPlanner = _yield$import["default"];
@@ -46157,7 +46265,7 @@ var DivaPlannerHandler = /*#__PURE__*/function () {
46157
46265
  return _context5.abrupt("break", 21);
46158
46266
  case 15:
46159
46267
  _context5.next = 17;
46160
- return import('./DivaBoxPlanner-bbcd759e.js');
46268
+ return import('./DivaBoxPlanner-7b04b981.js');
46161
46269
  case 17:
46162
46270
  _yield$import2 = _context5.sent;
46163
46271
  DivaBoxPlanner = _yield$import2["default"];
@@ -48120,12 +48228,14 @@ var DivaWebPlanner = /*#__PURE__*/function () {
48120
48228
  case 12:
48121
48229
  loadSuccessful = _context14.sent;
48122
48230
  if (this.plannerConfig.configuratorSessionId) {
48123
- //force new configurator session id - Landingpage case
48231
+ // ID forced from outside (Landingpage, PDP, Planung-ändern)
48124
48232
  DivaUtils.businessMetrics.setConfiguratorSessionId(this.plannerConfig.configuratorSessionId);
48125
- } else {
48126
- // Only create a new configurator session if we don't already have one. This keeps the analytics
48127
- // session stable across re-inits (e.g. switching products inside the same catalog).
48233
+ } else if (cache !== undefined) {
48234
+ // Re-init with cache (Variant Select): keep existing session stable
48128
48235
  DivaUtils.businessMetrics.setConfiguratorSessionId(undefined, true);
48236
+ } else {
48237
+ // Fresh start (new catalog, archive basket, etc.): always new UUID
48238
+ DivaUtils.businessMetrics.setConfiguratorSessionId();
48129
48239
  }
48130
48240
  if (!loadSuccessful) {
48131
48241
  _context14.next = 31;