@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
@@ -3,11 +3,11 @@ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
3
  import _createClass from '@babel/runtime/helpers/createClass';
4
4
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _regeneratorRuntime from '@babel/runtime/regenerator';
6
- import { c as Vector2, V as Vector3, P as PlannerElementData, B as BoundingBox } from './index-14f79ee4.js';
6
+ import { c as Vector2, V as Vector3, P as PlannerElementData, B as BoundingBox } from './index-07df9d4d.js';
7
7
  import DivaUtils, { DivaError, md5 } from '@crystaldesign/diva-utils';
8
8
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
9
- import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-43910df5.js';
10
- import '@babel/runtime/helpers/slicedToArray';
9
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
+ import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-6aa7326e.js';
11
11
  import '@babel/runtime/helpers/objectWithoutProperties';
12
12
  import 'axios';
13
13
  import '@crystaldesign/basket-model';
@@ -1959,6 +1959,18 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1959
1959
  if (!this.hideOptionsForConstruction.has(elementId)) this.hideOptionsForConstruction.set(elementId, []);
1960
1960
  (_this$hideOptionsForC2 = this.hideOptionsForConstruction.get(elementId)) === null || _this$hideOptionsForC2 === void 0 || _this$hideOptionsForC2.push(option);
1961
1961
  }
1962
+ }, {
1963
+ key: "setOptionDoCustom",
1964
+ value: function setOptionDoCustom(elementId, option, val, optionHandler) {
1965
+ var _optionHandler$get4, _this$hideOptionsForC3;
1966
+ // LOG.log("Update Box Planner Logic. SetOptionDoHide: elementId: " + elementId + "; Option: " + option);
1967
+ var curOptVisibilityInfo = this.constructionRules.optionsVisibilityInfo[option];
1968
+ if (!curOptVisibilityInfo) return;
1969
+ if (!optionHandler.has(elementId)) optionHandler.set(elementId, new Map());
1970
+ (_optionHandler$get4 = optionHandler.get(elementId)) === null || _optionHandler$get4 === void 0 || _optionHandler$get4.set(option, curOptVisibilityInfo[val]);
1971
+ if (!this.hideOptionsForConstruction.has(elementId)) this.hideOptionsForConstruction.set(elementId, []);
1972
+ (_this$hideOptionsForC3 = this.hideOptionsForConstruction.get(elementId)) === null || _this$hideOptionsForC3 === void 0 || _this$hideOptionsForC3.push(option);
1973
+ }
1962
1974
 
1963
1975
  //Returns all
1964
1976
  }, {
@@ -1999,7 +2011,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1999
2011
  }
2000
2012
  var allElementIds = boxPlannerGrid.getAllElementIdsInGrid(); //run through front an backside grid
