@crystaldesign/web-planner-logic 25.14.0-beta.2 → 25.14.0-beta.21

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 (56) hide show
  1. package/build/cjs/{DivaBoxPlanner-1b90896a.js → DivaBoxPlanner-1b528aea.js} +489 -265
  2. package/build/cjs/{DivaStandardPlanner-816f7344.js → DivaStandardPlanner-be62d50f.js} +4 -3
  3. package/build/cjs/{DoorPlanner-b5c5993b.js → DoorPlanner-52a515db.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-6bbb3036.js → Host3DSignalR-c5fa8d61.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-69df31a9.js → LiviqueWWSHandler-7692cac0.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-c15ee67a.js → PfisterWWSHandler-af5d982f.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-2f00b260.js → PlannerHandler2D-cf080fd5.js} +1 -1
  8. package/build/cjs/{SeriousBasketHandler-f2a7887a.js → SeriousBasketHandler-05ef0a50.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-613aae50.js → ShelfPlanner-aa6fa9ae.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-71564218.js → StandardWWSHandler-0a959dd8.js} +1 -1
  11. package/build/cjs/{index-f1a70eb3.js → index-83dfa5ef.js} +186 -151
  12. package/build/cjs/index.js +1 -3
  13. package/build/esm/{DivaBoxPlanner-c3688dbb.js → DivaBoxPlanner-68835bff.js} +488 -265
  14. package/build/esm/{DivaStandardPlanner-5908d45b.js → DivaStandardPlanner-edab8611.js} +4 -3
  15. package/build/esm/{DoorPlanner-63d43d9b.js → DoorPlanner-d243c8a2.js} +1 -1
  16. package/build/esm/{Host3DSignalR-e0fd5c5e.js → Host3DSignalR-2ac24936.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-aa489385.js → LiviqueWWSHandler-9e3829b9.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-88f3bc2f.js → PfisterWWSHandler-5d99b08c.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-43910df5.js → PlannerHandler2D-6aa7326e.js} +1 -1
  20. package/build/esm/{SeriousBasketHandler-6a8f0e2d.js → SeriousBasketHandler-e47f2d8c.js} +1 -1
  21. package/build/esm/{ShelfPlanner-e548f714.js → ShelfPlanner-e187be95.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-f2e16ec1.js → StandardWWSHandler-ee22c3f6.js} +1 -1
  23. package/build/esm/{index-14f79ee4.js → index-07df9d4d.js} +187 -150
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +0 -1
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts +0 -2
  28. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/API/Checkout.d.ts +1 -0
  30. package/build/types/web-planner-logic/src/interface/API/Checkout.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +1 -1
  32. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  34. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +2 -0
  36. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/ReturnTypes/index.d.ts +1 -0
  38. package/build/types/web-planner-logic/src/interface/ReturnTypes/index.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +0 -1
  40. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +3 -1
  42. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +2 -1
  44. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +4 -4
  46. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +1 -0
  48. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  52. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +1 -0
  53. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  54. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  56. package/package.json +2 -2
@@ -5,11 +5,11 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-f1a70eb3.js');
8
+ var index = require('./index-83dfa5ef.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
11
- var PlannerHandler2D = require('./PlannerHandler2D-2f00b260.js');
12
- require('@babel/runtime/helpers/slicedToArray');
11
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-cf080fd5.js');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
15
15
  require('@crystaldesign/basket-model');
@@ -28,6 +28,7 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
28
28
  var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
29
29
  var DivaUtils__default = /*#__PURE__*/_interopDefaultLegacy(DivaUtils);
30
30
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
31
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
31
32
 
32
33
  var LOG$3 = DivaUtils__default["default"].initLog('Planner', 'WEB-PLANNER-LOGIC');
33
34
  var BoxPlannerPartlistHelper = /*#__PURE__*/function () {
@@ -1971,6 +1972,18 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1971
1972
  if (!this.hideOptionsForConstruction.has(elementId)) this.hideOptionsForConstruction.set(elementId, []);
1972
1973
  (_this$hideOptionsForC2 = this.hideOptionsForConstruction.get(elementId)) === null || _this$hideOptionsForC2 === void 0 || _this$hideOptionsForC2.push(option);
1973
1974
  }
1975
+ }, {
1976
+ key: "setOptionDoCustom",
1977
+ value: function setOptionDoCustom(elementId, option, val, optionHandler) {
1978
+ var _optionHandler$get4, _this$hideOptionsForC3;
1979
+ // LOG.log("Update Box Planner Logic. SetOptionDoHide: elementId: " + elementId + "; Option: " + option);
1980
+ var curOptVisibilityInfo = this.constructionRules.optionsVisibilityInfo[option];
1981
+ if (!curOptVisibilityInfo) return;
1982
+ if (!optionHandler.has(elementId)) optionHandler.set(elementId, new Map());
1983
+ (_optionHandler$get4 = optionHandler.get(elementId)) === null || _optionHandler$get4 === void 0 || _optionHandler$get4.set(option, curOptVisibilityInfo[val]);
1984
+ if (!this.hideOptionsForConstruction.has(elementId)) this.hideOptionsForConstruction.set(elementId, []);
1985
+ (_this$hideOptionsForC3 = this.hideOptionsForConstruction.get(elementId)) === null || _this$hideOptionsForC3 === void 0 || _this$hideOptionsForC3.push(option);
1986
+ }
1974
1987
 
1975
1988
  //Returns all
1976
1989
  }, {
@@ -2011,7 +2024,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2011
2024
  }
2012
2025
  var allElementIds = boxPlannerGrid.getAllElementIdsInGrid(); //run through front an backside grid
2013
2026
  for (var i = 0; i < allElementIds.length; i++) {
2014
- var _optionHandler$get4;
2027
+ var _optionHandler$get5;
2015
2028
  if (this.hideOptionsForConstruction.has(allElementIds[i]) && this.hideOptionsForConstruction.get(allElementIds[i]).length > 0) {
2016
2029
  while (this.hideOptionsForConstruction.get(allElementIds[i]).length > 0) {
2017
2030
  var optName = this.hideOptionsForConstruction.get(allElementIds[i])[0];
@@ -2100,7 +2113,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2100
2113
 
2101
2114
  ///Add debug input
2102
2115
  if (!optionHandler.has(allElementIds[i])) optionHandler.set(allElementIds[i], new Map());
2103
- (_optionHandler$get4 = optionHandler.get(allElementIds[i])) === null || _optionHandler$get4 === void 0 || _optionHandler$get4.set('DEBUG', boxPlannerGrid.getElementById(allElementIds[i]).getPosNr() + '');
2116
+ (_optionHandler$get5 = optionHandler.get(allElementIds[i])) === null || _optionHandler$get5 === void 0 || _optionHandler$get5.set('DEBUG', boxPlannerGrid.getElementById(allElementIds[i]).getPosNr() + '');
2104
2117
  if (opvToReset.length > 0) {
2105
2118
  for (var r = 0; r < opvToReset.length; r++) {
2106
2119
  var articleOPV = this.getOptionVal(allElementIds[i], opvToReset[r].opt, optionHandler);
@@ -2380,6 +2393,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2380
2393
  key: "correctSimpleOpt",
2381
2394
  value: function correctSimpleOpt(xIndex, yIndex, boxPlannerGrid, optionHandler, fromBackside) {
2382
2395
  var curElement = boxPlannerGrid.getPlannerElementAtGridPos(xIndex, yIndex, fromBackside);
2396
+ if (!curElement) return;
2383
2397
  //Schauen ob Element top Element hat.
2384
2398
  if (this.constructionRules.defaultConstructionRules.TOP) {
2385
2399
  var hasTopElement = boxPlannerGrid.getElementHasTopElement(curElement.ElementId);
@@ -2605,13 +2619,12 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2605
2619
  if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2606
2620
  if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2607
2621
  if (isOver) {
2608
- if (dimRule.higherLimit.toLowerCase() == 'doshow') return true;else if (dimRule.higherLimit.toLowerCase() == 'dohide') return false;
2622
+ return dimRule.higherLimit;
2609
2623
  } else if (isEqual) {
2610
- return true;
2624
+ return dimRule.higherLimit;
2611
2625
  } else {
2612
- if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2626
+ return dimRule.lowerLimit;
2613
2627
  }
2614
- return false;
2615
2628
  }
2616
2629
 
2617
2630
  /*
@@ -2622,42 +2635,34 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2622
2635
  key: "correctOverHangingElement",
2623
2636
  value: function correctOverHangingElement(changedElementId, boxPlannerGrid, optionHandler, changedOPTs) {
2624
2637
  var _this2 = this;
2625
- if (!changedOPTs) return;
2626
- var _loop = function _loop() {
2627
- var elements = boxPlannerGrid.getAllElementsInColumn(columndIdx, false, false); // from bottom to top
2628
- var lastElement = null;
2629
- var changedElementIdx = elements.findIndex(function (e) {
2630
- return e.ElementId == changedElementId;
2631
- });
2632
- elements.forEach(function (element, idx) {
2633
- var _lastElement$Width, _element$Width, _lastElement$Depth, _element$Depth;
2634
- if (!lastElement) {
2635
- lastElement = element;
2636
- return;
2637
- }
2638
- if (((_lastElement$Width = lastElement.Width) !== null && _lastElement$Width !== void 0 ? _lastElement$Width : 0) > ((_element$Width = element.Width) !== null && _element$Width !== void 0 ? _element$Width : 0)) {
2639
- // is either the above wider opt or the one under and smaller
2640
- var t = Object.entries(changedOPTs);
2641
- var opt = t[0][0];
2642
- var opv = t[0][1];
2643
- if (idx < changedElementIdx) {
2644
- _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2645
- } else {
2646
- _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2647
- }
2648
- }
2649
- if (((_lastElement$Depth = lastElement.Depth) !== null && _lastElement$Depth !== void 0 ? _lastElement$Depth : 0) > ((_element$Depth = element.Depth) !== null && _element$Depth !== void 0 ? _element$Depth : 0)) {
2650
- var _t = Object.entries(changedOPTs); // should be the new wider width that causes the overhanging
2651
- var _opt = _t[0][0];
2652
- var _opv2 = _t[0][1];
2653
- _this2.setOptionValue(element.ElementId, _opt, _opv2, optionHandler);
2654
- }
2655
- lastElement = element;
2656
- });
2657
- };
2658
- for (var columndIdx = 0; columndIdx < boxPlannerGrid.getColumnCount(); columndIdx++) {
2659
- _loop();
2660
- }
2638
+ if (!changedOPTs || !changedElementId) return;
2639
+ var startIdx = boxPlannerGrid.getCellsInGridByElementId(changedElementId).startColIndex;
2640
+ var elements = boxPlannerGrid.getAllElementsInColumn(startIdx, false, true); // from bottom to top
2641
+ var changedElementIdx = elements.findIndex(function (e) {
2642
+ return e.ElementId == changedElementId;
2643
+ });
2644
+ var changedElement = elements[changedElementIdx];
2645
+ if (!changedElement) return; // nothing changed in this row
2646
+ var t = Object.entries(changedOPTs);
2647
+ var opt = t[0][0];
2648
+ var opv = t[0][1];
2649
+ elements.forEach(function (element, idx) {
2650
+ if (idx < changedElementIdx) {
2651
+ //under the changed one
2652
+ var rightNeighbours = boxPlannerGrid.getNeighborElements(element.ElementId, "RIGHT");
2653
+ var freeSpace = element.Width;
2654
+ rightNeighbours.forEach(function (n) {
2655
+ if (n.ElementId == changedElement.ElementId) return;
2656
+ if (!boxPlannerGrid.getNeighborElements(n.ElementId, "TOP", false).find(function (n) {
2657
+ return n.ElementId != changedElement.ElementId;
2658
+ })) freeSpace += n.Width;
2659
+ });
2660
+ if (changedElement.Width > freeSpace) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2661
+ } else {
2662
+ // over the changed one
2663
+ if (changedElement.Width < element.Width) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2664
+ }
2665
+ });
2661
2666
  }
2662
2667
  }, {
2663
2668
  key: "correctFoot",
@@ -2674,31 +2679,35 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2674
2679
  * */
2675
2680
  }, {
2676
2681
  key: "correctOptionsInfluencedByDimensions",
2677
- value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2682
+ value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs) {
2678
2683
  var _this4 = this;
2679
2684
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2680
2685
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2681
2686
  var allElements = boxPlannerGrid.getAllElementsInFrontGrid();
2682
- this.constructionRules.optionsInfluencedByDimensions.forEach(function (dimRule) {
2683
- if (Array.isArray(dimRule)) {
2684
- if (dimRule.every(function (rule) {
2685
- return _this4.validateDimensionRule(rule, boxPlannerSize);
2686
- })) dimRule.forEach(function (rule) {
2687
- return allElements.forEach(function (element) {
2688
- return _this4.setOptionDoShow(element.ElementId, rule.option, optionHandler);
2689
- });
2690
- });else dimRule.forEach(function (rule) {
2691
- return allElements.forEach(function (element) {
2692
- return _this4.setOptionDoHide(element.ElementId, rule.option, optionHandler);
2693
- });
2694
- });
2695
- } else {
2696
- if (_this4.validateDimensionRule(dimRule, boxPlannerSize)) allElements.forEach(function (element) {
2697
- return _this4.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2698
- });else allElements.forEach(function (element) {
2699
- return _this4.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2687
+ var setRule = function setRule(rule) {
2688
+ var res = _this4.validateDimensionRule(rule, boxPlannerSize);
2689
+ if (changedOPTs) {
2690
+ var changedOpt = Object.entries(changedOPTs).find(function (_ref) {
2691
+ var _ref2 = _slicedToArray__default["default"](_ref, 2),
2692
+ key = _ref2[0];
2693
+ _ref2[1];
2694
+ return key == rule.option;
2700
2695
  });
2696
+ if (changedOpt) {
2697
+ allElements.forEach(function (element) {
2698
+ return _this4.setOptionValue(element.ElementId, changedOpt[0], changedOpt[1], optionHandler);
2699
+ });
2700
+ return;
2701
+ }
2701
2702
  }
2703
+ allElements.forEach(function (element) {
2704
+ return _this4.setOptionDoCustom(element.ElementId, res, rule.option, optionHandler);
2705
+ });
2706
+ };
2707
+ this.constructionRules.optionsInfluencedByDimensions.forEach(function (dimRule) {
2708
+ if (Array.isArray(dimRule)) dimRule.forEach(function (rule) {
2709
+ return setRule(rule);
2710
+ });else setRule(dimRule);
2702
2711
  });
2703
2712
  }
2704
2713
  }, {
@@ -2771,22 +2780,22 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2771
2780
 
2772
2781
  // default => set all to ohne
2773
2782
  serie.forEach(function (element) {
2774
- var _element$Width2;
2775
- seriesWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2776
- boxPlannerGrid.getAllElementsDown(element.ElementId).elements.forEach(function (e) {
2783
+ var _element$size$width;
2784
+ seriesWidth += (_element$size$width = element.size.width) !== null && _element$size$width !== void 0 ? _element$size$width : 0;
2785
+ boxPlannerGrid.getAllElementsDown(element.elementId).elements.forEach(function (e) {
2777
2786
  return _this5.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2778
2787
  });
2779
- _this5.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2788
+ _this5.setOptionValue(element.elementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2780
2789
  });
2781
2790
  var firstUncoveredElement = serie[0];
2782
- var _loop2 = function _loop2() {
2791
+ var _loop = function _loop() {
2783
2792
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2784
2793
  // is a clean element ending
2785
2794
  var helperWidth = 0;
2786
2795
  var isClean = false;
2787
2796
  serie.forEach(function (element) {
2788
- var _element$Width3;
2789
- helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2797
+ var _element$size$width2;
2798
+ helperWidth += (_element$size$width2 = element.size.width) !== null && _element$size$width2 !== void 0 ? _element$size$width2 : 0;
2790
2799
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2791
2800
  });
2792
2801
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2795,11 +2804,11 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2795
2804
  if (!opv) return {
2796
2805
  v: void 0
2797
2806
  };
2798
- _this5.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2807
+ _this5.setOptionValue(firstUncoveredElement.elementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2799
2808
  var helperWidth = 0;
2800
2809
  firstUncoveredElement = serie.find(function (e) {
2801
- var _e$Width;
2802
- helperWidth += (_e$Width = e.Width) !== null && _e$Width !== void 0 ? _e$Width : 0;
2810
+ var _e$size$width;
2811
+ helperWidth += (_e$size$width = e.size.width) !== null && _e$size$width !== void 0 ? _e$size$width : 0;
2803
2812
  if (helperWidth > opv.limit) return true;
2804
2813
  return false;
2805
2814
  });
@@ -2808,7 +2817,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2808
2817
  },
2809
2818
  _ret;
2810
2819
  while (seriesWidth != 0) {
2811
- _ret = _loop2();
2820
+ _ret = _loop();
2812
2821
  if (_ret) return _ret.v;
2813
2822
  }
2814
2823
  });
@@ -3135,7 +3144,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3135
3144
  value: function () {
3136
3145
  var _updateOptionLogicBoxPlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(boxPlannerGrid, changedOPTs, targetElements, forceResetCornerElements) {
3137
3146
  var _targetElements;
3138
- var startTime, resultMessage, optionHandler, allElements, i, _iterator, _step, coverPlateRule, j, doChangeRetailArticleNumbers;
3147
+ var startTime, resultMessage, optionHandler, allElements, i, j, _boxPlannerGrid$getPl2, elementId, _boxPlannerGrid$getPl3, _elementId, _iterator, _step, coverPlateRule, _boxPlannerGrid$getPl4, _elementId2, doChangeRetailArticleNumbers;
3139
3148
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
3140
3149
  while (1) switch (_context.prev = _context.next) {
3141
3150
  case 0:
@@ -3170,19 +3179,6 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3170
3179
  this.correctBottom(boxPlannerGrid, optionHandler, false);
3171
3180
  if (boxPlannerGrid.getPlannerHasActiveBackside()) this.correctBottom(boxPlannerGrid, optionHandler, true);
3172
3181
  this.correctSeries(boxPlannerGrid, optionHandler);
3173
- if (this.constructionRules.coverPlateRule) {
3174
- _iterator = _createForOfIteratorHelper$1(this.constructionRules.coverPlateRule);
3175
- try {
3176
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
3177
- coverPlateRule = _step.value;
3178
- this.correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler);
3179
- }
3180
- } catch (err) {
3181
- _iterator.e(err);
3182
- } finally {
3183
- _iterator.f();
3184
- }
3185
- }
3186
3182
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3187
3183
  for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3188
3184
  this.correctSimpleOpt(i, j, boxPlannerGrid, optionHandler, false);
@@ -3195,39 +3191,126 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3195
3191
  }
3196
3192
  }
3197
3193
  }
3198
- for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3199
- for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3200
- this.correctForceOptOfElement(boxPlannerGrid.getPlannerElementAtGridPos(i, j, false).ElementId, boxPlannerGrid, optionHandler, false);
3201
- this.correctNeighborCustomOLTs(boxPlannerGrid.getPlannerElementAtGridPos(i, j, false).ElementId, boxPlannerGrid, optionHandler);
3202
- }
3194
+ i = 0;
3195
+ case 17:
3196
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3197
+ _context.next = 31;
3198
+ break;
3203
3199
  }
3204
- if (boxPlannerGrid.getPlannerHasActiveBackside()) {
3205
- for (i = boxPlannerGrid.getColumnCount() - 1; i >= 0; i--) {
3206
- for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3207
- this.correctForceOptOfElement(boxPlannerGrid.getPlannerElementAtGridPos(i, j, true).ElementId, boxPlannerGrid, optionHandler, true);
3208
- this.correctNeighborCustomOLTs(boxPlannerGrid.getPlannerElementAtGridPos(i, j, true).ElementId, boxPlannerGrid, optionHandler);
3209
- }
3210
- }
3200
+ j = 0;
3201
+ case 19:
3202
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3203
+ _context.next = 28;
3204
+ break;
3205
+ }
3206
+ elementId = (_boxPlannerGrid$getPl2 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl2 === void 0 ? void 0 : _boxPlannerGrid$getPl2.ElementId;
3207
+ if (elementId) {
3208
+ _context.next = 23;
3209
+ break;
3211
3210
  }
3211
+ return _context.abrupt("continue", 25);
3212
+ case 23:
3213
+ this.correctForceOptOfElement(elementId, boxPlannerGrid, optionHandler, false);
3214
+ this.correctNeighborCustomOLTs(elementId, boxPlannerGrid, optionHandler);
3215
+ case 25:
3216
+ j++;
3217
+ _context.next = 19;
3218
+ break;
3219
+ case 28:
3220
+ i++;
3221
+ _context.next = 17;
3222
+ break;
3223
+ case 31:
3224
+ if (!boxPlannerGrid.getPlannerHasActiveBackside()) {
3225
+ _context.next = 47;
3226
+ break;
3227
+ }
3228
+ i = boxPlannerGrid.getColumnCount() - 1;
3229
+ case 33:
3230
+ if (!(i >= 0)) {
3231
+ _context.next = 47;
3232
+ break;
3233
+ }
3234
+ j = 0;
3235
+ case 35:
3236
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3237
+ _context.next = 44;
3238
+ break;
3239
+ }
3240
+ _elementId = (_boxPlannerGrid$getPl3 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl3 === void 0 ? void 0 : _boxPlannerGrid$getPl3.ElementId;
3241
+ if (_elementId) {
3242
+ _context.next = 39;
3243
+ break;
3244
+ }
3245
+ return _context.abrupt("continue", 41);
3246
+ case 39:
3247
+ this.correctForceOptOfElement(_elementId, boxPlannerGrid, optionHandler, true);
3248
+ this.correctNeighborCustomOLTs(_elementId, boxPlannerGrid, optionHandler);
3249
+ case 41:
3250
+ j++;
3251
+ _context.next = 35;
3252
+ break;
3253
+ case 44:
3254
+ i--;
3255
+ _context.next = 33;
3256
+ break;
3257
+ case 47:
3212
3258
  this.correctFoot(boxPlannerGrid, optionHandler);
3213
3259
  this.correctLadder(boxPlannerGrid, optionHandler);
3214
- this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3260
+ this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs);
3215
3261
  this.correctOverHangingElement((_targetElements = targetElements) === null || _targetElements === void 0 ? void 0 : _targetElements[0], boxPlannerGrid, optionHandler, changedOPTs);
3216
3262
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3217
3263
  this.partlistHelper.calculateRahmen(boxPlannerGrid, optionHandler);
3218
- for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3219
- for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3220
- this.correctBack(boxPlannerGrid, optionHandler, boxPlannerGrid.getPlannerElementAtGridPos(i, j, false).getElementId());
3264
+ if (this.constructionRules.coverPlateRule) {
3265
+ _iterator = _createForOfIteratorHelper$1(this.constructionRules.coverPlateRule);
3266
+ try {
3267
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3268
+ coverPlateRule = _step.value;
3269
+ this.correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler);
3270
+ }
3271
+ } catch (err) {
3272
+ _iterator.e(err);
3273
+ } finally {
3274
+ _iterator.f();
3221
3275
  }
3222
3276
  }
3277
+ i = 0;
3278
+ case 55:
3279
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3280
+ _context.next = 68;
3281
+ break;
3282
+ }
3283
+ j = 0;
3284
+ case 57:
3285
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3286
+ _context.next = 65;
3287
+ break;
3288
+ }
3289
+ _elementId2 = (_boxPlannerGrid$getPl4 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl4 === void 0 ? void 0 : _boxPlannerGrid$getPl4.getElementId();
3290
+ if (_elementId2) {
3291
+ _context.next = 61;
3292
+ break;
3293
+ }
3294
+ return _context.abrupt("continue", 62);
3295
+ case 61:
3296
+ this.correctBack(boxPlannerGrid, optionHandler, _elementId2);
3297
+ case 62:
3298
+ j++;
3299
+ _context.next = 57;
3300
+ break;
3301
+ case 65:
3302
+ i++;
3303
+ _context.next = 55;
3304
+ break;
3305
+ case 68:
3223
3306
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3224
- _context.next = 29;
3307
+ _context.next = 71;
3225
3308
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3226
- case 29:
3309
+ case 71:
3227
3310
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3228
3311
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3229
3312
  return _context.abrupt("return", resultMessage);
3230
- case 32:
3313
+ case 74:
3231
3314
  case "end":
3232
3315
  return _context.stop();
3233
3316
  }
@@ -3355,7 +3438,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3355
3438
  var cells = [];
3356
3439
  for (var i = 0; i < colCount; i++) {
3357
3440
  for (var j = 0; j < rowCount; j++) {
3358
- var _cell = {
3441
+ var _cell2 = {
3359
3442
  plannedElement: {
3360
3443
  basketId: newElement.getBasketId(),
3361
3444
  elementId: newElement.getElementId(),
@@ -3374,7 +3457,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3374
3457
  },
3375
3458
  index: new index.Vector2(startColIndex + i, startRowIndex + j)
3376
3459
  };
3377
- cells.push(_cell);
3460
+ cells.push(_cell2);
3378
3461
  }
3379
3462
  }
3380
3463
  return cells;
@@ -3663,10 +3746,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3663
3746
  }
3664
3747
  for (var i = 0; i < backGrid.length; i++) {
3665
3748
  for (var j = 0; j < backGrid[i].length; j++) {
3666
- var _cell2$plannedElement;
3667
- var _cell2 = backGrid[i][j];
3668
- var _elementId = (_cell2$plannedElement = _cell2.plannedElement) === null || _cell2$plannedElement === void 0 ? void 0 : _cell2$plannedElement.elementId;
3669
- if (_cell2 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3749
+ var _cell3$plannedElement;
3750
+ var _cell3 = backGrid[i][j];
3751
+ var _elementId = (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3752
+ if (_cell3 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3670
3753
  var _element = this.getElementById(_elementId);
3671
3754
  allCheckedElementIds.push(_elementId);
3672
3755
  returnElements.push(_element);
@@ -3930,10 +4013,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3930
4013
  }
3931
4014
  } else {
3932
4015
  for (var i = curGrid[index].length - 1; i >= 0; i--) {
3933
- var _cell3$plannedElement;
3934
- var _cell3 = curGrid[index][i];
3935
- var _elementId4 = _cell3 === null || _cell3 === void 0 || (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3936
- if (_cell3 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
4016
+ var _cell4$plannedElement;
4017
+ var _cell4 = curGrid[index][i];
4018
+ var _elementId4 = _cell4 === null || _cell4 === void 0 || (_cell4$plannedElement = _cell4.plannedElement) === null || _cell4$plannedElement === void 0 ? void 0 : _cell4$plannedElement.elementId;
4019
+ if (_cell4 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
3937
4020
  allElementIds.push(_elementId4);
3938
4021
  allElements.push(this.plannerElements.get(_elementId4));
3939
4022
  }
@@ -4022,31 +4105,64 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4022
4105
  }, {
4023
4106
  key: "getNeighborElements",
4024
4107
  value: function getNeighborElements(elementId, dir) {
4025
- var _curGrid$area$toX, _curGrid$area$toX2, _curGrid2, _curGrid3, _curGrid$area$fromX, _topNeighbour$planned, _curGrid$area$fromX2, _downNeighbour$planne;
4108
+ var _this = this,
4109
+ _plannedElement3,
4110
+ _curGrid$area$fromX,
4111
+ _downNeighbour$planne;
4112
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
4026
4113
  var res = this.getCellsInGridByElementId(elementId);
4027
4114
  var curGrid = res.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4028
4115
  var result = [];
4029
4116
  var plannedElement = res.cells[0].plannedElement;
4030
4117
  if (!plannedElement) return result;
4118
+ var currentRow = curGrid[plannedElement.area.fromX];
4119
+ var startHeight = 0;
4120
+ var endHeight = 0;
4121
+ currentRow.forEach(function (cell) {
4122
+ if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000);
4123
+ if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000);
4124
+ });
4031
4125
  switch (dir) {
4032
4126
  case 'RIGHT':
4033
4127
  // only clean neighbours (for docking) add property if you also need clean ones
4034
- var rLowestNeighbour = (_curGrid$area$toX = curGrid[plannedElement.area.toX]) === null || _curGrid$area$toX === void 0 || (_curGrid$area$toX = _curGrid$area$toX[plannedElement.area.fromY]) === null || _curGrid$area$toX === void 0 || (_curGrid$area$toX = _curGrid$area$toX.plannedElement) === null || _curGrid$area$toX === void 0 ? void 0 : _curGrid$area$toX.elementId;
4035
- var rHighestNeighbour = (_curGrid$area$toX2 = curGrid[plannedElement.area.toX]) === null || _curGrid$area$toX2 === void 0 || (_curGrid$area$toX2 = _curGrid$area$toX2[plannedElement.area.toY - 1]) === null || _curGrid$area$toX2 === void 0 || (_curGrid$area$toX2 = _curGrid$area$toX2.plannedElement) === null || _curGrid$area$toX2 === void 0 ? void 0 : _curGrid$area$toX2.elementId;
4036
- if (rLowestNeighbour == rHighestNeighbour && rLowestNeighbour) result.push(this.plannerElements.get(rLowestNeighbour));
4128
+
4129
+ var neighbourRow = curGrid[plannedElement.area.toX];
4130
+ if (!neighbourRow) break;
4131
+ var neighbourSize = 0;
4132
+ var neighbours = neighbourRow.filter(function (cell) {
4133
+ if (clean && neighbourSize == startHeight) return true;else if (!clean && neighbourSize > endHeight) return true;
4134
+ neighbourSize = Math.round((neighbourSize + cell.plannedElement.size.height) * 1000);
4135
+ return false;
4136
+ });
4137
+ neighbours.forEach(function (n) {
4138
+ return !result.find(function (r) {
4139
+ return r.ElementId == n.plannedElement.elementId;
4140
+ }) && result.push(_this.plannerElements.get(n.plannedElement.elementId));
4141
+ });
4037
4142
  break;
4038
4143
  case 'LEFT':
4039
- var lowestNeighbour = (_curGrid2 = curGrid[plannedElement.area.fromX - 1]) === null || _curGrid2 === void 0 || (_curGrid2 = _curGrid2[plannedElement.area.fromY]) === null || _curGrid2 === void 0 || (_curGrid2 = _curGrid2.plannedElement) === null || _curGrid2 === void 0 ? void 0 : _curGrid2.elementId;
4040
- var highestNeighbour = (_curGrid3 = curGrid[plannedElement.area.fromX - 1]) === null || _curGrid3 === void 0 || (_curGrid3 = _curGrid3[plannedElement.area.toY - 1]) === null || _curGrid3 === void 0 || (_curGrid3 = _curGrid3.plannedElement) === null || _curGrid3 === void 0 ? void 0 : _curGrid3.elementId;
4041
- if (lowestNeighbour == highestNeighbour && lowestNeighbour) result.push(this.plannerElements.get(lowestNeighbour));
4144
+ var leftNeighbourRow = curGrid[plannedElement.area.fromX - 1];
4145
+ if (!leftNeighbourRow) break;
4146
+ var leftNeighbourSize = 0;
4147
+ var leftStartElement = leftNeighbourRow.find(function (cell) {
4148
+ if (leftNeighbourSize == startHeight) return true;
4149
+ leftNeighbourSize = Math.round((leftNeighbourSize + cell.plannedElement.size.height) * 1000);
4150
+ return false;
4151
+ });
4152
+ if (leftStartElement) result.push(this.plannerElements.get(leftStartElement.plannedElement.elementId));
4042
4153
  break;
4043
4154
  case 'TOP':
4044
- var topNeighbour = (_curGrid$area$fromX = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX === void 0 ? void 0 : _curGrid$area$fromX[plannedElement.area.toY];
4045
- var tElementId = topNeighbour === null || topNeighbour === void 0 || (_topNeighbour$planned = topNeighbour.plannedElement) === null || _topNeighbour$planned === void 0 ? void 0 : _topNeighbour$planned.elementId;
4155
+ var topNeighbour = undefined;
4156
+ for (var y = plannedElement.area.toY; y < curGrid[plannedElement.area.fromX].length; y++) {
4157
+ topNeighbour = curGrid[plannedElement.area.fromX][y];
4158
+ break;
4159
+ }
4160
+ if (!topNeighbour) break;
4161
+ var tElementId = (_plannedElement3 = topNeighbour.plannedElement) === null || _plannedElement3 === void 0 ? void 0 : _plannedElement3.elementId;
4046
4162
  if (tElementId) result.push(this.plannerElements.get(tElementId));
4047
4163
  break;
4048
4164
  case 'DOWN':
4049
- var downNeighbour = (_curGrid$area$fromX2 = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX2 === void 0 ? void 0 : _curGrid$area$fromX2[plannedElement.area.fromY - 1];
4165
+ var downNeighbour = (_curGrid$area$fromX = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX === void 0 ? void 0 : _curGrid$area$fromX[plannedElement.area.fromY - 1];
4050
4166
  var dElementId = downNeighbour === null || downNeighbour === void 0 || (_downNeighbour$planne = downNeighbour.plannedElement) === null || _downNeighbour$planne === void 0 ? void 0 : _downNeighbour$planne.elementId;
4051
4167
  if (dElementId) result.push(this.plannerElements.get(dElementId));
4052
4168
  break;
@@ -4116,9 +4232,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4116
4232
  var curHeight = 0;
4117
4233
  var row = frontGrid[x];
4118
4234
  for (var y = 0; y < row.length;) {
4119
- var _cell4, _cell$plannedElement$, _cell$plannedElement8;
4235
+ var _cell5, _cell$plannedElement$, _cell$plannedElement8;
4120
4236
  var cell = row[y];
4121
- var elementId = (_cell4 = cell) === null || _cell4 === void 0 || (_cell4 = _cell4.plannedElement) === null || _cell4 === void 0 ? void 0 : _cell4.elementId;
4237
+ var elementId = (_cell5 = cell) === null || _cell5 === void 0 || (_cell5 = _cell5.plannedElement) === null || _cell5 === void 0 ? void 0 : _cell5.elementId;
4122
4238
  if (elementId && cell && checkedElementIds.indexOf(elementId) == -1) {
4123
4239
  curHeight += this.plannerElements.get(elementId).getHeight();
4124
4240
  if (x == 0 && y == 0) depth = this.plannerElements.get(elementId).getDepth();
@@ -4148,9 +4264,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4148
4264
  var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4149
4265
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4150
4266
  var result = [];
4267
+ var grid = this.generalPlanningState.grids[0].matrix;
4151
4268
  var lastHeight = -1;
4152
- for (var x = 0; x < this.getColumnCount();) {
4153
- var row = this.generalPlanningState.grids[0].matrix[x];
4269
+ for (var x = 0; x < grid.length;) {
4270
+ var _grid$new_x;
4271
+ var row = grid[x];
4154
4272
  var height = 0;
4155
4273
  for (var y = 0; y < row.length;) {
4156
4274
  var element = row[y].plannedElement;
@@ -4159,12 +4277,20 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4159
4277
  }
4160
4278
  if (Math.round(height) == Math.round(lastHeight) || onBottom) {
4161
4279
  if (!result[result.length - 1]) result.push([]);
4162
- result[result.length - 1].push(this.getPlannerElementAtGridPos(x, row.length - 1, false));
4163
- } else {
4164
- result.push([this.getPlannerElementAtGridPos(x, row.length - 1, false)]);
4280
+ result[result.length - 1].push(grid[x][row.length - 1].plannedElement);
4281
+ } else if (grid[x][row.length - 1].plannedElement.area.fromX == x) {
4282
+ result.push([grid[x][row.length - 1].plannedElement]);
4165
4283
  }
4166
4284
  lastHeight = height;
4167
- x = row[row.length - 1].plannedElement ? row[row.length - 1].plannedElement.area.toX : x + 1;
4285
+ var new_x = row[row.length - 1].plannedElement.area.toX;
4286
+ var newHeight = (_grid$new_x = grid[new_x]) === null || _grid$new_x === void 0 ? void 0 : _grid$new_x.length;
4287
+
4288
+ // if the next row is fx. lower and doesn't have a clean cut here we need to skip more
4289
+ if (newHeight && newHeight != row.length) {
4290
+ var cell = grid[new_x][newHeight - 1];
4291
+ if (cell.index.x != cell.plannedElement.area.fromX) new_x = cell.plannedElement.area.toX;
4292
+ }
4293
+ x = new_x;
4168
4294
  }
4169
4295
  return result;
4170
4296
  }
@@ -4210,18 +4336,19 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4210
4336
  }, {
4211
4337
  key: "getAllElementsToFillUp",
4212
4338
  value: function getAllElementsToFillUp(elementId, dir) {
4213
- var _this = this;
4339
+ var _this2 = this;
4214
4340
  var curPos = this.getCellsInGridByElementId(elementId);
4215
4341
 
4216
4342
  //columns and rows are swapped don't ask me why
4217
4343
  var element = curPos.cells[0].plannedElement;
4218
4344
  var index = {
4219
- x: curPos.startColIndex,
4345
+ x: dir == 'LEFT' ? curPos.startColIndex : curPos.endColIndex - 1,
4220
4346
  y: curPos.startRowIndex
4221
4347
  };
4222
4348
  var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4223
4349
  var plannerIdsToFill = [];
4224
4350
  var existingPlannerIds = [];
4351
+ var lastFreeSpace = 0;
4225
4352
  var _loop = function _loop(_y) {
4226
4353
  var _curGrid$index$x$_y;
4227
4354
  var elementToCopy = (_curGrid$index$x$_y = curGrid[index.x][_y]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
@@ -4231,13 +4358,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4231
4358
  } // break
4232
4359
  var length = element.area.toX - element.area.fromX;
4233
4360
  var d = dir == 'RIGHT' ? +length : -length;
4234
- var isPlanned = curGrid.every(function (x, idx) {
4235
- var _x$_y;
4236
- return idx < element.area.fromX + d || idx >= element.area.toX + d || ((_x$_y = x[_y]) === null || _x$_y === void 0 ? void 0 : _x$_y.plannedElement);
4361
+ var isPlanned = curGrid.find(function (x, idx) {
4362
+ return idx == element.area.toX + d - 1 && x[x.length - 1].index.y >= elementToCopy.area.fromY;
4363
+ });
4364
+ var neighbours = _this2.getNeighborElements(elementToCopy.elementId, dir);
4365
+ var freeSpace = 0;
4366
+ neighbours.forEach(function (n) {
4367
+ if (_this2.getNeighborElements(n.ElementId, "TOP").length == 0) freeSpace += n.Width;
4237
4368
  });
4238
- var neighbour = _this.getNeighborElements(elementToCopy.elementId, dir);
4239
- if (neighbour.length == 0 && !isPlanned && elementToCopy) plannerIdsToFill.push(elementToCopy.elementId);else if (elementToCopy) existingPlannerIds.push(elementToCopy.elementId);
4369
+ if (neighbours.length == 0 && lastFreeSpace >= elementToCopy.size.width && !isPlanned && elementToCopy) plannerIdsToFill.push(elementToCopy.elementId);
4370
+ if (neighbours.length > 0 && freeSpace > element.size.width) plannerIdsToFill.push(neighbours[neighbours.length - 1].ElementId);else if (elementToCopy) existingPlannerIds.push(elementToCopy.elementId);
4240
4371
  _y = elementToCopy.area.toY;
4372
+ lastFreeSpace = freeSpace;
4241
4373
  y = _y;
4242
4374
  };
4243
4375
  for (var y = 0; y <= index.y;) {
@@ -4418,13 +4550,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4418
4550
  var elementData = this.plannerElements.get(elementId);
4419
4551
  var deletedCells = this.getCellsInGridByElementId(elementId);
4420
4552
  if (!elementData) return;
4421
- this.deleteElement(elementId, "STD");
4553
+ this.deleteElement(elementId, 'STD');
4422
4554
  var curGrid = this.generalPlanningState.grids[0].matrix;
4423
4555
  var cells = undefined;
4424
- if (absoluteIndex.x < 0 || absoluteIndex.y == 0 && deletedCells.endRowIndex >= absoluteIndex.x // moved 0 to 4 so now shift to left
4425
- ) {
4556
+ if (absoluteIndex.x < 0 && absoluteIndex.y == 0) {
4426
4557
  var dir = deletedCells.endColIndex >= absoluteIndex.x;
4427
- if (deletedCells.startColIndex >= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4558
+ if (deletedCells.startColIndex <= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4428
4559
  if (absoluteIndex.x < 0) absoluteIndex.x = 0;
4429
4560
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4430
4561
  var movedGrid = [];
@@ -4433,9 +4564,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4433
4564
  _.forEach(function (_, y) {
4434
4565
  var newX = x;
4435
4566
  var shiftX = 0;
4436
- if (y == absoluteIndex.y) {
4437
- newX += dir ? element.area.toX - element.area.fromX : -(element.area.toX - element.area.fromX);
4438
- shiftX = dir ? element.area.toX - element.area.fromX : -(element.area.toX - element.area.fromX);
4567
+ if (y == absoluteIndex.y || absoluteIndex.y == 0) {
4568
+ newX += dir ? element.area.toX - element.area.fromX : 0;
4569
+ shiftX = dir ? element.area.toX - element.area.fromX : 0;
4439
4570
  }
4440
4571
  if (!movedGrid[newX]) movedGrid[newX] = [];
4441
4572
  var cellElem = curGrid[x][y].plannedElement;
@@ -4458,7 +4589,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4458
4589
  });
4459
4590
  curGrid = movedGrid;
4460
4591
  } else {
4461
- if (absoluteIndex.x > deletedCells.startColIndex && absoluteIndex.y == deletedCells.startRowIndex) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4592
+ if (absoluteIndex.x > deletedCells.startColIndex && deletedCells.startRowIndex == 0) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4462
4593
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4463
4594
  }
4464
4595
  for (var i = 0; i < cells.length; i++) {
@@ -4520,75 +4651,127 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4520
4651
  }, {
4521
4652
  key: "updateGridElementDimensions",
4522
4653
  value: function updateGridElementDimensions(elementId, elementData) {
4523
- var _this2 = this;
4524
- if (!elementData) return;
4654
+ var _this3 = this;
4655
+ if (!elementData) return false;
4656
+ var backup = structuredClone(this.generalPlanningState);
4525
4657
  var res = this.getCellsInGridByElementId(elementId);
4526
4658
  var scpe = this.gridSetupParams.forceSingleCellPerElement;
4659
+ var origin = {
4660
+ x: res.cells[0].plannedElement.area.toX,
4661
+ y: res.cells[0].plannedElement.area.toY
4662
+ };
4663
+ var diff = {
4664
+ x: 0,
4665
+ y: 0
4666
+ };
4527
4667
  res.cells.forEach(function (cell) {
4528
4668
  if (!cell.plannedElement) return;
4529
- cell.plannedElement.size.width = elementData.width;
4530
- cell.plannedElement.size.height = elementData.height;
4531
- cell.plannedElement.area = {
4532
- fromX: cell.index.x,
4533
- toX: !scpe ? Math.round(cell.index.x + elementData.width / _this2.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4534
- fromY: cell.index.y,
4535
- toY: !scpe ? Math.round(cell.index.y + elementData.height / _this2.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4669
+ var el = cell.plannedElement;
4670
+ el.size.width = elementData.width;
4671
+ el.size.height = elementData.height;
4672
+ el.area = {
4673
+ fromX: el.area.fromX,
4674
+ toX: !scpe ? Math.round(el.area.fromX + elementData.width / _this3.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4675
+ fromY: el.area.fromY,
4676
+ toY: !scpe ? Math.round(el.area.fromY + elementData.height / _this3.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4536
4677
  };
4678
+ diff.y = cell.plannedElement.area.toY - origin.y;
4679
+ diff.x = cell.plannedElement.area.toX - origin.x;
4537
4680
  });
4538
- if (scpe) return;
4681
+ var cell = res.cells[0];
4682
+ var grid = this.generalPlanningState.grids[0].matrix;
4683
+ // if the element got bigger we need to move all the above elements up
4684
+ // if it got wider we need to move all the elements to the right
4685
+ if (diff.y != 0) {
4686
+ for (var x = cell.plannedElement.area.fromX; x < cell.plannedElement.area.toX; x++) {
4687
+ var row = grid[x];
4688
+ if (!row) continue;
4689
+ for (var y = origin.y; y < row.length; y++) {
4690
+ var _cell = row[y];
4691
+ if (_cell.index.y != y || _cell.plannedElement.elementId == cell.plannedElement.elementId) continue; //already corrected
4692
+ _cell.index.y += diff.y;
4693
+ _cell.plannedElement.area.fromY += diff.y;
4694
+ _cell.plannedElement.area.toY += diff.y;
4695
+ }
4696
+ }
4697
+ } else if (diff.x != 0) {
4698
+ for (var _x3 = cell.plannedElement.area.fromX; _x3 < grid.length; _x3++) {
4699
+ for (var _y2 = cell.plannedElement.area.fromY; _y2 < cell.plannedElement.area.toY; _y2++) {
4700
+ var _cell6 = grid[_x3][_y2];
4701
+ if (!_cell6 || _cell6.plannedElement.elementId == elementId) continue; //already corrected
4702
+ _cell6.index.x += diff.x;
4703
+ _cell6.plannedElement.area.fromX += diff.x;
4704
+ _cell6.plannedElement.area.toX += diff.x;
4705
+ }
4706
+ }
4707
+ }
4708
+
4709
+ // after indices/areas are corrected rebuild the grid
4710
+ if (scpe) return false;
4711
+ var changedElementData = res.cells[0].plannedElement;
4539
4712
  var newGrid = new Array();
4540
4713
  var plannedCells = this.getAllUsedCellsInGrid(false);
4541
- plannedCells.forEach(function (cell) {
4542
- var area = cell.plannedElement.area;
4543
- if (newGrid.find(function (x) {
4544
- return x.find(function (y) {
4545
- var _y$plannedElement3, _cell$plannedElement9;
4546
- return ((_y$plannedElement3 = y.plannedElement) === null || _y$plannedElement3 === void 0 ? void 0 : _y$plannedElement3.elementId) == ((_cell$plannedElement9 = cell.plannedElement) === null || _cell$plannedElement9 === void 0 ? void 0 : _cell$plannedElement9.elementId);
4547
- });
4548
- })) return;
4549
- for (var x = area.fromX; x < area.toX; x++) {
4550
- var _loop2 = function _loop2(y) {
4551
- if (!newGrid[x]) newGrid[x] = [];
4552
- if (y < area.fromY) {
4553
- if (newGrid[x][y]) return 0; // continue
4554
- var el = _this2.generalPlanningState.grids[0].matrix.findLast(function (_x) {
4555
- return _x[y].plannedElement;
4556
- });
4557
- newGrid[x][y] = {
4558
- index: {
4559
- x: x,
4560
- y: y
4561
- },
4562
- plannedElement: el && el.length > 0 ? el[0].plannedElement : undefined
4714
+ var _loop2 = function _loop2() {
4715
+ var cell = plannedCells[idx];
4716
+ var area = cell.plannedElement.area;
4717
+ if (newGrid.find(function (x) {
4718
+ return x.find(function (y) {
4719
+ var _y$plannedElement3, _cell$plannedElement9;
4720
+ return (y === null || y === void 0 || (_y$plannedElement3 = y.plannedElement) === null || _y$plannedElement3 === void 0 ? void 0 : _y$plannedElement3.elementId) == ((_cell$plannedElement9 = cell.plannedElement) === null || _cell$plannedElement9 === void 0 ? void 0 : _cell$plannedElement9.elementId);
4721
+ });
4722
+ })) return 0; // continue
4723
+ for (var _x4 = area.fromX; _x4 < area.toX; _x4++) {
4724
+ for (var _y3 = area.fromY; _y3 < area.toY; _y3++) {
4725
+ var _support$plannedEleme;
4726
+ if (!newGrid[_x4] && area.fromY == 0) newGrid[_x4] = [];
4727
+
4728
+ // we have a so called overhanging element not so nice, let's correct:
4729
+ var support = plannedCells.find(function (c) {
4730
+ return c.plannedElement.area.toX >= cell.plannedElement.area.toX && c.plannedElement.area.toY == cell.index.y;
4731
+ });
4732
+ if (!support && !newGrid[_x4]) {
4733
+ _this3.generalPlanningState = backup;
4734
+ return {
4735
+ v: true
4563
4736
  };
4564
- return 0; // continue
4565
4737
  }
4566
4738
 
4567
- // if the element got smaller we need to move it to the neighbour
4568
- //newGrid[x][y] = { ...cell, index: { x, y: y } };
4569
- newGrid[x][y] = _objectSpread(_objectSpread({}, cell), {}, {
4739
+ // the element below got smaller
4740
+ if (!newGrid[_x4] && (!support || ((_support$plannedEleme = support.plannedElement) === null || _support$plannedEleme === void 0 ? void 0 : _support$plannedEleme.elementId) == changedElementData.elementId)) {
4741
+ _this3.generalPlanningState = backup;
4742
+ return {
4743
+ v: true
4744
+ };
4745
+ } else if (!newGrid[_x4]) newGrid[_x4] = [];
4746
+ // when the element above starts early and goes over multiple ones
4747
+
4748
+ // regular case
4749
+ newGrid[_x4][_y3] = _objectSpread(_objectSpread({}, cell), {}, {
4570
4750
  index: {
4571
- x: x,
4572
- y: y
4751
+ x: _x4,
4752
+ y: _y3
4573
4753
  },
4574
4754
  plannedElement: _objectSpread(_objectSpread({}, cell.plannedElement), {}, {
4575
4755
  area: {
4576
- fromX: x,
4577
- toX: x + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4578
- fromY: y,
4579
- toY: y + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4756
+ fromX: cell.plannedElement.area.fromX,
4757
+ toX: cell.plannedElement.area.fromX + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4758
+ fromY: cell.plannedElement.area.fromY,
4759
+ toY: cell.plannedElement.area.fromY + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4580
4760
  }
4581
4761
  })
4582
4762
  });
4583
- },
4584
- _ret;
4585
- for (var y = 0; y < area.toY; y++) {
4586
- _ret = _loop2(y);
4587
- if (_ret === 0) continue;
4763
+ }
4588
4764
  }
4589
- }
4590
- });
4765
+ },
4766
+ _ret;
4767
+ for (var idx = 0; idx < plannedCells.length; idx++) {
4768
+ _ret = _loop2();
4769
+ if (_ret === 0) continue;
4770
+ if (_ret) return _ret.v;
4771
+ }
4772
+ console.log('thoula 2 => ', newGrid);
4591
4773
  if (res.backside) this.generalPlanningState.grids[1].matrix = newGrid;else this.generalPlanningState.grids[0].matrix = newGrid;
4774
+ return false;
4592
4775
  }
4593
4776
 
4594
4777
  /**
@@ -4629,9 +4812,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4629
4812
  var topNeighbors = this.getNeighborElements(elementId, 'TOP');
4630
4813
  var rightNeighbors = this.getNeighborElements(elementId, 'RIGHT');
4631
4814
  var leftNeighbors = this.getNeighborElements(elementId, 'LEFT');
4815
+ var downNeighbors = this.getNeighborElements(elementId, 'DOWN');
4632
4816
  if (topNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[0]]);
4633
4817
  if (leftNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVL', [leftNeighbors[0]]);
4634
4818
  if (rightNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[0]]);
4819
+ if (rightNeighbors.length == 0 && leftNeighbors.length == 0 && downNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVU', [downNeighbors[0]]);
4635
4820
  element.PosNr = posNr;
4636
4821
  posNr++;
4637
4822
  }
@@ -4639,9 +4824,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4639
4824
  }
4640
4825
  for (var i = 0; i < backGrid.length; i++) {
4641
4826
  for (var j = 0; j < backGrid[i].length; j++) {
4642
- var _cell5$plannedElement;
4643
- var _cell5 = backGrid[i][j];
4644
- var _elementId6 = _cell5 === null || _cell5 === void 0 || (_cell5$plannedElement = _cell5.plannedElement) === null || _cell5$plannedElement === void 0 ? void 0 : _cell5$plannedElement.elementId;
4827
+ var _cell7$plannedElement;
4828
+ var _cell7 = backGrid[i][j];
4829
+ var _elementId6 = _cell7 === null || _cell7 === void 0 || (_cell7$plannedElement = _cell7.plannedElement) === null || _cell7$plannedElement === void 0 ? void 0 : _cell7$plannedElement.elementId;
4645
4830
  if (_elementId6 && allCheckedElementIds.indexOf(_elementId6) == -1) {
4646
4831
  var _element2 = this.plannerElements.get(_elementId6);
4647
4832
  allCheckedElementIds.push(_elementId6);
@@ -4979,9 +5164,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4979
5164
  var targetRowIndex = endRowIndex + 1;
4980
5165
  var _copyPossible = false;
4981
5166
  // Iterate through columns within the element's width
4982
- for (var _x3 = endColIndex; _x3 >= startColIndex; _x3--) {
4983
- if (isValidCell(_x3, targetRowIndex)) {
4984
- copyStartColIndex = _x3;
5167
+ for (var _x5 = endColIndex; _x5 >= startColIndex; _x5--) {
5168
+ if (isValidCell(_x5, targetRowIndex)) {
5169
+ copyStartColIndex = _x5;
4985
5170
  _copyPossible = true;
4986
5171
  }
4987
5172
  }
@@ -4998,19 +5183,19 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4998
5183
  var _targetColIndex = endColIndex;
4999
5184
  var _copyPossible2 = false;
5000
5185
  // Iterate through rows within the element's height
5001
- for (var _y2 = startRowIndex; _y2 <= endRowIndex; _y2++) {
5002
- if (isValidCell(_targetColIndex, _y2)) {
5003
- copyStartRowIndex = _y2;
5186
+ for (var _y4 = startRowIndex; _y4 <= endRowIndex; _y4++) {
5187
+ if (isValidCell(_targetColIndex, _y4)) {
5188
+ copyStartRowIndex = _y4;
5004
5189
  _copyPossible2 = true;
5005
5190
  break;
5006
5191
  }
5007
5192
  }
5008
5193
  if (!_copyPossible2) return undefined;
5009
5194
  _copyPossible2 = false;
5010
- for (var _x4 = endColIndex; _x4 <= endColIndex + elementCells.colCount; _x4++) {
5011
- if (isValidCell(_x4, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x4, copyStartRowIndex - 1))) {
5195
+ for (var _x6 = endColIndex; _x6 <= endColIndex + elementCells.colCount; _x6++) {
5196
+ if (isValidCell(_x6, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x6, copyStartRowIndex - 1))) {
5012
5197
  //check also for overhang
5013
- copyEndColIndex = _x4;
5198
+ copyEndColIndex = _x6;
5014
5199
  _copyPossible2 = true;
5015
5200
  } else {
5016
5201
  break; //when you find one situation where it is not valid skip outside.
@@ -5050,16 +5235,16 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5050
5235
  } else {
5051
5236
  var distToOriginX = 0;
5052
5237
  for (var i = 0; i < cellsStartColIndex; i++) {
5053
- var _plannedElement$size$3, _plannedElement3;
5054
- distToOriginX += (_plannedElement$size$3 = (_plannedElement3 = curGrid[i][0].plannedElement) === null || _plannedElement3 === void 0 ? void 0 : _plannedElement3.size.width) !== null && _plannedElement$size$3 !== void 0 ? _plannedElement$size$3 : 0;
5238
+ var _plannedElement$size$3, _plannedElement4;
5239
+ distToOriginX += (_plannedElement$size$3 = (_plannedElement4 = curGrid[i][0].plannedElement) === null || _plannedElement4 === void 0 ? void 0 : _plannedElement4.size.width) !== null && _plannedElement$size$3 !== void 0 ? _plannedElement$size$3 : 0;
5055
5240
  }
5056
5241
  if (cellsStartColIndex < 0) {
5057
5242
  distToOriginX = -element.getWidth();
5058
5243
  }
5059
5244
  var distToOriginY = 0;
5060
5245
  for (var i = 0; i < cellsStartRowIndex; i++) {
5061
- var _plannedElement$size$4, _plannedElement4;
5062
- distToOriginY += (_plannedElement$size$4 = (_plannedElement4 = curGrid[cellsStartColIndex][i].plannedElement) === null || _plannedElement4 === void 0 ? void 0 : _plannedElement4.size.width) !== null && _plannedElement$size$4 !== void 0 ? _plannedElement$size$4 : 0;
5246
+ var _plannedElement$size$4, _plannedElement5;
5247
+ distToOriginY += (_plannedElement$size$4 = (_plannedElement5 = curGrid[cellsStartColIndex][i].plannedElement) === null || _plannedElement5 === void 0 ? void 0 : _plannedElement5.size.width) !== null && _plannedElement$size$4 !== void 0 ? _plannedElement$size$4 : 0;
5063
5248
  }
5064
5249
  elementLocation.startIndexWorldPos = new index.Vector2(distToOriginX, distToOriginY);
5065
5250
  }
@@ -5106,7 +5291,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5106
5291
  var _ele2, _ele3;
5107
5292
  var movables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5108
5293
  var selectedElementId = arguments.length > 1 ? arguments[1] : undefined;
5109
- if (!movables) return this.generalPlanningState;
5294
+ if (!movables || !selectedElementId) return this.generalPlanningState;
5110
5295
  // fill to equal size
5111
5296
  var matrix = this.generalPlanningState.grids[0].matrix;
5112
5297
  var matrixWithMovables = [];
@@ -5153,6 +5338,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5153
5338
  isSupport = !!matrix.find(function (x, idx) {
5154
5339
  return idx >= ele.area.fromX && idx < ele.area.toX && matrix[idx].length > ele.area.toY;
5155
5340
  }); // can't move if there is anything above these cells
5341
+
5342
+ // if it has left and right neighbour and is on the bottom
5343
+ if (ele.area.fromX == 0 && this.getNeighborElements(ele.elementId, 'LEFT').length > 0 && this.getNeighborElements(ele.elementId, 'RIGHT').length > 0) isSupport = true;
5156
5344
  }
5157
5345
  if (isSupport) return this.generalPlanningState;
5158
5346
  for (var x = 0; x < maxWidth; x++) {
@@ -5173,7 +5361,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5173
5361
  if (x >= from && x < to) return;
5174
5362
  var row = matrixWithMovables[x];
5175
5363
  var len = row.length;
5176
- var _x = ele.fromX == 0 ? x : x - 1;
5364
+ var _x = ele.area.fromX == 0 ? x : x - 1;
5177
5365
  row[len] = {
5178
5366
  index: {
5179
5367
  x: _x,
@@ -5186,7 +5374,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5186
5374
  var len = matrixWithMovables.length;
5187
5375
  if (((_ele2 = ele) === null || _ele2 === void 0 ? void 0 : _ele2.area.toX) != matrix.length) matrixWithMovables[len] = [{
5188
5376
  index: {
5189
- x: ele.fromX == 0 ? len : len - 1,
5377
+ x: ele.area.fromX == 0 ? len : len - 1,
5190
5378
  y: 0
5191
5379
  }
5192
5380
  }];
@@ -5338,7 +5526,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5338
5526
  key: "initPlanner",
5339
5527
  value: function () {
5340
5528
  var _initPlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(setPlanData) {
5341
- var planData, jsonElements, i, jsonElement, elementID, plannerElement, data, highesElemId, _jsonElement, params;
5529
+ var planData, jsonElements, i, jsonElement, elementID, plannerElement, constructionRules, _constructionRules$co, _constructionRules$co2, data, highesElemId, _jsonElement, params;
5342
5530
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
5343
5531
  while (1) switch (_context.prev = _context.next) {
5344
5532
  case 0:
@@ -5368,7 +5556,20 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5368
5556
  if (this.nextElementId < elementID + 1) this.nextElementId = elementID + 1;
5369
5557
  this.set.setElementId(jsonElement.basketID, plannerElement.ElementId);
5370
5558
  if (!this.constructionRulesHandler.getConstructionRulesLoaded()) {
5371
- this.constructionRulesHandler.setConstructionRules(this.set.getConstructionRuleOfElementId(plannerElement.ElementId));
5559
+ constructionRules = this.set.getConstructionRuleOfElementId(plannerElement.ElementId);
5560
+ if (constructionRules) {
5561
+ this.boxPlannerGrid.GridSetupParams = {
5562
+ fixCellRasterHeight: 19.2,
5563
+ fixCellRasterWidth: 19.2,
5564
+ forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5565
+ forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5566
+ hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5567
+ maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5568
+ hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
5569
+ maxGridRasterWidth: constructionRules.constructionRules.maxGridRasterWidth
5570
+ };
5571
+ }
5572
+ this.constructionRulesHandler.setConstructionRules(constructionRules);
5372
5573
  }
5373
5574
  data = this.set.getPlannerData(plannerElement.ElementId);
5374
5575
  if (data) plannerElement.updatePlannerData(data);
@@ -5496,7 +5697,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5496
5697
  key: "addPlannerElement",
5497
5698
  value: (function () {
5498
5699
  var _addPlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(basketID, params) {
5499
- var plannerElement, data, constructionRules, _constructionRules$co, _constructionRules$co2;
5700
+ var plannerElement, data, constructionRules, _constructionRules$co3, _constructionRules$co4;
5500
5701
  return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
5501
5702
  while (1) switch (_context2.prev = _context2.next) {
5502
5703
  case 0:
@@ -5520,8 +5721,8 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5520
5721
  this.boxPlannerGrid.GridSetupParams = {
5521
5722
  fixCellRasterHeight: 19.2,
5522
5723
  fixCellRasterWidth: 19.2,
5523
- forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5524
- forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5724
+ forceFixCellRasterSize: (_constructionRules$co3 = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co3 !== void 0 ? _constructionRules$co3 : true,
5725
+ forceSingleCellPerElement: (_constructionRules$co4 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co4 !== void 0 ? _constructionRules$co4 : true,
5525
5726
  hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5526
5727
  maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5527
5728
  hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
@@ -5916,42 +6117,58 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5916
6117
  value: (function () {
5917
6118
  var _updatePlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee7(changedOPT, targetElements) {
5918
6119
  var _this2 = this;
5919
- var message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
6120
+ var failed, message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
5920
6121
  return _regeneratorRuntime__default["default"].wrap(function _callee7$(_context7) {
5921
6122
  while (1) switch (_context7.prev = _context7.next) {
5922
6123
  case 0:
5923
6124
  LOG.debug('BoxPlanner - configurationHasChanged ' + changedOPT);
6125
+ failed = false;
5924
6126
  targetElements === null || targetElements === void 0 || targetElements.forEach(function (e) {
5925
6127
  var _this2$set$getArticle;
5926
- return _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
6128
+ failed = _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
6129
+ if (failed) return;
6130
+ });
6131
+ if (!failed) {
6132
+ _context7.next = 5;
6133
+ break;
6134
+ }
6135
+ return _context7.abrupt("return", {
6136
+ doDeleteBackGrid: false,
6137
+ elemIdsToDelete: [],
6138
+ viewMessageCodex: "resizeerror",
6139
+ failed: true
5927
6140
  });
6141
+ case 5:
6142
+ this.boxPlannerGrid.updateWorldPosOfElements();
5928
6143
  if (!(changedOPT && targetElements && targetElements.length > 0 && changedOPT['OPTELEMENT'] && (changedOPT['OPTELEMENT'] == 'OPVECK_I' || changedOPT['OPTELEMENT'] == 'OPVECK_A'))) {
5929
- _context7.next = 19;
6144
+ _context7.next = 23;
5930
6145
  break;
5931
6146
  }
5932
6147
  if (!(targetElements.length > 1)) {
5933
- _context7.next = 10;
6148
+ _context7.next = 14;
5934
6149
  break;
5935
6150
  }
5936
- _context7.next = 6;
6151
+ _context7.next = 10;
5937
6152
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements, true);
5938
- case 6:
6153
+ case 10:
5939
6154
  message = _context7.sent;
5940
6155
  if (!message) {
5941
- _context7.next = 9;
6156
+ _context7.next = 13;
5942
6157
  break;
5943
6158
  }
5944
6159
  return _context7.abrupt("return", {
5945
6160
  doDeleteBackGrid: false,
5946
6161
  elemIdsToDelete: [],
5947
- viewMessageCodex: message
6162
+ viewMessageCodex: message,
6163
+ failed: false
5948
6164
  });
5949
- case 9:
6165
+ case 13:
5950
6166
  return _context7.abrupt("return", {
5951
6167
  doDeleteBackGrid: false,
5952
- elemIdsToDelete: []
6168
+ elemIdsToDelete: [],
6169
+ failed: false
5953
6170
  });
5954
- case 10:
6171
+ case 14:
5955
6172
  //If the most bottom element has no neighbor right or left - copy element
5956
6173
  cellPos = this.boxPlannerGrid.getCellsInGridByElementId(targetElements[0]);
5957
6174
  elemToCheck = targetElements[0];
@@ -5959,7 +6176,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5959
6176
  elemToCheck = this.boxPlannerGrid.getPlannerElementAtGridPos(cellPos.startColIndex, 0, false).getElementId();
5960
6177
  }
5961
6178
  if (!(!this.boxPlannerGrid.getElementHasLeftElement(elemToCheck) || !this.boxPlannerGrid.getElementHasRightElement(elemToCheck))) {
5962
- _context7.next = 19;
6179
+ _context7.next = 23;
5963
6180
  break;
5964
6181
  }
5965
6182
  //Someone has changed Eck innen or aussen. If the current eselected Element has no neighbor left or right copy neighbor
@@ -5981,6 +6198,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5981
6198
  copyType: 'BoxPlanner_COL'
5982
6199
  });
5983
6200
  return _context7.abrupt("return", {
6201
+ failed: false,
5984
6202
  doDeleteBackGrid: false,
5985
6203
  elemIdsToDelete: [],
5986
6204
  elementIdToCopy: allElementsToCopy,
@@ -5989,17 +6207,17 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5989
6207
  changedOPT: changedOPT,
5990
6208
  targetElements: targetElements
5991
6209
  });
5992
- case 19:
6210
+ case 23:
5993
6211
  if (!(changedOPT && changedOPT['OPTDMOD'])) {
5994
- _context7.next = 34;
6212
+ _context7.next = 38;
5995
6213
  break;
5996
6214
  }
5997
6215
  _context7.t0 = changedOPT['OPTDMOD'];
5998
- _context7.next = _context7.t0 === 'OPVD_EIN' ? 23 : _context7.t0 === 'OPVD_AUS' ? 27 : 32;
6216
+ _context7.next = _context7.t0 === 'OPVD_EIN' ? 27 : _context7.t0 === 'OPVD_AUS' ? 31 : 36;
5999
6217
  break;
6000
- case 23:
6218
+ case 27:
6001
6219
  if (this.boxPlannerGrid.getPlannerHasActiveBackside()) {
6002
- _context7.next = 26;
6220
+ _context7.next = 30;
6003
6221
  break;
6004
6222
  }
6005
6223
  _allElementsToCopy = this.getPlannerElementsInfluencedByCopy(-1, {
@@ -6011,25 +6229,27 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6011
6229
  copyType: 'BoxPlanner_backside'
6012
6230
  });
6013
6231
  return _context7.abrupt("return", {
6232
+ failed: false,
6014
6233
  doDeleteBackGrid: false,
6015
6234
  elemIdsToDelete: [],
6016
6235
  elementIdToCopy: _allElementsToCopy,
6017
6236
  copyType: 'BoxPlanner_backside',
6018
6237
  changedOPT: changedOPT
6019
6238
  });
6020
- case 26:
6021
- return _context7.abrupt("break", 32);
6022
- case 27:
6239
+ case 30:
6240
+ return _context7.abrupt("break", 36);
6241
+ case 31:
6023
6242
  if (!this.boxPlannerGrid.getPlannerHasActiveBackside()) {
6024
- _context7.next = 31;
6243
+ _context7.next = 35;
6025
6244
  break;
6026
6245
  }
6027
6246
  allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6028
6247
  if (!(allElementsInBackGrid.length > 0)) {
6029
- _context7.next = 31;
6248
+ _context7.next = 35;
6030
6249
  break;
6031
6250
  }
6032
6251
  return _context7.abrupt("return", {
6252
+ failed: false,
6033
6253
  doDeleteBackGrid: true,
6034
6254
  elemIdsToDelete: allElementsInBackGrid.map(function (element) {
6035
6255
  return element.ElementId;
@@ -6037,23 +6257,24 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6037
6257
  deletionType: 'BoxPlanner_backside',
6038
6258
  changedOPT: changedOPT
6039
6259
  });
6040
- case 31:
6041
- return _context7.abrupt("break", 32);
6042
- case 32:
6043
- _context7.next = 48;
6260
+ case 35:
6261
+ return _context7.abrupt("break", 36);
6262
+ case 36:
6263
+ _context7.next = 52;
6044
6264
  break;
6045
- case 34:
6265
+ case 38:
6046
6266
  if (!(changedOPT && changedOPT['OPTFARBE_RAHMEN'] && changedOPT['OPTFARBE_RAHMEN'] == 'OPVSCHWARZ_MATT' && this.boxPlannerGrid.getPlannerHasActiveBackside())) {
6047
- _context7.next = 40;
6267
+ _context7.next = 44;
6048
6268
  break;
6049
6269
  }
6050
6270
  //If the double modul is active but the color is changed to black - disable double modul
6051
6271
  _allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6052
6272
  if (!(_allElementsInBackGrid.length > 0)) {
6053
- _context7.next = 38;
6273
+ _context7.next = 42;
6054
6274
  break;
6055
6275
  }
6056
6276
  return _context7.abrupt("return", {
6277
+ failed: false,
6057
6278
  doDeleteBackGrid: true,
6058
6279
  elemIdsToDelete: _allElementsInBackGrid.map(function (element) {
6059
6280
  return element.ElementId;
@@ -6063,34 +6284,37 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6063
6284
  targetElements: targetElements,
6064
6285
  viewMessageCodex: 'BOXPLAN_BLACKFRAME_INCOMPATIBLE_ELEMENT_WARNING'
6065
6286
  });
6066
- case 38:
6067
- _context7.next = 48;
6287
+ case 42:
6288
+ _context7.next = 52;
6068
6289
  break;
6069
- case 40:
6070
- _context7.next = 42;
6290
+ case 44:
6291
+ _context7.next = 46;
6071
6292
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements);
6072
- case 42:
6293
+ case 46:
6073
6294
  _message = _context7.sent;
6074
6295
  if (!_message) {
6075
- _context7.next = 47;
6296
+ _context7.next = 51;
6076
6297
  break;
6077
6298
  }
6078
6299
  return _context7.abrupt("return", {
6079
6300
  doDeleteBackGrid: false,
6080
6301
  elemIdsToDelete: [],
6081
- viewMessageCodex: _message
6302
+ viewMessageCodex: _message,
6303
+ failed: false
6082
6304
  });
6083
- case 47:
6305
+ case 51:
6084
6306
  return _context7.abrupt("return", {
6085
6307
  doDeleteBackGrid: false,
6086
- elemIdsToDelete: []
6308
+ elemIdsToDelete: [],
6309
+ failed: false
6087
6310
  });
6088
- case 48:
6311
+ case 52:
6089
6312
  return _context7.abrupt("return", {
6090
6313
  doDeleteBackGrid: false,
6091
- elemIdsToDelete: []
6314
+ elemIdsToDelete: [],
6315
+ failed: false
6092
6316
  });
6093
- case 49:
6317
+ case 53:
6094
6318
  case "end":
6095
6319
  return _context7.stop();
6096
6320
  }