2001
2013
  for (var i = 0; i < allElementIds.length; i++) {
2002
- var _optionHandler$get4;
2014
+ var _optionHandler$get5;
2003
2015
  if (this.hideOptionsForConstruction.has(allElementIds[i]) && this.hideOptionsForConstruction.get(allElementIds[i]).length > 0) {
2004
2016
  while (this.hideOptionsForConstruction.get(allElementIds[i]).length > 0) {
2005
2017
  var optName = this.hideOptionsForConstruction.get(allElementIds[i])[0];
@@ -2088,7 +2100,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2088
2100
 
2089
2101
  ///Add debug input
2090
2102
  if (!optionHandler.has(allElementIds[i])) optionHandler.set(allElementIds[i], new Map());
2091
- (_optionHandler$get4 = optionHandler.get(allElementIds[i])) === null || _optionHandler$get4 === void 0 || _optionHandler$get4.set('DEBUG', boxPlannerGrid.getElementById(allElementIds[i]).getPosNr() + '');
2103
+ (_optionHandler$get5 = optionHandler.get(allElementIds[i])) === null || _optionHandler$get5 === void 0 || _optionHandler$get5.set('DEBUG', boxPlannerGrid.getElementById(allElementIds[i]).getPosNr() + '');
2092
2104
  if (opvToReset.length > 0) {
2093
2105
  for (var r = 0; r < opvToReset.length; r++) {
2094
2106
  var articleOPV = this.getOptionVal(allElementIds[i], opvToReset[r].opt, optionHandler);
@@ -2368,6 +2380,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2368
2380
  key: "correctSimpleOpt",
2369
2381
  value: function correctSimpleOpt(xIndex, yIndex, boxPlannerGrid, optionHandler, fromBackside) {
2370
2382
  var curElement = boxPlannerGrid.getPlannerElementAtGridPos(xIndex, yIndex, fromBackside);
2383
+ if (!curElement) return;
2371
2384
  //Schauen ob Element top Element hat.
2372
2385
  if (this.constructionRules.defaultConstructionRules.TOP) {
2373
2386
  var hasTopElement = boxPlannerGrid.getElementHasTopElement(curElement.ElementId);
@@ -2593,13 +2606,12 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2593
2606
  if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2594
2607
  if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2595
2608
  if (isOver) {
2596
- if (dimRule.higherLimit.toLowerCase() == 'doshow') return true;else if (dimRule.higherLimit.toLowerCase() == 'dohide') return false;
2609
+ return dimRule.higherLimit;
2597
2610
  } else if (isEqual) {
2598
- return true;
2611
+ return dimRule.higherLimit;
2599
2612
  } else {
2600
- if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2613
+ return dimRule.lowerLimit;
2601
2614
  }
2602
- return false;
2603
2615
  }
2604
2616
 
2605
2617
  /*
@@ -2610,42 +2622,34 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2610
2622
  key: "correctOverHangingElement",
2611
2623
  value: function correctOverHangingElement(changedElementId, boxPlannerGrid, optionHandler, changedOPTs) {
2612
2624
  var _this2 = this;
2613
- if (!changedOPTs) return;
2614
- var _loop = function _loop() {
2615
- var elements = boxPlannerGrid.getAllElementsInColumn(columndIdx, false, false); // from bottom to top
2616
- var lastElement = null;
2617
- var changedElementIdx = elements.findIndex(function (e) {
2618
- return e.ElementId == changedElementId;
2619
- });
2620
- elements.forEach(function (element, idx) {
2621
- var _lastElement$Width, _element$Width, _lastElement$Depth, _element$Depth;
2622
- if (!lastElement) {
2623
- lastElement = element;
2624
- return;
2625
- }
2626
- 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)) {
2627
- // is either the above wider opt or the one under and smaller
2628
- var t = Object.entries(changedOPTs);
2629
- var opt = t[0][0];
2630
- var opv = t[0][1];
2631
- if (idx < changedElementIdx) {
2632
- _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2633
- } else {
2634
- _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2635
- }
2636
- }
2637
- 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)) {
2638
- var _t = Object.entries(changedOPTs); // should be the new wider width that causes the overhanging
2639
- var _opt = _t[0][0];
2640
- var _opv2 = _t[0][1];
2641
- _this2.setOptionValue(element.ElementId, _opt, _opv2, optionHandler);
2642
- }
2643
- lastElement = element;
2644
- });
2645
- };
2646
- for (var columndIdx = 0; columndIdx < boxPlannerGrid.getColumnCount(); columndIdx++) {
2647
- _loop();
2648
- }
2625
+ if (!changedOPTs || !changedElementId) return;
2626
+ var startIdx = boxPlannerGrid.getCellsInGridByElementId(changedElementId).startColIndex;
2627
+ var elements = boxPlannerGrid.getAllElementsInColumn(startIdx, false, true); // from bottom to top
2628
+ var changedElementIdx = elements.findIndex(function (e) {
2629
+ return e.ElementId == changedElementId;
2630
+ });
2631
+ var changedElement = elements[changedElementIdx];
2632
+ if (!changedElement) return; // nothing changed in this row
2633
+ var t = Object.entries(changedOPTs);
2634
+ var opt = t[0][0];
2635
+ var opv = t[0][1];
2636
+ elements.forEach(function (element, idx) {
2637
+ if (idx < changedElementIdx) {
2638
+ //under the changed one
2639
+ var rightNeighbours = boxPlannerGrid.getNeighborElements(element.ElementId, "RIGHT");
2640
+ var freeSpace = element.Width;
2641
+ rightNeighbours.forEach(function (n) {
2642
+ if (n.ElementId == changedElement.ElementId) return;
2643
+ if (!boxPlannerGrid.getNeighborElements(n.ElementId, "TOP", false).find(function (n) {
2644
+ return n.ElementId != changedElement.ElementId;
2645
+ })) freeSpace += n.Width;
2646
+ });
2647
+ if (changedElement.Width > freeSpace) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2648
+ } else {
2649
+ // over the changed one
2650
+ if (changedElement.Width < element.Width) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2651
+ }
2652
+ });
2649
2653
  }
2650
2654
  }, {
2651
2655
  key: "correctFoot",
@@ -2662,31 +2666,35 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2662
2666
  * */
2663
2667
  }, {
2664
2668
  key: "correctOptionsInfluencedByDimensions",
2665
- value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2669
+ value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs) {
2666
2670
  var _this4 = this;
2667
2671
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2668
2672
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2669
2673
  var allElements = boxPlannerGrid.getAllElementsInFrontGrid();
2670
- this.constructionRules.optionsInfluencedByDimensions.forEach(function (dimRule) {
2671
- if (Array.isArray(dimRule)) {
2672
- if (dimRule.every(function (rule) {
2673
- return _this4.validateDimensionRule(rule, boxPlannerSize);
2674
- })) dimRule.forEach(function (rule) {
2675
- return allElements.forEach(function (element) {
2676
- return _this4.setOptionDoShow(element.ElementId, rule.option, optionHandler);
2677
- });
2678
- });else dimRule.forEach(function (rule) {
2679
- return allElements.forEach(function (element) {
2680
- return _this4.setOptionDoHide(element.ElementId, rule.option, optionHandler);
2681
- });
2682
- });
2683
- } else {
2684
- if (_this4.validateDimensionRule(dimRule, boxPlannerSize)) allElements.forEach(function (element) {
2685
- return _this4.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2686
- });else allElements.forEach(function (element) {
2687
- return _this4.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2674
+ var setRule = function setRule(rule) {
2675
+ var res = _this4.validateDimensionRule(rule, boxPlannerSize);
2676
+ if (changedOPTs) {
2677
+ var changedOpt = Object.entries(changedOPTs).find(function (_ref) {
2678
+ var _ref2 = _slicedToArray(_ref, 2),
2679
+ key = _ref2[0];
2680
+ _ref2[1];
2681
+ return key == rule.option;
2688
2682
  });
2683
+ if (changedOpt) {
2684
+ allElements.forEach(function (element) {
2685
+ return _this4.setOptionValue(element.ElementId, changedOpt[0], changedOpt[1], optionHandler);
2686
+ });
2687
+ return;
2688
+ }
2689
2689
  }
2690
+ allElements.forEach(function (element) {
2691
+ return _this4.setOptionDoCustom(element.ElementId, res, rule.option, optionHandler);
2692
+ });
2693
+ };
2694
+ this.constructionRules.optionsInfluencedByDimensions.forEach(function (dimRule) {
2695
+ if (Array.isArray(dimRule)) dimRule.forEach(function (rule) {
2696
+ return setRule(rule);
2697
+ });else setRule(dimRule);
2690
2698
  });
2691
2699
  }
2692
2700
  }, {
@@ -2759,22 +2767,22 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2759
2767
 
2760
2768
  // default => set all to ohne
2761
2769
  serie.forEach(function (element) {
2762
- var _element$Width2;
2763
- seriesWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2764
- boxPlannerGrid.getAllElementsDown(element.ElementId).elements.forEach(function (e) {
2770
+ var _element$size$width;
2771
+ seriesWidth += (_element$size$width = element.size.width) !== null && _element$size$width !== void 0 ? _element$size$width : 0;
2772
+ boxPlannerGrid.getAllElementsDown(element.elementId).elements.forEach(function (e) {
2765
2773
  return _this5.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2766
2774
  });
2767
- _this5.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2775
+ _this5.setOptionValue(element.elementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2768
2776
  });
2769
2777
  var firstUncoveredElement = serie[0];
2770
- var _loop2 = function _loop2() {
2778
+ var _loop = function _loop() {
2771
2779
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2772
2780
  // is a clean element ending
2773
2781
  var helperWidth = 0;
2774
2782
  var isClean = false;
2775
2783
  serie.forEach(function (element) {
2776
- var _element$Width3;
2777
- helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2784
+ var _element$size$width2;
2785
+ helperWidth += (_element$size$width2 = element.size.width) !== null && _element$size$width2 !== void 0 ? _element$size$width2 : 0;
2778
2786
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2779
2787
  });
2780
2788
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2783,11 +2791,11 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2783
2791
  if (!opv) return {
2784
2792
  v: void 0
2785
2793
  };
2786
- _this5.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2794
+ _this5.setOptionValue(firstUncoveredElement.elementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2787
2795
  var helperWidth = 0;
2788
2796
  firstUncoveredElement = serie.find(function (e) {
2789
- var _e$Width;
2790
- helperWidth += (_e$Width = e.Width) !== null && _e$Width !== void 0 ? _e$Width : 0;
2797
+ var _e$size$width;
2798
+ helperWidth += (_e$size$width = e.size.width) !== null && _e$size$width !== void 0 ? _e$size$width : 0;
2791
2799
  if (helperWidth > opv.limit) return true;
2792
2800
  return false;
2793
2801
  });
@@ -2796,7 +2804,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2796
2804
  },
2797
2805
  _ret;
2798
2806
  while (seriesWidth != 0) {
2799
- _ret = _loop2();
2807
+ _ret = _loop();
2800
2808
  if (_ret) return _ret.v;
2801
2809
  }
2802
2810
  });
@@ -3123,7 +3131,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3123
3131
  value: function () {
3124
3132
  var _updateOptionLogicBoxPlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(boxPlannerGrid, changedOPTs, targetElements, forceResetCornerElements) {
3125
3133
  var _targetElements;
3126
- var startTime, resultMessage, optionHandler, allElements, i, _iterator, _step, coverPlateRule, j, doChangeRetailArticleNumbers;
3134
+ var startTime, resultMessage, optionHandler, allElements, i, j, _boxPlannerGrid$getPl2, elementId, _boxPlannerGrid$getPl3, _elementId, _iterator, _step, coverPlateRule, _boxPlannerGrid$getPl4, _elementId2, doChangeRetailArticleNumbers;
3127
3135
  return _regeneratorRuntime.wrap(function _callee$(_context) {
3128
3136
  while (1) switch (_context.prev = _context.next) {
3129
3137
  case 0:
@@ -3158,19 +3166,6 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3158
3166
  this.correctBottom(boxPlannerGrid, optionHandler, false);
3159
3167
  if (boxPlannerGrid.getPlannerHasActiveBackside()) this.correctBottom(boxPlannerGrid, optionHandler, true);
3160
3168
  this.correctSeries(boxPlannerGrid, optionHandler);
3161
- if (this.constructionRules.coverPlateRule) {
3162
- _iterator = _createForOfIteratorHelper$1(this.constructionRules.coverPlateRule);
3163
- try {
3164
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
3165
- coverPlateRule = _step.value;
3166
- this.correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler);
3167
- }
3168
- } catch (err) {
3169
- _iterator.e(err);
3170
- } finally {
3171
- _iterator.f();
3172
- }
3173
- }
3174
3169
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3175
3170
  for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3176
3171
  this.correctSimpleOpt(i, j, boxPlannerGrid, optionHandler, false);
@@ -3183,39 +3178,126 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3183
3178
  }
3184
3179
  }
3185
3180
  }
3186
- for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3187
- for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3188
- this.correctForceOptOfElement(boxPlannerGrid.getPlannerElementAtGridPos(i, j, false).ElementId, boxPlannerGrid, optionHandler, false);
3189
- this.correctNeighborCustomOLTs(boxPlannerGrid.getPlannerElementAtGridPos(i, j, false).ElementId, boxPlannerGrid, optionHandler);
3190
- }
3181
+ i = 0;
3182
+ case 17:
3183
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3184
+ _context.next = 31;
3185
+ break;
3191
3186
  }
3192
- if (boxPlannerGrid.getPlannerHasActiveBackside()) {
3193
- for (i = boxPlannerGrid.getColumnCount() - 1; i >= 0; i--) {
3194
- for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3195
- this.correctForceOptOfElement(boxPlannerGrid.getPlannerElementAtGridPos(i, j, true).ElementId, boxPlannerGrid, optionHandler, true);
3196
- this.correctNeighborCustomOLTs(boxPlannerGrid.getPlannerElementAtGridPos(i, j, true).ElementId, boxPlannerGrid, optionHandler);
3197
- }
3198
- }
3187
+ j = 0;
3188
+ case 19:
3189
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3190
+ _context.next = 28;
3191
+ break;
3192
+ }
3193
+ elementId = (_boxPlannerGrid$getPl2 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl2 === void 0 ? void 0 : _boxPlannerGrid$getPl2.ElementId;
3194
+ if (elementId) {
3195
+ _context.next = 23;
3196
+ break;
3199
3197
  }
3198
+ return _context.abrupt("continue", 25);
3199
+ case 23:
3200
+ this.correctForceOptOfElement(elementId, boxPlannerGrid, optionHandler, false);
3201
+ this.correctNeighborCustomOLTs(elementId, boxPlannerGrid, optionHandler);
3202
+ case 25:
3203
+ j++;
3204
+ _context.next = 19;
3205
+ break;
3206
+ case 28:
3207
+ i++;
3208
+ _context.next = 17;
3209
+ break;
3210
+ case 31:
3211
+ if (!boxPlannerGrid.getPlannerHasActiveBackside()) {
3212
+ _context.next = 47;
3213
+ break;
3214
+ }
3215
+ i = boxPlannerGrid.getColumnCount() - 1;
3216
+ case 33:
3217
+ if (!(i >= 0)) {
3218
+ _context.next = 47;
3219
+ break;
3220
+ }
3221
+ j = 0;
3222
+ case 35:
3223
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3224
+ _context.next = 44;
3225
+ break;
3226
+ }
3227
+ _elementId = (_boxPlannerGrid$getPl3 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl3 === void 0 ? void 0 : _boxPlannerGrid$getPl3.ElementId;
3228
+ if (_elementId) {
3229
+ _context.next = 39;
3230
+ break;
3231
+ }
3232
+ return _context.abrupt("continue", 41);
3233
+ case 39:
3234
+ this.correctForceOptOfElement(_elementId, boxPlannerGrid, optionHandler, true);
3235
+ this.correctNeighborCustomOLTs(_elementId, boxPlannerGrid, optionHandler);
3236
+ case 41:
3237
+ j++;
3238
+ _context.next = 35;
3239
+ break;
3240
+ case 44:
3241
+ i--;
3242
+ _context.next = 33;
3243
+ break;
3244
+ case 47:
3200
3245
  this.correctFoot(boxPlannerGrid, optionHandler);
3201
3246
  this.correctLadder(boxPlannerGrid, optionHandler);
3202
- this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3247
+ this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs);
3203
3248
  this.correctOverHangingElement((_targetElements = targetElements) === null || _targetElements === void 0 ? void 0 : _targetElements[0], boxPlannerGrid, optionHandler, changedOPTs);
3204
3249
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3205
3250
  this.partlistHelper.calculateRahmen(boxPlannerGrid, optionHandler);
3206
- for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3207
- for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3208
- this.correctBack(boxPlannerGrid, optionHandler, boxPlannerGrid.getPlannerElementAtGridPos(i, j, false).getElementId());
3251
+ if (this.constructionRules.coverPlateRule) {
3252
+ _iterator = _createForOfIteratorHelper$1(this.constructionRules.coverPlateRule);
3253
+ try {
3254
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3255
+ coverPlateRule = _step.value;
3256
+ this.correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler);
3257
+ }
3258
+ } catch (err) {
3259
+ _iterator.e(err);
3260
+ } finally {
3261
+ _iterator.f();
3209
3262
  }
3210
3263
  }
3264
+ i = 0;
3265
+ case 55:
3266
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3267
+ _context.next = 68;
3268
+ break;
3269
+ }
3270
+ j = 0;
3271
+ case 57:
3272
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3273
+ _context.next = 65;
3274
+ break;
3275
+ }
3276
+ _elementId2 = (_boxPlannerGrid$getPl4 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl4 === void 0 ? void 0 : _boxPlannerGrid$getPl4.getElementId();
3277
+ if (_elementId2) {
3278
+ _context.next = 61;
3279
+ break;
3280
+ }
3281
+ return _context.abrupt("continue", 62);
3282
+ case 61:
3283
+ this.correctBack(boxPlannerGrid, optionHandler, _elementId2);
3284
+ case 62:
3285
+ j++;
3286
+ _context.next = 57;
3287
+ break;
3288
+ case 65:
3289
+ i++;
3290
+ _context.next = 55;
3291
+ break;
3292
+ case 68:
3211
3293
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3212
- _context.next = 29;
3294
+ _context.next = 71;
3213
3295
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3214
- case 29:
3296
+ case 71:
3215
3297
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3216
3298
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3217
3299
  return _context.abrupt("return", resultMessage);
3218
- case 32:
3300
+ case 74:
3219
3301
  case "end":
3220
3302
  return _context.stop();
3221
3303
  }
@@ -3343,7 +3425,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3343
3425
  var cells = [];
3344
3426
  for (var i = 0; i < colCount; i++) {
3345
3427
  for (var j = 0; j < rowCount; j++) {
3346
- var _cell = {
3428
+ var _cell2 = {
3347
3429
  plannedElement: {
3348
3430
  basketId: newElement.getBasketId(),
3349
3431
  elementId: newElement.getElementId(),
@@ -3362,7 +3444,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3362
3444
  },
3363
3445
  index: new Vector2(startColIndex + i, startRowIndex + j)
3364
3446
  };
3365
- cells.push(_cell);
3447
+ cells.push(_cell2);
3366
3448
  }
3367
3449
  }
3368
3450
  return cells;
@@ -3651,10 +3733,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3651
3733
  }
3652
3734
  for (var i = 0; i < backGrid.length; i++) {
3653
3735
  for (var j = 0; j < backGrid[i].length; j++) {
3654
- var _cell2$plannedElement;
3655
- var _cell2 = backGrid[i][j];
3656
- var _elementId = (_cell2$plannedElement = _cell2.plannedElement) === null || _cell2$plannedElement === void 0 ? void 0 : _cell2$plannedElement.elementId;
3657
- if (_cell2 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3736
+ var _cell3$plannedElement;
3737
+ var _cell3 = backGrid[i][j];
3738
+ var _elementId = (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3739
+ if (_cell3 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3658
3740
  var _element = this.getElementById(_elementId);
3659
3741
  allCheckedElementIds.push(_elementId);
3660
3742
  returnElements.push(_element);
@@ -3918,10 +4000,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3918
4000
  }
3919
4001
  } else {
3920
4002
  for (var i = curGrid[index].length - 1; i >= 0; i--) {
3921
- var _cell3$plannedElement;
3922
- var _cell3 = curGrid[index][i];
3923
- var _elementId4 = _cell3 === null || _cell3 === void 0 || (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3924
- if (_cell3 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
4003
+ var _cell4$plannedElement;
4004
+ var _cell4 = curGrid[index][i];
4005
+ var _elementId4 = _cell4 === null || _cell4 === void 0 || (_cell4$plannedElement = _cell4.plannedElement) === null || _cell4$plannedElement === void 0 ? void 0 : _cell4$plannedElement.elementId;
4006
+ if (_cell4 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
3925
4007
  allElementIds.push(_elementId4);
3926
4008
  allElements.push(this.plannerElements.get(_elementId4));
3927
4009
  }
@@ -4010,31 +4092,64 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4010
4092
  }, {
4011
4093
  key: "getNeighborElements",
4012
4094
  value: function getNeighborElements(elementId, dir) {
4013
- var _curGrid$area$toX, _curGrid$area$toX2, _curGrid2, _curGrid3, _curGrid$area$fromX, _topNeighbour$planned, _curGrid$area$fromX2, _downNeighbour$planne;
4095
+ var _this = this,
4096
+ _plannedElement3,
4097
+ _curGrid$area$fromX,
4098
+ _downNeighbour$planne;
4099
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
4014
4100
  var res = this.getCellsInGridByElementId(elementId);
4015
4101
  var curGrid = res.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4016
4102
  var result = [];
4017
4103
  var plannedElement = res.cells[0].plannedElement;
4018
4104
  if (!plannedElement) return result;
4105
+ var currentRow = curGrid[plannedElement.area.fromX];
4106
+ var startHeight = 0;
4107
+ var endHeight = 0;
4108
+ currentRow.forEach(function (cell) {
4109
+ if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000);
4110
+ if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000);
4111
+ });
4019
4112
  switch (dir) {
4020
4113
  case 'RIGHT':
4021
4114
  // only clean neighbours (for docking) add property if you also need clean ones
4022
- 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;
4023
- 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;
4024
- if (rLowestNeighbour == rHighestNeighbour && rLowestNeighbour) result.push(this.plannerElements.get(rLowestNeighbour));
4115
+
4116
+ var neighbourRow = curGrid[plannedElement.area.toX];
4117
+ if (!neighbourRow) break;
4118
+ var neighbourSize = 0;
4119
+ var neighbours = neighbourRow.filter(function (cell) {
4120
+ if (clean && neighbourSize == startHeight) return true;else if (!clean && neighbourSize > endHeight) return true;
4121
+ neighbourSize = Math.round((neighbourSize + cell.plannedElement.size.height) * 1000);
4122
+ return false;
4123
+ });
4124
+ neighbours.forEach(function (n) {
4125
+ return !result.find(function (r) {
4126
+ return r.ElementId == n.plannedElement.elementId;
4127
+ }) && result.push(_this.plannerElements.get(n.plannedElement.elementId));
4128
+ });
4025
4129
  break;
4026
4130
  case 'LEFT':
4027
- 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;
4028
- 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;
4029
- if (lowestNeighbour == highestNeighbour && lowestNeighbour) result.push(this.plannerElements.get(lowestNeighbour));
4131
+ var leftNeighbourRow = curGrid[plannedElement.area.fromX - 1];
4132
+ if (!leftNeighbourRow) break;
4133
+ var leftNeighbourSize = 0;
4134
+ var leftStartElement = leftNeighbourRow.find(function (cell) {
4135
+ if (leftNeighbourSize == startHeight) return true;
4136
+ leftNeighbourSize = Math.round((leftNeighbourSize + cell.plannedElement.size.height) * 1000);
4137
+ return false;
4138
+ });
4139
+ if (leftStartElement) result.push(this.plannerElements.get(leftStartElement.plannedElement.elementId));
4030
4140
  break;
4031
4141
  case 'TOP':
4032
- var topNeighbour = (_curGrid$area$fromX = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX === void 0 ? void 0 : _curGrid$area$fromX[plannedElement.area.toY];
4033
- var tElementId = topNeighbour === null || topNeighbour === void 0 || (_topNeighbour$planned = topNeighbour.plannedElement) === null || _topNeighbour$planned === void 0 ? void 0 : _topNeighbour$planned.elementId;
4142
+ var topNeighbour = undefined;
4143
+ for (var y = plannedElement.area.toY; y < curGrid[plannedElement.area.fromX].length; y++) {
4144
+ topNeighbour = curGrid[plannedElement.area.fromX][y];
4145
+ break;
4146
+ }
4147
+ if (!topNeighbour) break;
4148
+ var tElementId = (_plannedElement3 = topNeighbour.plannedElement) === null || _plannedElement3 === void 0 ? void 0 : _plannedElement3.elementId;
4034
4149
  if (tElementId) result.push(this.plannerElements.get(tElementId));
4035
4150
  break;
4036
4151
  case 'DOWN':
4037
- var downNeighbour = (_curGrid$area$fromX2 = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX2 === void 0 ? void 0 : _curGrid$area$fromX2[plannedElement.area.fromY - 1];
4152
+ var downNeighbour = (_curGrid$area$fromX = curGrid[plannedElement.area.fromX]) === null || _curGrid$area$fromX === void 0 ? void 0 : _curGrid$area$fromX[plannedElement.area.fromY - 1];
4038
4153
  var dElementId = downNeighbour === null || downNeighbour === void 0 || (_downNeighbour$planne = downNeighbour.plannedElement) === null || _downNeighbour$planne === void 0 ? void 0 : _downNeighbour$planne.elementId;
4039
4154
  if (dElementId) result.push(this.plannerElements.get(dElementId));
4040
4155
  break;
@@ -4104,9 +4219,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4104
4219
  var curHeight = 0;
4105
4220
  var row = frontGrid[x];
4106
4221
  for (var y = 0; y < row.length;) {
4107
- var _cell4, _cell$plannedElement$, _cell$plannedElement8;
4222
+ var _cell5, _cell$plannedElement$, _cell$plannedElement8;
4108
4223
  var cell = row[y];
4109
- var elementId = (_cell4 = cell) === null || _cell4 === void 0 || (_cell4 = _cell4.plannedElement) === null || _cell4 === void 0 ? void 0 : _cell4.elementId;
4224
+ var elementId = (_cell5 = cell) === null || _cell5 === void 0 || (_cell5 = _cell5.plannedElement) === null || _cell5 === void 0 ? void 0 : _cell5.elementId;
4110
4225
  if (elementId && cell && checkedElementIds.indexOf(elementId) == -1) {
4111
4226
  curHeight += this.plannerElements.get(elementId).getHeight();
4112
4227
  if (x == 0 && y == 0) depth = this.plannerElements.get(elementId).getDepth();
@@ -4136,9 +4251,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4136
4251
  var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4137
4252
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4138
4253
  var result = [];
4254
+ var grid = this.generalPlanningState.grids[0].matrix;
4139
4255
  var lastHeight = -1;
4140
- for (var x = 0; x < this.getColumnCount();) {
4141
- var row = this.generalPlanningState.grids[0].matrix[x];
4256
+ for (var x = 0; x < grid.length;) {
4257
+ var _grid$new_x;
4258
+ var row = grid[x];
4142
4259
  var height = 0;
4143
4260
  for (var y = 0; y < row.length;) {
4144
4261
  var element = row[y].plannedElement;
@@ -4147,12 +4264,20 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4147
4264
  }
4148
4265
  if (Math.round(height) == Math.round(lastHeight) || onBottom) {
4149
4266
  if (!result[result.length - 1]) result.push([]);
4150
- result[result.length - 1].push(this.getPlannerElementAtGridPos(x, row.length - 1, false));
4151
- } else {
4152
- result.push([this.getPlannerElementAtGridPos(x, row.length - 1, false)]);
4267
+ result[result.length - 1].push(grid[x][row.length - 1].plannedElement);
4268
+ } else if (grid[x][row.length - 1].plannedElement.area.fromX == x) {
4269
+ result.push([grid[x][row.length - 1].plannedElement]);
4153
4270
  }
4154
4271
  lastHeight = height;
4155
- x = row[row.length - 1].plannedElement ? row[row.length - 1].plannedElement.area.toX : x + 1;
4272
+ var new_x = row[row.length - 1].plannedElement.area.toX;
4273
+ var newHeight = (_grid$new_x = grid[new_x]) === null || _grid$new_x === void 0 ? void 0 : _grid$new_x.length;
4274
+
4275
+ // if the next row is fx. lower and doesn't have a clean cut here we need to skip more
4276
+ if (newHeight && newHeight != row.length) {
4277
+ var cell = grid[new_x][newHeight - 1];
4278
+ if (cell.index.x != cell.plannedElement.area.fromX) new_x = cell.plannedElement.area.toX;
4279
+ }
4280
+ x = new_x;
4156
4281
  }
4157
4282
  return result;
4158
4283
  }
@@ -4198,18 +4323,19 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4198
4323
  }, {
4199
4324
  key: "getAllElementsToFillUp",
4200
4325
  value: function getAllElementsToFillUp(elementId, dir) {
4201
- var _this = this;
4326
+ var _this2 = this;
4202
4327
  var curPos = this.getCellsInGridByElementId(elementId);
4203
4328
 
4204
4329
  //columns and rows are swapped don't ask me why
4205
4330
  var element = curPos.cells[0].plannedElement;
4206
4331
  var index = {
4207
- x: curPos.startColIndex,
4332
+ x: dir == 'LEFT' ? curPos.startColIndex : curPos.endColIndex - 1,
4208
4333
  y: curPos.startRowIndex
4209
4334
  };
4210
4335
  var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4211
4336
  var plannerIdsToFill = [];
4212
4337
  var existingPlannerIds = [];
4338
+ var lastFreeSpace = 0;
4213
4339
  var _loop = function _loop(_y) {
4214
4340
  var _curGrid$index$x$_y;
4215
4341
  var elementToCopy = (_curGrid$index$x$_y = curGrid[index.x][_y]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
@@ -4219,13 +4345,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4219
4345
  } // break
4220
4346
  var length = element.area.toX - element.area.fromX;
4221
4347
  var d = dir == 'RIGHT' ? +length : -length;
4222
- var isPlanned = curGrid.every(function (x, idx) {
4223
- var _x$_y;
4224
- 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);
4348
+ var isPlanned = curGrid.find(function (x, idx) {
4349
+ return idx == element.area.toX + d - 1 && x[x.length - 1].index.y >= elementToCopy.area.fromY;
4350
+ });
4351
+ var neighbours = _this2.getNeighborElements(elementToCopy.elementId, dir);
4352
+ var freeSpace = 0;
4353
+ neighbours.forEach(function (n) {
4354
+ if (_this2.getNeighborElements(n.ElementId, "TOP").length == 0) freeSpace += n.Width;
4225
4355
  });
4226
- var neighbour = _this.getNeighborElements(elementToCopy.elementId, dir);
4227
- if (neighbour.length == 0 && !isPlanned && elementToCopy) plannerIdsToFill.push(elementToCopy.elementId);else if (elementToCopy) existingPlannerIds.push(elementToCopy.elementId);
4356
+ if (neighbours.length == 0 && lastFreeSpace >= elementToCopy.size.width && !isPlanned && elementToCopy) plannerIdsToFill.push(elementToCopy.elementId);
4357
+ if (neighbours.length > 0 && freeSpace > element.size.width) plannerIdsToFill.push(neighbours[neighbours.length - 1].ElementId);else if (elementToCopy) existingPlannerIds.push(elementToCopy.elementId);
4228
4358
  _y = elementToCopy.area.toY;
4359
+ lastFreeSpace = freeSpace;
4229
4360
  y = _y;
4230
4361
  };
4231
4362
  for (var y = 0; y <= index.y;) {
@@ -4406,13 +4537,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4406
4537
  var elementData = this.plannerElements.get(elementId);
4407
4538
  var deletedCells = this.getCellsInGridByElementId(elementId);
4408
4539
  if (!elementData) return;
4409
- this.deleteElement(elementId, "STD");
4540
+ this.deleteElement(elementId, 'STD');
4410
4541
  var curGrid = this.generalPlanningState.grids[0].matrix;
4411
4542
  var cells = undefined;
4412
- if (absoluteIndex.x < 0 || absoluteIndex.y == 0 && deletedCells.endRowIndex >= absoluteIndex.x // moved 0 to 4 so now shift to left
4413
- ) {
4543
+ if (absoluteIndex.x < 0 && absoluteIndex.y == 0) {
4414
4544
  var dir = deletedCells.endColIndex >= absoluteIndex.x;
4415
- if (deletedCells.startColIndex >= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4545
+ if (deletedCells.startColIndex <= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4416
4546
  if (absoluteIndex.x < 0) absoluteIndex.x = 0;
4417
4547
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4418
4548
  var movedGrid = [];
@@ -4421,9 +4551,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4421
4551
  _.forEach(function (_, y) {
4422
4552
  var newX = x;
4423
4553
  var shiftX = 0;
4424
- if (y == absoluteIndex.y) {
4425
- newX += dir ? element.area.toX - element.area.fromX : -(element.area.toX - element.area.fromX);
4426
- shiftX = dir ? element.area.toX - element.area.fromX : -(element.area.toX - element.area.fromX);
4554
+ if (y == absoluteIndex.y || absoluteIndex.y == 0) {
4555
+ newX += dir ? element.area.toX - element.area.fromX : 0;
4556
+ shiftX = dir ? element.area.toX - element.area.fromX : 0;
4427
4557
  }
4428
4558
  if (!movedGrid[newX]) movedGrid[newX] = [];
4429
4559
  var cellElem = curGrid[x][y].plannedElement;
@@ -4446,7 +4576,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4446
4576
  });
4447
4577
  curGrid = movedGrid;
4448
4578
  } else {
4449
- if (absoluteIndex.x > deletedCells.startColIndex && absoluteIndex.y == deletedCells.startRowIndex) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4579
+ if (absoluteIndex.x > deletedCells.startColIndex && deletedCells.startRowIndex == 0) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4450
4580
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4451
4581
  }
4452
4582
  for (var i = 0; i < cells.length; i++) {
@@ -4508,75 +4638,127 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4508
4638
  }, {
4509
4639
  key: "updateGridElementDimensions",
4510
4640
  value: function updateGridElementDimensions(elementId, elementData) {
4511
- var _this2 = this;
4512
- if (!elementData) return;
4641
+ var _this3 = this;
4642
+ if (!elementData) return false;
4643
+ var backup = structuredClone(this.generalPlanningState);
4513
4644
  var res = this.getCellsInGridByElementId(elementId);
4514
4645
  var scpe = this.gridSetupParams.forceSingleCellPerElement;
4646
+ var origin = {
4647
+ x: res.cells[0].plannedElement.area.toX,
4648
+ y: res.cells[0].plannedElement.area.toY
4649
+ };
4650
+ var diff = {
4651
+ x: 0,
4652
+ y: 0
4653
+ };
4515
4654
  res.cells.forEach(function (cell) {
4516
4655
  if (!cell.plannedElement) return;
4517
- cell.plannedElement.size.width = elementData.width;
4518
- cell.plannedElement.size.height = elementData.height;
4519
- cell.plannedElement.area = {
4520
- fromX: cell.index.x,
4521
- toX: !scpe ? Math.round(cell.index.x + elementData.width / _this2.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4522
- fromY: cell.index.y,
4523
- toY: !scpe ? Math.round(cell.index.y + elementData.height / _this2.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4656
+ var el = cell.plannedElement;
4657
+ el.size.width = elementData.width;
4658
+ el.size.height = elementData.height;
4659
+ el.area = {
4660
+ fromX: el.area.fromX,
4661
+ toX: !scpe ? Math.round(el.area.fromX + elementData.width / _this3.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4662
+ fromY: el.area.fromY,
4663
+ toY: !scpe ? Math.round(el.area.fromY + elementData.height / _this3.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4524
4664
  };
4665
+ diff.y = cell.plannedElement.area.toY - origin.y;
4666
+ diff.x = cell.plannedElement.area.toX - origin.x;
4525
4667
  });
4526
- if (scpe) return;
4668
+ var cell = res.cells[0];
4669
+ var grid = this.generalPlanningState.grids[0].matrix;
4670
+ // if the element got bigger we need to move all the above elements up
4671
+ // if it got wider we need to move all the elements to the right
4672
+ if (diff.y != 0) {
4673
+ for (var x = cell.plannedElement.area.fromX; x < cell.plannedElement.area.toX; x++) {
4674
+ var row = grid[x];
4675
+ if (!row) continue;
4676
+ for (var y = origin.y; y < row.length; y++) {
4677
+ var _cell = row[y];
4678
+ if (_cell.index.y != y || _cell.plannedElement.elementId == cell.plannedElement.elementId) continue; //already corrected
4679
+ _cell.index.y += diff.y;
4680
+ _cell.plannedElement.area.fromY += diff.y;
4681
+ _cell.plannedElement.area.toY += diff.y;
4682
+ }
4683
+ }
4684
+ } else if (diff.x != 0) {
4685
+ for (var _x3 = cell.plannedElement.area.fromX; _x3 < grid.length; _x3++) {
4686
+ for (var _y2 = cell.plannedElement.area.fromY; _y2 < cell.plannedElement.area.toY; _y2++) {
4687
+ var _cell6 = grid[_x3][_y2];
4688
+ if (!_cell6 || _cell6.plannedElement.elementId == elementId) continue; //already corrected
4689
+ _cell6.index.x += diff.x;
4690
+ _cell6.plannedElement.area.fromX += diff.x;
4691
+ _cell6.plannedElement.area.toX += diff.x;
4692
+ }
4693
+ }
4694
+ }
4695
+
4696
+ // after indices/areas are corrected rebuild the grid
4697
+ if (scpe) return false;
4698
+ var changedElementData = res.cells[0].plannedElement;
4527
4699
  var newGrid = new Array();
4528
4700
  var plannedCells = this.getAllUsedCellsInGrid(false);
4529
- plannedCells.forEach(function (cell) {
4530
- var area = cell.plannedElement.area;
4531
- if (newGrid.find(function (x) {
4532
- return x.find(function (y) {
4533
- var _y$plannedElement3, _cell$plannedElement9;
4534
- 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);
4535
- });
4536
- })) return;
4537
- for (var x = area.fromX; x < area.toX; x++) {
4538
- var _loop2 = function _loop2(y) {
4539
- if (!newGrid[x]) newGrid[x] = [];
4540
- if (y < area.fromY) {
4541
- if (newGrid[x][y]) return 0; // continue
4542
- var el = _this2.generalPlanningState.grids[0].matrix.findLast(function (_x) {
4543
- return _x[y].plannedElement;
4544
- });
4545
- newGrid[x][y] = {
4546
- index: {
4547
- x: x,
4548
- y: y
4549
- },
4550
- plannedElement: el && el.length > 0 ? el[0].plannedElement : undefined
4701
+ var _loop2 = function _loop2() {
4702
+ var cell = plannedCells[idx];
4703
+ var area = cell.plannedElement.area;
4704
+ if (newGrid.find(function (x) {
4705
+ return x.find(function (y) {
4706
+ var _y$plannedElement3, _cell$plannedElement9;
4707
+ 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);
4708
+ });
4709
+ })) return 0; // continue
4710
+ for (var _x4 = area.fromX; _x4 < area.toX; _x4++) {
4711
+ for (var _y3 = area.fromY; _y3 < area.toY; _y3++) {
4712
+ var _support$plannedEleme;
4713
+ if (!newGrid[_x4] && area.fromY == 0) newGrid[_x4] = [];
4714
+
4715
+ // we have a so called overhanging element not so nice, let's correct:
4716
+ var support = plannedCells.find(function (c) {
4717
+ return c.plannedElement.area.toX >= cell.plannedElement.area.toX && c.plannedElement.area.toY == cell.index.y;
4718
+ });
4719
+ if (!support && !newGrid[_x4]) {
4720
+ _this3.generalPlanningState = backup;
4721
+ return {
4722
+ v: true
4551
4723
  };
4552
- return 0; // continue
4553
4724
  }
4554
4725
 
4555
- // if the element got smaller we need to move it to the neighbour
4556
- //newGrid[x][y] = { ...cell, index: { x, y: y } };
4557
- newGrid[x][y] = _objectSpread(_objectSpread({}, cell), {}, {
4726
+ // the element below got smaller
4727
+ if (!newGrid[_x4] && (!support || ((_support$plannedEleme = support.plannedElement) === null || _support$plannedEleme === void 0 ? void 0 : _support$plannedEleme.elementId) == changedElementData.elementId)) {
4728
+ _this3.generalPlanningState = backup;
4729
+ return {
4730
+ v: true
4731
+ };
4732
+ } else if (!newGrid[_x4]) newGrid[_x4] = [];
4733
+ // when the element above starts early and goes over multiple ones
4734
+
4735
+ // regular case
4736
+ newGrid[_x4][_y3] = _objectSpread(_objectSpread({}, cell), {}, {
4558
4737
  index: {
4559
- x: x,
4560
- y: y
4738
+ x: _x4,
4739
+ y: _y3
4561
4740
  },
4562
4741
  plannedElement: _objectSpread(_objectSpread({}, cell.plannedElement), {}, {
4563
4742
  area: {
4564
- fromX: x,
4565
- toX: x + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4566
- fromY: y,
4567
- toY: y + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4743
+ fromX: cell.plannedElement.area.fromX,
4744
+ toX: cell.plannedElement.area.fromX + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4745
+ fromY: cell.plannedElement.area.fromY,
4746
+ toY: cell.plannedElement.area.fromY + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4568
4747
  }
4569
4748
  })
4570
4749
  });
4571
- },
4572
- _ret;
4573
- for (var y = 0; y < area.toY; y++) {
4574
- _ret = _loop2(y);
4575
- if (_ret === 0) continue;
4750
+ }
4576
4751
  }
4577
- }
4578
- });
4752
+ },
4753
+ _ret;
4754
+ for (var idx = 0; idx < plannedCells.length; idx++) {
4755
+ _ret = _loop2();
4756
+ if (_ret === 0) continue;
4757
+ if (_ret) return _ret.v;
4758
+ }
4759
+ console.log('thoula 2 => ', newGrid);
4579
4760
  if (res.backside) this.generalPlanningState.grids[1].matrix = newGrid;else this.generalPlanningState.grids[0].matrix = newGrid;
4761
+ return false;
4580
4762
  }
4581
4763
 
4582
4764
  /**
@@ -4617,9 +4799,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4617
4799
  var topNeighbors = this.getNeighborElements(elementId, 'TOP');
4618
4800
  var rightNeighbors = this.getNeighborElements(elementId, 'RIGHT');
4619
4801
  var leftNeighbors = this.getNeighborElements(elementId, 'LEFT');
4802
+ var downNeighbors = this.getNeighborElements(elementId, 'DOWN');
4620
4803
  if (topNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[0]]);
4621
4804
  if (leftNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVL', [leftNeighbors[0]]);
4622
4805
  if (rightNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[0]]);
4806
+ if (rightNeighbors.length == 0 && leftNeighbors.length == 0 && downNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVU', [downNeighbors[0]]);
4623
4807
  element.PosNr = posNr;
4624
4808
  posNr++;
4625
4809
  }
@@ -4627,9 +4811,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4627
4811
  }
4628
4812
  for (var i = 0; i < backGrid.length; i++) {
4629
4813
  for (var j = 0; j < backGrid[i].length; j++) {
4630
- var _cell5$plannedElement;
4631
- var _cell5 = backGrid[i][j];
4632
- var _elementId6 = _cell5 === null || _cell5 === void 0 || (_cell5$plannedElement = _cell5.plannedElement) === null || _cell5$plannedElement === void 0 ? void 0 : _cell5$plannedElement.elementId;
4814
+ var _cell7$plannedElement;
4815
+ var _cell7 = backGrid[i][j];
4816
+ var _elementId6 = _cell7 === null || _cell7 === void 0 || (_cell7$plannedElement = _cell7.plannedElement) === null || _cell7$plannedElement === void 0 ? void 0 : _cell7$plannedElement.elementId;
4633
4817
  if (_elementId6 && allCheckedElementIds.indexOf(_elementId6) == -1) {
4634
4818
  var _element2 = this.plannerElements.get(_elementId6);
4635
4819
  allCheckedElementIds.push(_elementId6);
@@ -4967,9 +5151,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4967
5151
  var targetRowIndex = endRowIndex + 1;
4968
5152
  var _copyPossible = false;
4969
5153
  // Iterate through columns within the element's width
4970
- for (var _x3 = endColIndex; _x3 >= startColIndex; _x3--) {
4971
- if (isValidCell(_x3, targetRowIndex)) {
4972
- copyStartColIndex = _x3;
5154
+ for (var _x5 = endColIndex; _x5 >= startColIndex; _x5--) {
5155
+ if (isValidCell(_x5, targetRowIndex)) {
5156
+ copyStartColIndex = _x5;
4973
5157
  _copyPossible = true;
4974
5158
  }
4975
5159
  }
@@ -4986,19 +5170,19 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4986
5170
  var _targetColIndex = endColIndex;
4987
5171
  var _copyPossible2 = false;
4988
5172
  // Iterate through rows within the element's height
4989
- for (var _y2 = startRowIndex; _y2 <= endRowIndex; _y2++) {
4990
- if (isValidCell(_targetColIndex, _y2)) {
4991
- copyStartRowIndex = _y2;
5173
+ for (var _y4 = startRowIndex; _y4 <= endRowIndex; _y4++) {
5174
+ if (isValidCell(_targetColIndex, _y4)) {
5175
+ copyStartRowIndex = _y4;
4992
5176
  _copyPossible2 = true;
4993
5177
  break;
4994
5178
  }
4995
5179
  }
4996
5180
  if (!_copyPossible2) return undefined;
4997
5181
  _copyPossible2 = false;
4998
- for (var _x4 = endColIndex; _x4 <= endColIndex + elementCells.colCount; _x4++) {
4999
- if (isValidCell(_x4, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x4, copyStartRowIndex - 1))) {
5182
+ for (var _x6 = endColIndex; _x6 <= endColIndex + elementCells.colCount; _x6++) {
5183
+ if (isValidCell(_x6, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x6, copyStartRowIndex - 1))) {
5000
5184
  //check also for overhang
5001
- copyEndColIndex = _x4;
5185
+ copyEndColIndex = _x6;
5002
5186
  _copyPossible2 = true;
5003
5187
  } else {
5004
5188
  break; //when you find one situation where it is not valid skip outside.
@@ -5038,16 +5222,16 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5038
5222
  } else {
5039
5223
  var distToOriginX = 0;
5040
5224
  for (var i = 0; i < cellsStartColIndex; i++) {
5041
- var _plannedElement$size$3, _plannedElement3;
5042
- 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;
5225
+ var _plannedElement$size$3, _plannedElement4;
5226
+ 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;
5043
5227
  }
5044
5228
  if (cellsStartColIndex < 0) {
5045
5229
  distToOriginX = -element.getWidth();
5046
5230
  }
5047
5231
  var distToOriginY = 0;
5048
5232
  for (var i = 0; i < cellsStartRowIndex; i++) {
5049
- var _plannedElement$size$4, _plannedElement4;
5050
- 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;
5233
+ var _plannedElement$size$4, _plannedElement5;
5234
+ 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;
5051
5235
  }
5052
5236
  elementLocation.startIndexWorldPos = new Vector2(distToOriginX, distToOriginY);
5053
5237
  }
@@ -5094,7 +5278,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5094
5278
  var _ele2, _ele3;
5095
5279
  var movables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5096
5280
  var selectedElementId = arguments.length > 1 ? arguments[1] : undefined;
5097
- if (!movables) return this.generalPlanningState;
5281
+ if (!movables || !selectedElementId) return this.generalPlanningState;
5098
5282
  // fill to equal size
5099
5283
  var matrix = this.generalPlanningState.grids[0].matrix;
5100
5284
  var matrixWithMovables = [];
@@ -5141,6 +5325,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5141
5325
  isSupport = !!matrix.find(function (x, idx) {
5142
5326
  return idx >= ele.area.fromX && idx < ele.area.toX && matrix[idx].length > ele.area.toY;
5143
5327
  }); // can't move if there is anything above these cells
5328
+
5329
+ // if it has left and right neighbour and is on the bottom
5330
+ if (ele.area.fromX == 0 && this.getNeighborElements(ele.elementId, 'LEFT').length > 0 && this.getNeighborElements(ele.elementId, 'RIGHT').length > 0) isSupport = true;
5144
5331
  }
5145
5332
  if (isSupport) return this.generalPlanningState;
5146
5333
  for (var x = 0; x < maxWidth; x++) {
@@ -5161,7 +5348,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5161
5348
  if (x >= from && x < to) return;
5162
5349
  var row = matrixWithMovables[x];
5163
5350
  var len = row.length;
5164
- var _x = ele.fromX == 0 ? x : x - 1;
5351
+ var _x = ele.area.fromX == 0 ? x : x - 1;
5165
5352
  row[len] = {
5166
5353
  index: {
5167
5354
  x: _x,
@@ -5174,7 +5361,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5174
5361
  var len = matrixWithMovables.length;
5175
5362
  if (((_ele2 = ele) === null || _ele2 === void 0 ? void 0 : _ele2.area.toX) != matrix.length) matrixWithMovables[len] = [{
5176
5363
  index: {
5177
- x: ele.fromX == 0 ? len : len - 1,
5364
+ x: ele.area.fromX == 0 ? len : len - 1,
5178
5365
  y: 0
5179
5366
  }
5180
5367
  }];
@@ -5326,7 +5513,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5326
5513
  key: "initPlanner",
5327
5514
  value: function () {
5328
5515
  var _initPlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(setPlanData) {
5329
- var planData, jsonElements, i, jsonElement, elementID, plannerElement, data, highesElemId, _jsonElement, params;
5516
+ var planData, jsonElements, i, jsonElement, elementID, plannerElement, constructionRules, _constructionRules$co, _constructionRules$co2, data, highesElemId, _jsonElement, params;
5330
5517
  return _regeneratorRuntime.wrap(function _callee$(_context) {
5331
5518
  while (1) switch (_context.prev = _context.next) {
5332
5519
  case 0:
@@ -5356,7 +5543,20 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5356
5543
  if (this.nextElementId < elementID + 1) this.nextElementId = elementID + 1;
5357
5544
  this.set.setElementId(jsonElement.basketID, plannerElement.ElementId);
5358
5545
  if (!this.constructionRulesHandler.getConstructionRulesLoaded()) {
5359
- this.constructionRulesHandler.setConstructionRules(this.set.getConstructionRuleOfElementId(plannerElement.ElementId));
5546
+ constructionRules = this.set.getConstructionRuleOfElementId(plannerElement.ElementId);
5547
+ if (constructionRules) {
5548
+ this.boxPlannerGrid.GridSetupParams = {
5549
+ fixCellRasterHeight: 19.2,
5550
+ fixCellRasterWidth: 19.2,
5551
+ forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5552
+ forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5553
+ hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5554
+ maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5555
+ hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
5556
+ maxGridRasterWidth: constructionRules.constructionRules.maxGridRasterWidth
5557
+ };
5558
+ }
5559
+ this.constructionRulesHandler.setConstructionRules(constructionRules);
5360
5560
  }
5361
5561
  data = this.set.getPlannerData(plannerElement.ElementId);
5362
5562
  if (data) plannerElement.updatePlannerData(data);
@@ -5484,7 +5684,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5484
5684
  key: "addPlannerElement",
5485
5685
  value: (function () {
5486
5686
  var _addPlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(basketID, params) {
5487
- var plannerElement, data, constructionRules, _constructionRules$co, _constructionRules$co2;
5687
+ var plannerElement, data, constructionRules, _constructionRules$co3, _constructionRules$co4;
5488
5688
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
5489
5689
  while (1) switch (_context2.prev = _context2.next) {
5490
5690
  case 0:
@@ -5508,8 +5708,8 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5508
5708
  this.boxPlannerGrid.GridSetupParams = {
5509
5709
  fixCellRasterHeight: 19.2,
5510
5710
  fixCellRasterWidth: 19.2,
5511
- forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5512
- forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5711
+ forceFixCellRasterSize: (_constructionRules$co3 = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co3 !== void 0 ? _constructionRules$co3 : true,
5712
+ forceSingleCellPerElement: (_constructionRules$co4 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co4 !== void 0 ? _constructionRules$co4 : true,
5513
5713
  hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5514
5714
  maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5515
5715
  hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
@@ -5904,42 +6104,58 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5904
6104
  value: (function () {
5905
6105
  var _updatePlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(changedOPT, targetElements) {
5906
6106
  var _this2 = this;
5907
- var message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
6107
+ var failed, message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
5908
6108
  return _regeneratorRuntime.wrap(function _callee7$(_context7) {
5909
6109
  while (1) switch (_context7.prev = _context7.next) {
5910
6110
  case 0:
5911
6111
  LOG.debug('BoxPlanner - configurationHasChanged ' + changedOPT);
6112
+ failed = false;
5912
6113
  targetElements === null || targetElements === void 0 || targetElements.forEach(function (e) {
5913
6114
  var _this2$set$getArticle;
5914
- return _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
6115
+ failed = _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
6116
+ if (failed) return;
6117
+ });
6118
+ if (!failed) {
6119
+ _context7.next = 5;
6120
+ break;
6121
+ }
6122
+ return _context7.abrupt("return", {
6123
+ doDeleteBackGrid: false,
6124
+ elemIdsToDelete: [],
6125
+ viewMessageCodex: "resizeerror",
6126
+ failed: true
5915
6127
  });
6128
+ case 5:
6129
+ this.boxPlannerGrid.updateWorldPosOfElements();
5916
6130
  if (!(changedOPT && targetElements && targetElements.length > 0 && changedOPT['OPTELEMENT'] && (changedOPT['OPTELEMENT'] == 'OPVECK_I' || changedOPT['OPTELEMENT'] == 'OPVECK_A'))) {
5917
- _context7.next = 19;
6131
+ _context7.next = 23;
5918
6132
  break;
5919
6133
  }
5920
6134
  if (!(targetElements.length > 1)) {
5921
- _context7.next = 10;
6135
+ _context7.next = 14;
5922
6136
  break;
5923
6137
  }
5924
- _context7.next = 6;
6138
+ _context7.next = 10;
5925
6139
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements, true);
5926
- case 6:
6140
+ case 10:
5927
6141
  message = _context7.sent;
5928
6142
  if (!message) {
5929
- _context7.next = 9;
6143
+ _context7.next = 13;
5930
6144
  break;
5931
6145
  }
5932
6146
  return _context7.abrupt("return", {
5933
6147
  doDeleteBackGrid: false,
5934
6148
  elemIdsToDelete: [],
5935
- viewMessageCodex: message
6149
+ viewMessageCodex: message,
6150
+ failed: false
5936
6151
  });
5937
- case 9:
6152
+ case 13:
5938
6153
  return _context7.abrupt("return", {
5939
6154
  doDeleteBackGrid: false,
5940
- elemIdsToDelete: []
6155
+ elemIdsToDelete: [],
6156
+ failed: false
5941
6157
  });
5942
- case 10:
6158
+ case 14:
5943
6159
  //If the most bottom element has no neighbor right or left - copy element
5944
6160
  cellPos = this.boxPlannerGrid.getCellsInGridByElementId(targetElements[0]);
5945
6161
  elemToCheck = targetElements[0];
@@ -5947,7 +6163,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5947
6163
  elemToCheck = this.boxPlannerGrid.getPlannerElementAtGridPos(cellPos.startColIndex, 0, false).getElementId();
5948
6164
  }
5949
6165
  if (!(!this.boxPlannerGrid.getElementHasLeftElement(elemToCheck) || !this.boxPlannerGrid.getElementHasRightElement(elemToCheck))) {
5950
- _context7.next = 19;
6166
+ _context7.next = 23;
5951
6167
  break;
5952
6168
  }
5953
6169
  //Someone has changed Eck innen or aussen. If the current eselected Element has no neighbor left or right copy neighbor
@@ -5969,6 +6185,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5969
6185
  copyType: 'BoxPlanner_COL'
5970
6186
  });
5971
6187
  return _context7.abrupt("return", {
6188
+ failed: false,
5972
6189
  doDeleteBackGrid: false,
5973
6190
  elemIdsToDelete: [],
5974
6191
  elementIdToCopy: allElementsToCopy,
@@ -5977,17 +6194,17 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5977
6194
  changedOPT: changedOPT,
5978
6195
  targetElements: targetElements
5979
6196
  });
5980
- case 19:
6197
+ case 23:
5981
6198
  if (!(changedOPT && changedOPT['OPTDMOD'])) {
5982
- _context7.next = 34;
6199
+ _context7.next = 38;
5983
6200
  break;
5984
6201
  }
5985
6202
  _context7.t0 = changedOPT['OPTDMOD'];
5986
- _context7.next = _context7.t0 === 'OPVD_EIN' ? 23 : _context7.t0 === 'OPVD_AUS' ? 27 : 32;
6203
+ _context7.next = _context7.t0 === 'OPVD_EIN' ? 27 : _context7.t0 === 'OPVD_AUS' ? 31 : 36;
5987
6204
  break;
5988
- case 23:
6205
+ case 27:
5989
6206
  if (this.boxPlannerGrid.getPlannerHasActiveBackside()) {
5990
- _context7.next = 26;
6207
+ _context7.next = 30;
5991
6208
  break;
5992
6209
  }
5993
6210
  _allElementsToCopy = this.getPlannerElementsInfluencedByCopy(-1, {
@@ -5999,25 +6216,27 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5999
6216
  copyType: 'BoxPlanner_backside'
6000
6217
  });
6001
6218
  return _context7.abrupt("return", {
6219
+ failed: false,
6002
6220
  doDeleteBackGrid: false,
6003
6221
  elemIdsToDelete: [],
6004
6222
  elementIdToCopy: _allElementsToCopy,
6005
6223
  copyType: 'BoxPlanner_backside',
6006
6224
  changedOPT: changedOPT
6007
6225
  });
6008
- case 26:
6009
- return _context7.abrupt("break", 32);
6010
- case 27:
6226
+ case 30:
6227
+ return _context7.abrupt("break", 36);
6228
+ case 31:
6011
6229
  if (!this.boxPlannerGrid.getPlannerHasActiveBackside()) {
6012
- _context7.next = 31;
6230
+ _context7.next = 35;
6013
6231
  break;
6014
6232
  }
6015
6233
  allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6016
6234
  if (!(allElementsInBackGrid.length > 0)) {
6017
- _context7.next = 31;
6235
+ _context7.next = 35;
6018
6236
  break;
6019
6237
  }
6020
6238
  return _context7.abrupt("return", {
6239
+ failed: false,
6021
6240
  doDeleteBackGrid: true,
6022
6241
  elemIdsToDelete: allElementsInBackGrid.map(function (element) {
6023
6242
  return element.ElementId;
@@ -6025,23 +6244,24 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6025
6244
  deletionType: 'BoxPlanner_backside',
6026
6245
  changedOPT: changedOPT
6027
6246
  });
6028
- case 31:
6029
- return _context7.abrupt("break", 32);
6030
- case 32:
6031
- _context7.next = 48;
6247
+ case 35:
6248
+ return _context7.abrupt("break", 36);
6249
+ case 36:
6250
+ _context7.next = 52;
6032
6251
  break;
6033
- case 34:
6252
+ case 38:
6034
6253
  if (!(changedOPT && changedOPT['OPTFARBE_RAHMEN'] && changedOPT['OPTFARBE_RAHMEN'] == 'OPVSCHWARZ_MATT' && this.boxPlannerGrid.getPlannerHasActiveBackside())) {
6035
- _context7.next = 40;
6254
+ _context7.next = 44;
6036
6255
  break;
6037
6256
  }
6038
6257
  //If the double modul is active but the color is changed to black - disable double modul
6039
6258
  _allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6040
6259
  if (!(_allElementsInBackGrid.length > 0)) {
6041
- _context7.next = 38;
6260
+ _context7.next = 42;
6042
6261
  break;
6043
6262
  }
6044
6263
  return _context7.abrupt("return", {
6264
+ failed: false,
6045
6265
  doDeleteBackGrid: true,
6046
6266
  elemIdsToDelete: _allElementsInBackGrid.map(function (element) {
6047
6267
  return element.ElementId;
@@ -6051,34 +6271,37 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6051
6271
  targetElements: targetElements,
6052
6272
  viewMessageCodex: 'BOXPLAN_BLACKFRAME_INCOMPATIBLE_ELEMENT_WARNING'
6053
6273
  });
6054
- case 38:
6055
- _context7.next = 48;
6274
+ case 42:
6275
+ _context7.next = 52;
6056
6276
  break;
6057
- case 40:
6058
- _context7.next = 42;
6277
+ case 44:
6278
+ _context7.next = 46;
6059
6279
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements);
6060
- case 42:
6280
+ case 46:
6061
6281
  _message = _context7.sent;
6062
6282
  if (!_message) {
6063
- _context7.next = 47;
6283
+ _context7.next = 51;
6064
6284
  break;
6065
6285
  }
6066
6286
  return _context7.abrupt("return", {
6067
6287
  doDeleteBackGrid: false,
6068
6288
  elemIdsToDelete: [],
6069
- viewMessageCodex: _message
6289
+ viewMessageCodex: _message,
6290
+ failed: false
6070
6291
  });
6071
- case 47:
6292
+ case 51:
6072
6293
  return _context7.abrupt("return", {
6073
6294
  doDeleteBackGrid: false,
6074
- elemIdsToDelete: []
6295
+ elemIdsToDelete: [],
6296
+ failed: false
6075
6297
  });
6076
- case 48:
6298
+ case 52:
6077
6299
  return _context7.abrupt("return", {
6078
6300
  doDeleteBackGrid: false,
6079
- elemIdsToDelete: []
6301
+ elemIdsToDelete: [],
6302
+ failed: false
6080
6303
  });
6081
- case 49:
6304
+ case 53:
6082
6305
  case "end":
6083
6306
  return _context7.stop();
6084
6307
  }