@crystaldesign/web-planner-logic 25.14.0-beta.4 → 25.14.0-beta.41

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 (78) hide show
  1. package/build/cjs/{DivaBoxPlanner-d49621ee.js → DivaBoxPlanner-590fa04b.js} +619 -315
  2. package/build/cjs/{DivaStandardPlanner-0b694655.js → DivaStandardPlanner-14f641eb.js} +98 -88
  3. package/build/cjs/{DoorPlanner-772341ef.js → DoorPlanner-2fd36cbe.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-b13956a3.js → Host3DSignalR-01d03fbe.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-1a5e2abb.js → LiviqueWWSHandler-ce234c4d.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-89a523b6.js → PfisterWWSHandler-14763bec.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-1da507c8.js → PlannerHandler2D-69bf367e.js} +2 -2
  8. package/build/cjs/{SeriousBasketHandler-1bd2230c.js → SeriousBasketHandler-3284d8e6.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-db3521f9.js → ShelfPlanner-fdf5c5ea.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-5e6076d4.js → StandardWWSHandler-75b86bd6.js} +1 -1
  11. package/build/cjs/{index-ea4df511.js → index-d851c847.js} +257 -178
  12. package/build/cjs/index.js +1 -3
  13. package/build/esm/{DivaBoxPlanner-556bd49b.js → DivaBoxPlanner-90c95fe0.js} +618 -315
  14. package/build/esm/{DivaStandardPlanner-39fa4919.js → DivaStandardPlanner-15cc1700.js} +98 -88
  15. package/build/esm/{DoorPlanner-4feb77a1.js → DoorPlanner-6e3a0841.js} +1 -1
  16. package/build/esm/{Host3DSignalR-fd7a22e0.js → Host3DSignalR-e8cf0b3e.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-799592fc.js → LiviqueWWSHandler-108cb348.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-3c27e9a1.js → PfisterWWSHandler-41c995d8.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-bfed02e3.js → PlannerHandler2D-67320283.js} +2 -2
  20. package/build/esm/{SeriousBasketHandler-390bf174.js → SeriousBasketHandler-23209e7b.js} +1 -1
  21. package/build/esm/{ShelfPlanner-778dd54c.js → ShelfPlanner-ac57278a.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-eff7c728.js → StandardWWSHandler-6959f79c.js} +1 -1
  23. package/build/esm/{index-13aa8d15.js → index-8f6efc60.js} +258 -177
  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/API/ViewConfigDataType.d.ts +1 -0
  32. package/build/types/web-planner-logic/src/interface/API/ViewConfigDataType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts +1 -0
  34. package/build/types/web-planner-logic/src/interface/AdditionalModelInfos.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +5 -0
  36. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +1 -1
  38. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +2 -0
  40. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +2 -0
  42. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/ReturnTypes/index.d.ts +1 -0
  44. package/build/types/web-planner-logic/src/interface/ReturnTypes/index.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +0 -1
  46. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +1 -0
  48. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts +2 -1
  50. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +4 -2
  52. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +4 -4
  54. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +1 -0
  56. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts +4 -1
  58. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts.map +1 -1
  59. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +4 -1
  60. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  61. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +4 -1
  62. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  63. package/build/types/web-planner-logic/src/logic/Planner/Rendering/types.d.ts +1 -1
  64. package/build/types/web-planner-logic/src/logic/Planner/Rendering/types.d.ts.map +1 -1
  65. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  66. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +7 -1
  67. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  69. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +1 -0
  70. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  71. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  72. package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts.map +1 -1
  73. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/test/scripts/create_renderorder.d.ts +1 -1
  75. package/build/types/web-planner-logic/src/test/scripts/create_renderorder.d.ts.map +1 -1
  76. package/build/types/web-planner-logic/src/test/scripts/getOrigProductId.d.ts +1 -1
  77. package/build/types/web-planner-logic/src/test/scripts/getOrigProductId.d.ts.map +1 -1
  78. 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-ea4df511.js');
8
+ var index = require('./index-d851c847.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
11
- var PlannerHandler2D = require('./PlannerHandler2D-1da507c8.js');
12
- require('@babel/runtime/helpers/slicedToArray');
11
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-69bf367e.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);
@@ -2595,23 +2609,22 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2595
2609
  }
2596
2610
  }, {
2597
2611
  key: "validateDimensionRule",
2598
- value: function validateDimensionRule(dimRule, boxPlannerSize) {
2612
+ value: function validateDimensionRule(dimension, dimensionLimit, boxPlannerSize, higherLimit, lowerLimit) {
2599
2613
  var isOver = false;
2600
2614
  var isEqual = false;
2601
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimRule.dimensionLimit) isOver = true;
2602
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimRule.dimensionLimit) isEqual = true;
2603
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimRule.dimensionLimit) isOver = true;
2604
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimRule.dimensionLimit) isEqual = true;
2605
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2606
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2615
+ if (dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimensionLimit) isOver = true;
2616
+ if (dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimensionLimit) isEqual = true;
2617
+ if (dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimensionLimit) isOver = true;
2618
+ if (dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimensionLimit) isEqual = true;
2619
+ if (dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimensionLimit) isOver = true;
2620
+ if (dimension.toLowerCase() == 'depth' && boxPlannerSize.z == 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 higherLimit;
2609
2623
  } else if (isEqual) {
2610
- return true;
2624
+ return higherLimit;
2611
2625
  } else {
2612
- if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2626
+ return lowerLimit;
2613
2627
  }
2614
- return false;
2615
2628
  }
2616
2629
 
2617
2630
  /*
@@ -2622,42 +2635,38 @@ 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', false);
2653
+ var freeSpace = element.Width;
2654
+ rightNeighbours.forEach(function (n) {
2655
+ if (n.ElementId == changedElement.ElementId) return;
2656
+ var topElements = boxPlannerGrid.getNeighborElements(n.ElementId, 'TOP', false).filter(function (n) {
2657
+ return n.ElementId != changedElement.ElementId;
2658
+ });
2659
+ var topWidth = topElements.reduce(function (totalwidth, e) {
2660
+ return totalwidth += e.Width;
2661
+ }, 0);
2662
+ if (topWidth < n.Width) freeSpace += n.Width - topWidth;
2663
+ });
2664
+ if (Math.round(changedElement.Width) > Math.round(freeSpace)) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2665
+ } else {
2666
+ // over the changed one
2667
+ if (changedElement.Width < element.Width) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2668
+ }
2669
+ });
2661
2670
  }
2662
2671
  }, {
2663
2672
  key: "correctFoot",
@@ -2665,7 +2674,10 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2665
2674
  var _this3 = this;
2666
2675
  var elements = boxPlannerGrid.getAllElementsInFrontGrid();
2667
2676
  elements.forEach(function (e) {
2668
- if (boxPlannerGrid.getElementHasBottomElement(e.ElementId)) _this3.setOptionValue(e.ElementId, 'OPTFUSS_SYS', 'OPVOHNE', optionHandler);
2677
+ if (boxPlannerGrid.getElementHasBottomElement(e.ElementId)) {
2678
+ _this3.setOptionValue(e.ElementId, 'OPTFUSS_SYS', 'OPVOHNE', optionHandler);
2679
+ _this3.setOptionValue(e.ElementId, 'OPTPOSSIBILITY_FUSS_OHNE', 'OPVTRUE', optionHandler);
2680
+ }
2669
2681
  });
2670
2682
  }
2671
2683
 
@@ -2674,30 +2686,49 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2674
2686
  * */
2675
2687
  }, {
2676
2688
  key: "correctOptionsInfluencedByDimensions",
2677
- value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2689
+ value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs) {
2678
2690
  var _this4 = this;
2679
2691
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2680
2692
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2681
2693
  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);
2694
+ var setRule = function setRule(option, res) {
2695
+ if (changedOPTs) {
2696
+ var changedOpt = Object.entries(changedOPTs).find(function (_ref) {
2697
+ var _ref2 = _slicedToArray__default["default"](_ref, 2),
2698
+ key = _ref2[0];
2699
+ _ref2[1];
2700
+ return key == option;
2701
+ });
2702
+ if (changedOpt) {
2703
+ allElements.forEach(function (element) {
2704
+ return _this4.setOptionValue(element.ElementId, changedOpt[0], changedOpt[1], optionHandler);
2693
2705
  });
2706
+ return;
2707
+ }
2708
+ }
2709
+ allElements.forEach(function (element) {
2710
+ return _this4.setOptionDoCustom(element.ElementId, option, res, optionHandler);
2711
+ });
2712
+ };
2713
+ var dim = this.constructionRules.optionsInfluencedByDimensions;
2714
+ dim.forEach(function (dimRule) {
2715
+ if (Array.isArray(dimRule)) {
2716
+ var res = dimRule.every(function (r) {
2717
+ return _this4.validateDimensionRule(r.dimension, r.dimensionLimit, boxPlannerSize, r.higherLimit, r.lowerLimit).toLowerCase() == 'doshow';
2694
2718
  });
2719
+ var t = dimRule[0];
2720
+ if (res) setRule(t.option, 'doShow');else setRule(t.option, 'doHide');
2695
2721
  } 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);
2700
- });
2722
+ var seriesDimRule = dimRule;
2723
+ var baseDimRule = dimRule;
2724
+ if (seriesDimRule.series) {
2725
+ var _dimRule = seriesDimRule.series.findLast(function (r) {
2726
+ return _this4.validateDimensionRule(r.dimension, r.dimensionLimit, boxPlannerSize, '1', '2') == '1';
2727
+ });
2728
+ if (_dimRule) setRule(seriesDimRule.option, _dimRule.value);
2729
+ } else {
2730
+ setRule(baseDimRule.option, _this4.validateDimensionRule(baseDimRule.option, baseDimRule.dimensionLimit, boxPlannerSize, baseDimRule.higherLimit, baseDimRule.lowerLimit));
2731
+ }
2701
2732
  }
2702
2733
  });
2703
2734
  }
@@ -2771,22 +2802,22 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2771
2802
 
2772
2803
  // default => set all to ohne
2773
2804
  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) {
2805
+ var _element$size$width;
2806
+ seriesWidth += (_element$size$width = element.size.width) !== null && _element$size$width !== void 0 ? _element$size$width : 0;
2807
+ boxPlannerGrid.getAllElementsDown(element.elementId).elements.forEach(function (e) {
2777
2808
  return _this5.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2778
2809
  });
2779
- _this5.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2810
+ _this5.setOptionValue(element.elementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2780
2811
  });
2781
2812
  var firstUncoveredElement = serie[0];
2782
- var _loop2 = function _loop2() {
2813
+ var _loop = function _loop() {
2783
2814
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2784
2815
  // is a clean element ending
2785
2816
  var helperWidth = 0;
2786
2817
  var isClean = false;
2787
2818
  serie.forEach(function (element) {
2788
- var _element$Width3;
2789
- helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2819
+ var _element$size$width2;
2820
+ helperWidth += (_element$size$width2 = element.size.width) !== null && _element$size$width2 !== void 0 ? _element$size$width2 : 0;
2790
2821
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2791
2822
  });
2792
2823
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2795,11 +2826,11 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2795
2826
  if (!opv) return {
2796
2827
  v: void 0
2797
2828
  };
2798
- _this5.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2829
+ _this5.setOptionValue(firstUncoveredElement.elementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2799
2830
  var helperWidth = 0;
2800
2831
  firstUncoveredElement = serie.find(function (e) {
2801
- var _e$Width;
2802
- helperWidth += (_e$Width = e.Width) !== null && _e$Width !== void 0 ? _e$Width : 0;
2832
+ var _e$size$width;
2833
+ helperWidth += (_e$size$width = e.size.width) !== null && _e$size$width !== void 0 ? _e$size$width : 0;
2803
2834
  if (helperWidth > opv.limit) return true;
2804
2835
  return false;
2805
2836
  });
@@ -2808,7 +2839,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2808
2839
  },
2809
2840
  _ret;
2810
2841
  while (seriesWidth != 0) {
2811
- _ret = _loop2();
2842
+ _ret = _loop();
2812
2843
  if (_ret) return _ret.v;
2813
2844
  }
2814
2845
  });
@@ -3135,7 +3166,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3135
3166
  value: function () {
3136
3167
  var _updateOptionLogicBoxPlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(boxPlannerGrid, changedOPTs, targetElements, forceResetCornerElements) {
3137
3168
  var _targetElements;
3138
- var startTime, resultMessage, optionHandler, allElements, i, _iterator, _step, coverPlateRule, j, doChangeRetailArticleNumbers;
3169
+ var startTime, resultMessage, optionHandler, allElements, i, j, _boxPlannerGrid$getPl2, elementId, _boxPlannerGrid$getPl3, _elementId, _iterator, _step, coverPlateRule, _boxPlannerGrid$getPl4, _elementId2, doChangeRetailArticleNumbers;
3139
3170
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
3140
3171
  while (1) switch (_context.prev = _context.next) {
3141
3172
  case 0:
@@ -3170,19 +3201,6 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3170
3201
  this.correctBottom(boxPlannerGrid, optionHandler, false);
3171
3202
  if (boxPlannerGrid.getPlannerHasActiveBackside()) this.correctBottom(boxPlannerGrid, optionHandler, true);
3172
3203
  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
3204
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3187
3205
  for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3188
3206
  this.correctSimpleOpt(i, j, boxPlannerGrid, optionHandler, false);
@@ -3195,39 +3213,126 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3195
3213
  }
3196
3214
  }
3197
3215
  }
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
- }
3216
+ i = 0;
3217
+ case 17:
3218
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3219
+ _context.next = 31;
3220
+ break;
3203
3221
  }
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
- }
3222
+ j = 0;
3223
+ case 19:
3224
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3225
+ _context.next = 28;
3226
+ break;
3211
3227
  }
3228
+ elementId = (_boxPlannerGrid$getPl2 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl2 === void 0 ? void 0 : _boxPlannerGrid$getPl2.ElementId;
3229
+ if (elementId) {
3230
+ _context.next = 23;
3231
+ break;
3232
+ }
3233
+ return _context.abrupt("continue", 25);
3234
+ case 23:
3235
+ this.correctForceOptOfElement(elementId, boxPlannerGrid, optionHandler, false);
3236
+ this.correctNeighborCustomOLTs(elementId, boxPlannerGrid, optionHandler);
3237
+ case 25:
3238
+ j++;
3239
+ _context.next = 19;
3240
+ break;
3241
+ case 28:
3242
+ i++;
3243
+ _context.next = 17;
3244
+ break;
3245
+ case 31:
3246
+ if (!boxPlannerGrid.getPlannerHasActiveBackside()) {
3247
+ _context.next = 47;
3248
+ break;
3249
+ }
3250
+ i = boxPlannerGrid.getColumnCount() - 1;
3251
+ case 33:
3252
+ if (!(i >= 0)) {
3253
+ _context.next = 47;
3254
+ break;
3255
+ }
3256
+ j = 0;
3257
+ case 35:
3258
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3259
+ _context.next = 44;
3260
+ break;
3261
+ }
3262
+ _elementId = (_boxPlannerGrid$getPl3 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl3 === void 0 ? void 0 : _boxPlannerGrid$getPl3.ElementId;
3263
+ if (_elementId) {
3264
+ _context.next = 39;
3265
+ break;
3266
+ }
3267
+ return _context.abrupt("continue", 41);
3268
+ case 39:
3269
+ this.correctForceOptOfElement(_elementId, boxPlannerGrid, optionHandler, true);
3270
+ this.correctNeighborCustomOLTs(_elementId, boxPlannerGrid, optionHandler);
3271
+ case 41:
3272
+ j++;
3273
+ _context.next = 35;
3274
+ break;
3275
+ case 44:
3276
+ i--;
3277
+ _context.next = 33;
3278
+ break;
3279
+ case 47:
3212
3280
  this.correctFoot(boxPlannerGrid, optionHandler);
3213
3281
  this.correctLadder(boxPlannerGrid, optionHandler);
3214
- this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3282
+ this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs);
3215
3283
  this.correctOverHangingElement((_targetElements = targetElements) === null || _targetElements === void 0 ? void 0 : _targetElements[0], boxPlannerGrid, optionHandler, changedOPTs);
3216
3284
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3217
3285
  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());
3286
+ if (this.constructionRules.coverPlateRule) {
3287
+ _iterator = _createForOfIteratorHelper$1(this.constructionRules.coverPlateRule);
3288
+ try {
3289
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3290
+ coverPlateRule = _step.value;
3291
+ this.correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler);
3292
+ }
3293
+ } catch (err) {
3294
+ _iterator.e(err);
3295
+ } finally {
3296
+ _iterator.f();
3221
3297
  }
3222
3298
  }
3299
+ i = 0;
3300
+ case 55:
3301
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3302
+ _context.next = 68;
3303
+ break;
3304
+ }
3305
+ j = 0;
3306
+ case 57:
3307
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3308
+ _context.next = 65;
3309
+ break;
3310
+ }
3311
+ _elementId2 = (_boxPlannerGrid$getPl4 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl4 === void 0 ? void 0 : _boxPlannerGrid$getPl4.getElementId();
3312
+ if (_elementId2) {
3313
+ _context.next = 61;
3314
+ break;
3315
+ }
3316
+ return _context.abrupt("continue", 62);
3317
+ case 61:
3318
+ this.correctBack(boxPlannerGrid, optionHandler, _elementId2);
3319
+ case 62:
3320
+ j++;
3321
+ _context.next = 57;
3322
+ break;
3323
+ case 65:
3324
+ i++;
3325
+ _context.next = 55;
3326
+ break;
3327
+ case 68:
3223
3328
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3224
- _context.next = 29;
3329
+ _context.next = 71;
3225
3330
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3226
- case 29:
3331
+ case 71:
3227
3332
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3228
3333
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3229
3334
  return _context.abrupt("return", resultMessage);
3230
- case 32:
3335
+ case 74:
3231
3336
  case "end":
3232
3337
  return _context.stop();
3233
3338
  }
@@ -3355,7 +3460,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3355
3460
  var cells = [];
3356
3461
  for (var i = 0; i < colCount; i++) {
3357
3462
  for (var j = 0; j < rowCount; j++) {
3358
- var _cell = {
3463
+ var _cell2 = {
3359
3464
  plannedElement: {
3360
3465
  basketId: newElement.getBasketId(),
3361
3466
  elementId: newElement.getElementId(),
@@ -3374,7 +3479,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3374
3479
  },
3375
3480
  index: new index.Vector2(startColIndex + i, startRowIndex + j)
3376
3481
  };
3377
- cells.push(_cell);
3482
+ cells.push(_cell2);
3378
3483
  }
3379
3484
  }
3380
3485
  return cells;
@@ -3439,7 +3544,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3439
3544
  key: "getGridColumnWidth",
3440
3545
  value: function getGridColumnWidth(x) {
3441
3546
  var frontGrid = this.generalPlanningState.grids[0].matrix;
3442
- for (var y = 0; x < frontGrid[y].length; x++) {
3547
+ for (var y = 0; y < frontGrid[y].length; y++) {
3443
3548
  var _plannedElement$size$, _plannedElement;
3444
3549
  var cell = frontGrid[x][y];
3445
3550
  if (cell) return (_plannedElement$size$ = (_plannedElement = cell.plannedElement) === null || _plannedElement === void 0 ? void 0 : _plannedElement.size.width) !== null && _plannedElement$size$ !== void 0 ? _plannedElement$size$ : 0;
@@ -3663,10 +3768,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3663
3768
  }
3664
3769
  for (var i = 0; i < backGrid.length; i++) {
3665
3770
  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) {
3771
+ var _cell3$plannedElement;
3772
+ var _cell3 = backGrid[i][j];
3773
+ var _elementId = (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3774
+ if (_cell3 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3670
3775
  var _element = this.getElementById(_elementId);
3671
3776
  allCheckedElementIds.push(_elementId);
3672
3777
  returnElements.push(_element);
@@ -3930,10 +4035,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3930
4035
  }
3931
4036
  } else {
3932
4037
  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) {
4038
+ var _cell4$plannedElement;
4039
+ var _cell4 = curGrid[index][i];
4040
+ var _elementId4 = _cell4 === null || _cell4 === void 0 || (_cell4$plannedElement = _cell4.plannedElement) === null || _cell4$plannedElement === void 0 ? void 0 : _cell4$plannedElement.elementId;
4041
+ if (_cell4 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
3937
4042
  allElementIds.push(_elementId4);
3938
4043
  allElements.push(this.plannerElements.get(_elementId4));
3939
4044
  }
@@ -4022,31 +4127,88 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4022
4127
  }, {
4023
4128
  key: "getNeighborElements",
4024
4129
  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;
4130
+ var _this = this,
4131
+ _curGrid$area$fromX,
4132
+ _downNeighbour$planne;
4133
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
4026
4134
  var res = this.getCellsInGridByElementId(elementId);
4027
4135
  var curGrid = res.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4028
4136
  var result = [];
4029
4137
  var plannedElement = res.cells[0].plannedElement;
4030
4138
  if (!plannedElement) return result;
4139
+ var currentRow = curGrid[plannedElement.area.fromX];
4140
+ var startHeight = 0;
4141
+ var endHeight = 0;
4142
+ for (var y = 0; y < currentRow.length;) {
4143
+ var cell = currentRow[y];
4144
+ if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000) / 1000;
4145
+ if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000) / 1000;
4146
+ y = cell.plannedElement.area.toY;
4147
+ }
4148
+ var neighbourSize = 0;
4149
+ var neighbours = [];
4031
4150
  switch (dir) {
4032
4151
  case 'RIGHT':
4033
4152
  // 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));
4153
+
4154
+ for (var x = plannedElement.area.toX; x < curGrid.length;) {
4155
+ var _neighbourRow$0$plann, _neighbourRow$0$plann2;
4156
+ var neighbourRow = curGrid[x];
4157
+ for (var _y = 0; _y < neighbourRow.length;) {
4158
+ var _cell5$plannedElement, _cell5$plannedElement2;
4159
+ var _cell5 = neighbourRow[_y];
4160
+ if (neighbours.includes(_cell5)) continue;
4161
+ if (clean && neighbourSize == startHeight) neighbours.push(_cell5);else if (!clean && neighbourSize >= startHeight && neighbourSize <= endHeight) neighbours.push(_cell5);
4162
+ neighbourSize = Math.round((neighbourSize + _cell5.plannedElement.size.height) * 1000) / 1000;
4163
+ _y = (_cell5$plannedElement = (_cell5$plannedElement2 = _cell5.plannedElement) === null || _cell5$plannedElement2 === void 0 ? void 0 : _cell5$plannedElement2.area.toY) !== null && _cell5$plannedElement !== void 0 ? _cell5$plannedElement : _y + 1;
4164
+ }
4165
+ neighbourSize = 0;
4166
+ x = (_neighbourRow$0$plann = (_neighbourRow$0$plann2 = neighbourRow[0].plannedElement) === null || _neighbourRow$0$plann2 === void 0 ? void 0 : _neighbourRow$0$plann2.area.toX) !== null && _neighbourRow$0$plann !== void 0 ? _neighbourRow$0$plann : x + 1;
4167
+ }
4168
+ neighbours.forEach(function (n) {
4169
+ return !result.find(function (r) {
4170
+ return r.ElementId == n.plannedElement.elementId;
4171
+ }) && result.push(_this.plannerElements.get(n.plannedElement.elementId));
4172
+ });
4037
4173
  break;
4038
4174
  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));
4175
+ for (var _x2 = plannedElement.area.fromX - 1; _x2 > 0;) {
4176
+ var _neighbourRow = curGrid[_x2];
4177
+ for (var _y2 = 0; _y2 < _neighbourRow.length;) {
4178
+ var _cell6$plannedElement, _cell6$plannedElement2;
4179
+ var _cell6 = _neighbourRow[_y2];
4180
+ if (neighbours.includes(_cell6)) continue;
4181
+ if (clean && neighbourSize == startHeight) neighbours.push(_cell6);else if (!clean && neighbourSize >= startHeight && neighbourSize <= endHeight) neighbours.push(_cell6);
4182
+ neighbourSize = Math.round((neighbourSize + _cell6.plannedElement.size.height) * 1000) / 1000;
4183
+ _y2 = (_cell6$plannedElement = (_cell6$plannedElement2 = _cell6.plannedElement) === null || _cell6$plannedElement2 === void 0 ? void 0 : _cell6$plannedElement2.area.toY) !== null && _cell6$plannedElement !== void 0 ? _cell6$plannedElement : _y2 + 1;
4184
+ }
4185
+ neighbourSize = 0;
4186
+ _x2 = _neighbourRow[0].plannedElement ? _neighbourRow[0].plannedElement.area.fromX - 1 : _x2 + 1;
4187
+ }
4188
+ neighbours.forEach(function (n) {
4189
+ return !result.find(function (r) {
4190
+ return r.ElementId == n.plannedElement.elementId;
4191
+ }) && result.push(_this.plannerElements.get(n.plannedElement.elementId));
4192
+ });
4042
4193
  break;
4043
4194
  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;
4046
- if (tElementId) result.push(this.plannerElements.get(tElementId));
4195
+ var topNeighbours = [];
4196
+ for (var _x3 = plannedElement.area.fromX; _x3 < plannedElement.area.toX;) {
4197
+ var _cell7 = curGrid[_x3][plannedElement.area.toY];
4198
+ if (!_cell7) break;
4199
+ topNeighbours.push(_cell7);
4200
+ if (clean) break;
4201
+ _x3 = _cell7.plannedElement.area.toX;
4202
+ }
4203
+ if (topNeighbours.length == 0) break;
4204
+ topNeighbours.forEach(function (topNeighbour) {
4205
+ var _plannedElement3;
4206
+ var tElementId = (_plannedElement3 = topNeighbour.plannedElement) === null || _plannedElement3 === void 0 ? void 0 : _plannedElement3.elementId;
4207
+ if (tElementId) result.push(_this.plannerElements.get(tElementId));
4208
+ });
4047
4209
  break;
4048
4210
  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];
4211
+ 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
4212
  var dElementId = downNeighbour === null || downNeighbour === void 0 || (_downNeighbour$planne = downNeighbour.plannedElement) === null || _downNeighbour$planne === void 0 ? void 0 : _downNeighbour$planne.elementId;
4051
4213
  if (dElementId) result.push(this.plannerElements.get(dElementId));
4052
4214
  break;
@@ -4116,12 +4278,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4116
4278
  var curHeight = 0;
4117
4279
  var row = frontGrid[x];
4118
4280
  for (var y = 0; y < row.length;) {
4119
- var _cell4, _cell$plannedElement$, _cell$plannedElement8;
4281
+ var _cell8, _cell$plannedElement$, _cell$plannedElement8;
4120
4282
  var cell = row[y];
4121
- var elementId = (_cell4 = cell) === null || _cell4 === void 0 || (_cell4 = _cell4.plannedElement) === null || _cell4 === void 0 ? void 0 : _cell4.elementId;
4283
+ var elementId = (_cell8 = cell) === null || _cell8 === void 0 || (_cell8 = _cell8.plannedElement) === null || _cell8 === void 0 ? void 0 : _cell8.elementId;
4122
4284
  if (elementId && cell && checkedElementIds.indexOf(elementId) == -1) {
4123
4285
  curHeight += this.plannerElements.get(elementId).getHeight();
4124
- if (x == 0 && y == 0) depth = this.plannerElements.get(elementId).getDepth();
4286
+ if (x == 0 && y == 0) depth = cell.plannedElement.size.depth;
4125
4287
  }
4126
4288
  y = (_cell$plannedElement$ = (_cell$plannedElement8 = cell.plannedElement) === null || _cell$plannedElement8 === void 0 ? void 0 : _cell$plannedElement8.area.toY) !== null && _cell$plannedElement$ !== void 0 ? _cell$plannedElement$ : y + 1;
4127
4289
  }
@@ -4148,9 +4310,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4148
4310
  var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4149
4311
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4150
4312
  var result = [];
4313
+ var grid = this.generalPlanningState.grids[0].matrix;
4151
4314
  var lastHeight = -1;
4152
- for (var x = 0; x < this.getColumnCount();) {
4153
- var row = this.generalPlanningState.grids[0].matrix[x];
4315
+ for (var x = 0; x < grid.length;) {
4316
+ var _grid$new_x;
4317
+ var row = grid[x];
4154
4318
  var height = 0;
4155
4319
  for (var y = 0; y < row.length;) {
4156
4320
  var element = row[y].plannedElement;
@@ -4159,12 +4323,20 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4159
4323
  }
4160
4324
  if (Math.round(height) == Math.round(lastHeight) || onBottom) {
4161
4325
  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)]);
4326
+ result[result.length - 1].push(grid[x][onBottom ? 0 : row.length - 1].plannedElement);
4327
+ } else if (grid[x][row.length - 1].plannedElement.area.fromX == x) {
4328
+ result.push([grid[x][onBottom ? 0 : row.length - 1].plannedElement]);
4165
4329
  }
4166
4330
  lastHeight = height;
4167
- x = row[row.length - 1].plannedElement ? row[row.length - 1].plannedElement.area.toX : x + 1;
4331
+ var new_x = row[row.length - 1].plannedElement.area.toX;
4332
+ var newHeight = (_grid$new_x = grid[new_x]) === null || _grid$new_x === void 0 ? void 0 : _grid$new_x.length;
4333
+
4334
+ // if the next row is fx. lower and doesn't have a clean cut here we need to skip more
4335
+ if (newHeight && newHeight != row.length) {
4336
+ var cell = grid[new_x][newHeight - 1];
4337
+ if (cell.index.x != cell.plannedElement.area.fromX) new_x = cell.plannedElement.area.toX;
4338
+ }
4339
+ x = new_x;
4168
4340
  }
4169
4341
  return result;
4170
4342
  }
@@ -4210,42 +4382,63 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4210
4382
  }, {
4211
4383
  key: "getAllElementsToFillUp",
4212
4384
  value: function getAllElementsToFillUp(elementId, dir) {
4213
- var _this = this;
4385
+ var _this2 = this;
4214
4386
  var curPos = this.getCellsInGridByElementId(elementId);
4215
4387
 
4216
4388
  //columns and rows are swapped don't ask me why
4217
4389
  var element = curPos.cells[0].plannedElement;
4218
4390
  var index = {
4219
- x: curPos.startColIndex,
4391
+ x: dir == 'LEFT' ? curPos.startColIndex : curPos.endColIndex - 1,
4220
4392
  y: curPos.startRowIndex
4221
4393
  };
4222
4394
  var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4223
4395
  var plannerIdsToFill = [];
4224
- var existingPlannerIds = [];
4225
- var _loop = function _loop(_y) {
4226
- var _curGrid$index$x$_y;
4227
- var elementToCopy = (_curGrid$index$x$_y = curGrid[index.x][_y]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
4228
- if (!elementToCopy) {
4229
- y = _y;
4230
- return 1;
4231
- } // break
4232
- var length = element.area.toX - element.area.fromX;
4233
- 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);
4237
- });
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);
4240
- _y = elementToCopy.area.toY;
4241
- y = _y;
4242
- };
4243
- for (var y = 0; y <= index.y;) {
4244
- if (_loop(y)) break;
4396
+ var length = element.area.toX - element.area.fromX;
4397
+ var d = dir == 'RIGHT' ? +length : -length;
4398
+ plannerIdsToFill.push(element.elementId);
4399
+ _objectSpread(_objectSpread({}, element.area), {}, {
4400
+ fromX: element.area.fromX + d,
4401
+ toX: element.area.toX + d
4402
+ });
4403
+ var _loop = function _loop(_y3) {
4404
+ var _curGrid$index$x$_y;
4405
+ var supportElement = (_curGrid$index$x$_y = curGrid[index.x][_y3]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
4406
+ if (!supportElement) {
4407
+ y = _y3;
4408
+ return 0;
4409
+ } // break
4410
+ var topElements = _this2.getNeighborElements(supportElement.elementId, 'TOP', false);
4411
+ var topWidth = 0;
4412
+ topElements.forEach(function (t) {
4413
+ return topWidth += t.Width;
4414
+ });
4415
+ var freeSpace = 0;
4416
+ if (supportElement.size.width > topWidth) freeSpace = supportElement.size.width - topWidth;
4417
+ var neighbours = _this2.getNeighborElements(supportElement.elementId, dir, false);
4418
+ neighbours.forEach(function (n) {
4419
+ if (_this2.getNeighborElements(n.ElementId, 'TOP').length > 0) return;
4420
+ freeSpace += n.Width;
4421
+ });
4422
+ if (freeSpace >= element.size.width) {
4423
+ y = _y3;
4424
+ return 0;
4425
+ } // break
4426
+ var missingWidth = element.size.width - freeSpace;
4427
+ while (missingWidth > 0) {
4428
+ plannerIdsToFill.push(supportElement.elementId);
4429
+ missingWidth = Math.round(missingWidth - supportElement.size.width);
4430
+ }
4431
+ _y3 = supportElement.area.fromY - 1;
4432
+ y = _y3;
4433
+ },
4434
+ _ret;
4435
+ for (var y = index.y - 1; y >= 0;) {
4436
+ _ret = _loop(y);
4437
+ if (_ret === 0) break;
4245
4438
  }
4246
4439
  // if there is nothing to fill we copy everyting
4247
4440
  return {
4248
- elements: plannerIdsToFill.length == 0 ? existingPlannerIds : plannerIdsToFill,
4441
+ elements: plannerIdsToFill.reverse(),
4249
4442
  backside: curPos.backside
4250
4443
  };
4251
4444
  }
@@ -4341,11 +4534,32 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4341
4534
  // [][] -> | [][][]
4342
4535
  // [][] | [][][]
4343
4536
  // [][][] | [][][][]
4344
- function moveGrid(plannedCells) {
4537
+ var moveGrid = function moveGrid(plannedCells) {
4345
4538
  var grid = new Array();
4346
4539
  var rightNeighbour = plannedCells.filter(function (c) {
4347
4540
  return c.index.x == element.area.toX;
4348
4541
  });
4542
+ var col = [];
4543
+ var support = [];
4544
+ var _loop2 = function _loop2() {
4545
+ var c = frontGrid[x][element.area.fromY];
4546
+ var s = frontGrid[x][element.area.fromY - 1];
4547
+ if (c && !col.find(function (_c) {
4548
+ return _c.plannedElement.elementId == c.plannedElement.elementId;
4549
+ })) col.push(frontGrid[x][element.area.fromY]);
4550
+ if (s && !support.find(function (_c) {
4551
+ return _c.plannedElement.elementId == s.plannedElement.elementId;
4552
+ })) support.push(frontGrid[x][element.area.fromY - 1]);
4553
+ };
4554
+ for (var x = 0; x < frontGrid.length; x++) {
4555
+ _loop2();
4556
+ }
4557
+ var sizeXTop = col.reduce(function (acc, n) {
4558
+ return acc += n.plannedElement.size.width;
4559
+ }, 0);
4560
+ var sizeXUnder = support ? support.reduce(function (acc, n) {
4561
+ return acc += n.plannedElement.size.width;
4562
+ }, 0) : 0;
4349
4563
  var rightNeighbourOfCopy = rightNeighbour.find(function (c) {
4350
4564
  return c.index.y == absoluteCopyIndex.y;
4351
4565
  });
@@ -4357,7 +4571,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4357
4571
  });
4358
4572
  plannedCells.forEach(function (cell) {
4359
4573
  // if we can't fill up (need to move the grid)
4360
- if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && (rightNeighbourOfCopy || rightNeighbour.length == 0) || !copyDirectionIsRight && (leftNeighbourOfCopy || leftNeighbour.length == 0) || absoluteCopyIndex.x == -1)) {
4574
+ if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && (rightNeighbourOfCopy || rightNeighbour.length == 0) && (
4575
+ // no free space or on the right height == move
4576
+ !(sizeXTop <= sizeXUnder - element.size.width) || cell.index.y >= element.area.fromY && cell.index.y < element.area.toY) || !copyDirectionIsRight && (leftNeighbourOfCopy || leftNeighbour.length == 0) || absoluteCopyIndex.x == -1)) {
4361
4577
  cell.index.x += widthCopyArea;
4362
4578
  cell.plannedElement.area.fromX += widthCopyArea;
4363
4579
  cell.plannedElement.area.toX += widthCopyArea;
@@ -4366,13 +4582,13 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4366
4582
  grid[cell.index.x][cell.index.y] = cell;
4367
4583
  });
4368
4584
  return grid;
4369
- }
4585
+ };
4370
4586
  frontGrid = moveGrid(this.getAllUsedCellsInGrid(false));
4371
4587
  for (var x = 0; x < widthCopyArea; x++) if (!frontGrid[absoluteCopyIndex.x + x]) frontGrid[absoluteCopyIndex.x + x] = [];
4372
4588
  this.generalPlanningState.grids[0].matrix = frontGrid;
4373
4589
  if (this.hasActiveBackside) {
4374
4590
  backGrid = moveGrid(this.getAllUsedCellsInGrid(true));
4375
- for (var _x2 = 0; _x2 < widthCopyArea; _x2++) if (!backGrid[absoluteCopyIndex.x + _x2]) backGrid[absoluteCopyIndex.x + _x2] = [];
4591
+ for (var _x4 = 0; _x4 < widthCopyArea; _x4++) if (!backGrid[absoluteCopyIndex.x + _x4]) backGrid[absoluteCopyIndex.x + _x4] = [];
4376
4592
  this.generalPlanningState.grids[1].matrix = backGrid;
4377
4593
  }
4378
4594
  }
@@ -4418,13 +4634,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4418
4634
  var elementData = this.plannerElements.get(elementId);
4419
4635
  var deletedCells = this.getCellsInGridByElementId(elementId);
4420
4636
  if (!elementData) return;
4421
- this.deleteElement(elementId, "STD");
4637
+ this.deleteElement(elementId, 'STD');
4422
4638
  var curGrid = this.generalPlanningState.grids[0].matrix;
4423
4639
  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
- ) {
4640
+ if (absoluteIndex.x < 0 && absoluteIndex.y == 0) {
4426
4641
  var dir = deletedCells.endColIndex >= absoluteIndex.x;
4427
- if (deletedCells.startColIndex >= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4642
+ if (deletedCells.startColIndex <= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4428
4643
  if (absoluteIndex.x < 0) absoluteIndex.x = 0;
4429
4644
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4430
4645
  var movedGrid = [];
@@ -4433,9 +4648,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4433
4648
  _.forEach(function (_, y) {
4434
4649
  var newX = x;
4435
4650
  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);
4651
+ if (y == absoluteIndex.y || absoluteIndex.y == 0) {
4652
+ newX += dir ? element.area.toX - element.area.fromX : 0;
4653
+ shiftX = dir ? element.area.toX - element.area.fromX : 0;
4439
4654
  }
4440
4655
  if (!movedGrid[newX]) movedGrid[newX] = [];
4441
4656
  var cellElem = curGrid[x][y].plannedElement;
@@ -4458,7 +4673,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4458
4673
  });
4459
4674
  curGrid = movedGrid;
4460
4675
  } else {
4461
- if (absoluteIndex.x > deletedCells.startColIndex && absoluteIndex.y == deletedCells.startRowIndex) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4676
+ if (absoluteIndex.x > deletedCells.startColIndex && deletedCells.startRowIndex == 0) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4462
4677
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4463
4678
  }
4464
4679
  for (var i = 0; i < cells.length; i++) {
@@ -4488,8 +4703,6 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4488
4703
  var backsideForCopy = copyIndex.z == -1 || curPos.backside == true;
4489
4704
  if (cellIndex.x < 0) cellIndex.x = 0; // can't plan to negative space see prepareGridForColCopy
4490
4705
  var curGrid = backsideForCopy ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4491
- // can't float need to dock
4492
- if (curGrid[cellIndex.x].length < cellIndex.y) cellIndex.y = curGrid[cellIndex.x].length;
4493
4706
  var cells = this.createNewCells(newElement, cellIndex.x, cellIndex.y, backsideForCopy);
4494
4707
  for (var i = 0; i < cells.length; i++) {
4495
4708
  if (!curGrid[cells[i].index.x]) curGrid[cells[i].index.x] = [];
@@ -4520,75 +4733,129 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4520
4733
  }, {
4521
4734
  key: "updateGridElementDimensions",
4522
4735
  value: function updateGridElementDimensions(elementId, elementData) {
4523
- var _this2 = this;
4524
- if (!elementData) return;
4736
+ var _this3 = this;
4737
+ if (!elementData) return false;
4738
+ var backup = structuredClone(this.generalPlanningState);
4525
4739
  var res = this.getCellsInGridByElementId(elementId);
4526
4740
  var scpe = this.gridSetupParams.forceSingleCellPerElement;
4741
+ var origin = {
4742
+ x: res.cells[0].plannedElement.area.toX,
4743
+ y: res.cells[0].plannedElement.area.toY
4744
+ };
4745
+ var diff = {
4746
+ x: 0,
4747
+ y: 0
4748
+ };
4527
4749
  res.cells.forEach(function (cell) {
4528
4750
  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
4751
+ var el = cell.plannedElement;
4752
+ el.size.width = elementData.width;
4753
+ el.size.height = elementData.height;
4754
+ el.size.depth = elementData.depth;
4755
+ el.area = {
4756
+ fromX: el.area.fromX,
4757
+ toX: !scpe ? Math.round(el.area.fromX + elementData.width / _this3.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4758
+ fromY: el.area.fromY,
4759
+ toY: !scpe ? Math.round(el.area.fromY + elementData.height / _this3.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4536
4760
  };
4761
+ diff.y = cell.plannedElement.area.toY - origin.y;
4762
+ diff.x = cell.plannedElement.area.toX - origin.x;
4537
4763
  });
4538
- if (scpe) return;
4764
+ var cell = res.cells[0];
4765
+ var grid = this.generalPlanningState.grids[0].matrix;
4766
+ // if the element got bigger we need to move all the above elements up
4767
+ // if it got wider we need to move all the elements to the right
4768
+ if (diff.y != 0) {
4769
+ for (var x = cell.plannedElement.area.fromX; x < cell.plannedElement.area.toX; x++) {
4770
+ var row = grid[x];
4771
+ if (!row) continue;
4772
+ for (var y = origin.y; y < row.length; y++) {
4773
+ var _cell = row[y];
4774
+ if (_cell.index.y != y || _cell.plannedElement.elementId == cell.plannedElement.elementId) continue; //already corrected
4775
+ _cell.index.y += diff.y;
4776
+ _cell.plannedElement.area.fromY += diff.y;
4777
+ _cell.plannedElement.area.toY += diff.y;
4778
+ }
4779
+ }
4780
+ } else if (diff.x != 0) {
4781
+ for (var _x5 = cell.plannedElement.area.fromX; _x5 < grid.length; _x5++) {
4782
+ for (var _y4 = cell.plannedElement.area.fromY; _y4 < cell.plannedElement.area.toY; _y4++) {
4783
+ var _cell9 = grid[_x5][_y4];
4784
+ if (!_cell9 || _cell9.plannedElement.elementId == elementId) continue; //already corrected
4785
+ _cell9.index.x += diff.x;
4786
+ _cell9.plannedElement.area.fromX += diff.x;
4787
+ _cell9.plannedElement.area.toX += diff.x;
4788
+ }
4789
+ }
4790
+ }
4791
+
4792
+ // after indices/areas are corrected rebuild the grid
4793
+ if (scpe) return false;
4794
+ res.cells[0].plannedElement;
4539
4795
  var newGrid = new Array();
4540
4796
  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
4797
+ var _loop3 = function _loop3() {
4798
+ var cell = plannedCells[idx];
4799
+ var area = cell.plannedElement.area;
4800
+ if (newGrid.find(function (x) {
4801
+ return x.find(function (y) {
4802
+ var _y$plannedElement3, _cell$plannedElement9;
4803
+ 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);
4804
+ });
4805
+ })) return 0; // continue
4806
+ for (var _x6 = area.fromX; _x6 < area.toX; _x6++) {
4807
+ for (var _y5 = area.fromY; _y5 < area.toY; _y5++) {
4808
+ if (!newGrid[_x6] && area.fromY == 0) newGrid[_x6] = [];
4809
+
4810
+ // we have a so called overhanging element not so nice, let's correct:
4811
+ var support = plannedCells.find(function (c) {
4812
+ return c.plannedElement.area.toX >= cell.plannedElement.area.toX && c.plannedElement.area.toY == cell.index.y;
4813
+ });
4814
+ if (!support && !newGrid[_x6]) {
4815
+ _this3.generalPlanningState = backup;
4816
+ return {
4817
+ v: true
4563
4818
  };
4564
- return 0; // continue
4565
4819
  }
4566
4820
 
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), {}, {
4821
+ // the element below got smaller
4822
+ if (!newGrid[_x6] && !support) {
4823
+ _this3.generalPlanningState = backup;
4824
+ return {
4825
+ v: true
4826
+ };
4827
+ } else if (!newGrid[_x6]) newGrid[_x6] = [];
4828
+ // when the element above starts early and goes over multiple ones
4829
+
4830
+ // regular case
4831
+ newGrid[_x6][_y5] = _objectSpread(_objectSpread({}, cell), {}, {
4570
4832
  index: {
4571
- x: x,
4572
- y: y
4833
+ x: _x6,
4834
+ y: _y5
4573
4835
  },
4574
4836
  plannedElement: _objectSpread(_objectSpread({}, cell.plannedElement), {}, {
4575
4837
  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)
4580
- }
4838
+ fromX: cell.plannedElement.area.fromX,
4839
+ toX: cell.plannedElement.area.fromX + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4840
+ fromY: cell.plannedElement.area.fromY,
4841
+ toY: cell.plannedElement.area.fromY + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4842
+ },
4843
+ size: _objectSpread(_objectSpread({}, cell.plannedElement.size), {}, {
4844
+ depth: elementData.depth
4845
+ })
4581
4846
  })
4582
4847
  });
4583
- },
4584
- _ret;
4585
- for (var y = 0; y < area.toY; y++) {
4586
- _ret = _loop2(y);
4587
- if (_ret === 0) continue;
4848
+ }
4588
4849
  }
4589
- }
4590
- });
4850
+ },
4851
+ _ret2;
4852
+ for (var idx = 0; idx < plannedCells.length; idx++) {
4853
+ _ret2 = _loop3();
4854
+ if (_ret2 === 0) continue;
4855
+ if (_ret2) return _ret2.v;
4856
+ }
4591
4857
  if (res.backside) this.generalPlanningState.grids[1].matrix = newGrid;else this.generalPlanningState.grids[0].matrix = newGrid;
4858
+ return false;
4592
4859
  }
4593
4860
 
4594
4861
  /**
@@ -4629,9 +4896,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4629
4896
  var topNeighbors = this.getNeighborElements(elementId, 'TOP');
4630
4897
  var rightNeighbors = this.getNeighborElements(elementId, 'RIGHT');
4631
4898
  var leftNeighbors = this.getNeighborElements(elementId, 'LEFT');
4899
+ var downNeighbors = this.getNeighborElements(elementId, 'DOWN');
4632
4900
  if (topNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[0]]);
4633
4901
  if (leftNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVL', [leftNeighbors[0]]);
4634
4902
  if (rightNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[0]]);
4903
+ if (downNeighbors.length > 0) PlannerHandler2D.dockingPointHandlerInst.tryDockElement(element, 'AVU', [downNeighbors[0]]);
4635
4904
  element.PosNr = posNr;
4636
4905
  posNr++;
4637
4906
  }
@@ -4639,9 +4908,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4639
4908
  }
4640
4909
  for (var i = 0; i < backGrid.length; i++) {
4641
4910
  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;
4911
+ var _cell10$plannedElemen;
4912
+ var _cell10 = backGrid[i][j];
4913
+ var _elementId6 = _cell10 === null || _cell10 === void 0 || (_cell10$plannedElemen = _cell10.plannedElement) === null || _cell10$plannedElemen === void 0 ? void 0 : _cell10$plannedElemen.elementId;
4645
4914
  if (_elementId6 && allCheckedElementIds.indexOf(_elementId6) == -1) {
4646
4915
  var _element2 = this.plannerElements.get(_elementId6);
4647
4916
  allCheckedElementIds.push(_elementId6);
@@ -4979,9 +5248,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4979
5248
  var targetRowIndex = endRowIndex + 1;
4980
5249
  var _copyPossible = false;
4981
5250
  // Iterate through columns within the element's width
4982
- for (var _x3 = endColIndex; _x3 >= startColIndex; _x3--) {
4983
- if (isValidCell(_x3, targetRowIndex)) {
4984
- copyStartColIndex = _x3;
5251
+ for (var _x7 = endColIndex; _x7 >= startColIndex; _x7--) {
5252
+ if (isValidCell(_x7, targetRowIndex)) {
5253
+ copyStartColIndex = _x7;
4985
5254
  _copyPossible = true;
4986
5255
  }
4987
5256
  }
@@ -4998,19 +5267,19 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4998
5267
  var _targetColIndex = endColIndex;
4999
5268
  var _copyPossible2 = false;
5000
5269
  // Iterate through rows within the element's height
5001
- for (var _y2 = startRowIndex; _y2 <= endRowIndex; _y2++) {
5002
- if (isValidCell(_targetColIndex, _y2)) {
5003
- copyStartRowIndex = _y2;
5270
+ for (var _y6 = startRowIndex; _y6 <= endRowIndex; _y6++) {
5271
+ if (isValidCell(_targetColIndex, _y6)) {
5272
+ copyStartRowIndex = _y6;
5004
5273
  _copyPossible2 = true;
5005
5274
  break;
5006
5275
  }
5007
5276
  }
5008
5277
  if (!_copyPossible2) return undefined;
5009
5278
  _copyPossible2 = false;
5010
- for (var _x4 = endColIndex; _x4 <= endColIndex + elementCells.colCount; _x4++) {
5011
- if (isValidCell(_x4, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x4, copyStartRowIndex - 1))) {
5279
+ for (var _x8 = endColIndex; _x8 <= endColIndex + elementCells.colCount; _x8++) {
5280
+ if (isValidCell(_x8, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x8, copyStartRowIndex - 1))) {
5012
5281
  //check also for overhang
5013
- copyEndColIndex = _x4;
5282
+ copyEndColIndex = _x8;
5014
5283
  _copyPossible2 = true;
5015
5284
  } else {
5016
5285
  break; //when you find one situation where it is not valid skip outside.
@@ -5050,16 +5319,16 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5050
5319
  } else {
5051
5320
  var distToOriginX = 0;
5052
5321
  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;
5322
+ var _plannedElement$size$3, _plannedElement4;
5323
+ 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
5324
  }
5056
5325
  if (cellsStartColIndex < 0) {
5057
5326
  distToOriginX = -element.getWidth();
5058
5327
  }
5059
5328
  var distToOriginY = 0;
5060
5329
  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;
5330
+ var _plannedElement$size$4, _plannedElement5;
5331
+ 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
5332
  }
5064
5333
  elementLocation.startIndexWorldPos = new index.Vector2(distToOriginX, distToOriginY);
5065
5334
  }
@@ -5106,7 +5375,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5106
5375
  var _ele2, _ele3;
5107
5376
  var movables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5108
5377
  var selectedElementId = arguments.length > 1 ? arguments[1] : undefined;
5109
- if (!movables) return this.generalPlanningState;
5378
+ if (!movables || !selectedElementId) return this.generalPlanningState;
5110
5379
  // fill to equal size
5111
5380
  var matrix = this.generalPlanningState.grids[0].matrix;
5112
5381
  var matrixWithMovables = [];
@@ -5153,6 +5422,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5153
5422
  isSupport = !!matrix.find(function (x, idx) {
5154
5423
  return idx >= ele.area.fromX && idx < ele.area.toX && matrix[idx].length > ele.area.toY;
5155
5424
  }); // can't move if there is anything above these cells
5425
+
5426
+ // if it has left and right neighbour and is on the bottom
5427
+ if (ele.area.fromX == 0 && this.getNeighborElements(ele.elementId, 'LEFT').length > 0 && this.getNeighborElements(ele.elementId, 'RIGHT').length > 0) isSupport = true;
5156
5428
  }
5157
5429
  if (isSupport) return this.generalPlanningState;
5158
5430
  for (var x = 0; x < maxWidth; x++) {
@@ -5173,7 +5445,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5173
5445
  if (x >= from && x < to) return;
5174
5446
  var row = matrixWithMovables[x];
5175
5447
  var len = row.length;
5176
- var _x = ele.fromX == 0 ? x : x - 1;
5448
+ var _x = ele.area.fromX == 0 ? x : x - 1;
5177
5449
  row[len] = {
5178
5450
  index: {
5179
5451
  x: _x,
@@ -5186,7 +5458,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5186
5458
  var len = matrixWithMovables.length;
5187
5459
  if (((_ele2 = ele) === null || _ele2 === void 0 ? void 0 : _ele2.area.toX) != matrix.length) matrixWithMovables[len] = [{
5188
5460
  index: {
5189
- x: ele.fromX == 0 ? len : len - 1,
5461
+ x: ele.area.fromX == 0 ? len : len - 1,
5190
5462
  y: 0
5191
5463
  }
5192
5464
  }];
@@ -5210,7 +5482,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5210
5482
  //system 4 useacse
5211
5483
  var totalColCount = matrix[0].length;
5212
5484
  var colSizes = Array(totalColCount).fill(-1);
5213
- var _loop3 = function _loop3(i) {
5485
+ var _loop4 = function _loop4(i) {
5214
5486
  var _matrix$find;
5215
5487
  var cell = (_matrix$find = matrix.find(function (row) {
5216
5488
  var _row$i$plannedElement, _row$i$plannedElement2;
@@ -5224,7 +5496,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5224
5496
  if (colSizes[i] === -1) return 1; // break
5225
5497
  };
5226
5498
  for (var i = 0; i < totalColCount; i++) {
5227
- if (_loop3(i)) break;
5499
+ if (_loop4(i)) break;
5228
5500
  }
5229
5501
  if (colSizes.includes(-1)) LOG$1.error(new Error('Column sizes are not set'));
5230
5502
  return colSizes;
@@ -5338,7 +5610,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5338
5610
  key: "initPlanner",
5339
5611
  value: function () {
5340
5612
  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;
5613
+ var planData, jsonElements, i, jsonElement, elementID, plannerElement, constructionRules, _constructionRules$co, _constructionRules$co2, data, highesElemId, _jsonElement, params;
5342
5614
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
5343
5615
  while (1) switch (_context.prev = _context.next) {
5344
5616
  case 0:
@@ -5368,7 +5640,20 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5368
5640
  if (this.nextElementId < elementID + 1) this.nextElementId = elementID + 1;
5369
5641
  this.set.setElementId(jsonElement.basketID, plannerElement.ElementId);
5370
5642
  if (!this.constructionRulesHandler.getConstructionRulesLoaded()) {
5371
- this.constructionRulesHandler.setConstructionRules(this.set.getConstructionRuleOfElementId(plannerElement.ElementId));
5643
+ constructionRules = this.set.getConstructionRuleOfElementId(plannerElement.ElementId);
5644
+ if (constructionRules) {
5645
+ this.boxPlannerGrid.GridSetupParams = {
5646
+ fixCellRasterHeight: 19.2,
5647
+ fixCellRasterWidth: 19.2,
5648
+ forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5649
+ forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5650
+ hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5651
+ maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5652
+ hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
5653
+ maxGridRasterWidth: constructionRules.constructionRules.maxGridRasterWidth
5654
+ };
5655
+ }
5656
+ this.constructionRulesHandler.setConstructionRules(constructionRules);
5372
5657
  }
5373
5658
  data = this.set.getPlannerData(plannerElement.ElementId);
5374
5659
  if (data) plannerElement.updatePlannerData(data);
@@ -5496,7 +5781,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5496
5781
  key: "addPlannerElement",
5497
5782
  value: (function () {
5498
5783
  var _addPlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(basketID, params) {
5499
- var plannerElement, data, constructionRules, _constructionRules$co, _constructionRules$co2;
5784
+ var plannerElement, data, constructionRules, _constructionRules$co3, _constructionRules$co4;
5500
5785
  return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
5501
5786
  while (1) switch (_context2.prev = _context2.next) {
5502
5787
  case 0:
@@ -5520,8 +5805,8 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5520
5805
  this.boxPlannerGrid.GridSetupParams = {
5521
5806
  fixCellRasterHeight: 19.2,
5522
5807
  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,
5808
+ forceFixCellRasterSize: (_constructionRules$co3 = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co3 !== void 0 ? _constructionRules$co3 : true,
5809
+ forceSingleCellPerElement: (_constructionRules$co4 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co4 !== void 0 ? _constructionRules$co4 : true,
5525
5810
  hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5526
5811
  maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5527
5812
  hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
@@ -5599,11 +5884,10 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5599
5884
  value: (function () {
5600
5885
  var _copyPlannerElement = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5(articleCopyRelation, copyInfo) {
5601
5886
  var _this = this;
5602
- var gridIsPrepared, plannerElementsToLoadSVG, that, i, cellPos, allDPs, j;
5887
+ var plannerElementsToLoadSVG, that, i, cellPos, allDPs, j;
5603
5888
  return _regeneratorRuntime__default["default"].wrap(function _callee5$(_context5) {
5604
5889
  while (1) switch (_context5.prev = _context5.next) {
5605
5890
  case 0:
5606
- gridIsPrepared = false;
5607
5891
  if (copyInfo) {
5608
5892
  _context5.next = 3;
5609
5893
  break;
@@ -5613,25 +5897,22 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5613
5897
  if (copyInfo.copyType == 'STD') copyInfo.targetElements = [];
5614
5898
  plannerElementsToLoadSVG = [];
5615
5899
  that = this;
5616
- articleCopyRelation.forEach(function (basketIDNewArticle, elementToCopyId) {
5900
+ articleCopyRelation.forEach(function (val) {
5617
5901
  var _copyInfo$targetEleme;
5618
- if (!gridIsPrepared) {
5619
- if (copyInfo.copyIndex.z == -1) {
5620
- if (!_this.boxPlannerGrid.getPlannerHasActiveBackside()) _this.boxPlannerGrid.prepareGridForBackSideCopy();
5621
- } else {
5622
- _this.boxPlannerGrid.prepareGridForColCopy(elementToCopyId, copyInfo.copyIndex);
5623
- }
5902
+ if (copyInfo.copyIndex.z == -1) {
5903
+ if (!_this.boxPlannerGrid.getPlannerHasActiveBackside()) _this.boxPlannerGrid.prepareGridForBackSideCopy();
5904
+ } else {
5905
+ _this.boxPlannerGrid.prepareGridForColCopy(val.key, copyInfo.copyIndex);
5624
5906
  }
5625
- gridIsPrepared = true;
5626
5907
 
5627
5908
  //Init Planner Element
5628
- var plannerElement = new index.PlannerElementData(_this.set.getSetId(), basketIDNewArticle, _this.nextElementId, DivaBoxPlanner.plannerType);
5909
+ var plannerElement = new index.PlannerElementData(_this.set.getSetId(), val.value, _this.nextElementId, DivaBoxPlanner.plannerType);
5629
5910
  _this.nextElementId++;
5630
- _this.set.setElementId(basketIDNewArticle, plannerElement.ElementId);
5911
+ _this.set.setElementId(val.value, plannerElement.ElementId);
5631
5912
  var data = _this.set.getPlannerData(plannerElement.ElementId);
5632
5913
  plannerElement.updatePlannerData(data);
5633
- _this.boxPlannerGrid.addElementAsCopy(elementToCopyId, plannerElement, copyInfo.copyIndex);
5634
- _this.constructionRulesHandler.onElementCopy(elementToCopyId, plannerElement.getElementId());
5914
+ _this.boxPlannerGrid.addElementAsCopy(val.key, plannerElement, copyInfo.copyIndex);
5915
+ _this.constructionRulesHandler.onElementCopy(val.key, plannerElement.getElementId());
5635
5916
  plannerElementsToLoadSVG.push(plannerElement);
5636
5917
  if (copyInfo.copyType == 'STD') (_copyInfo$targetEleme = copyInfo.targetElements) === null || _copyInfo$targetEleme === void 0 || _copyInfo$targetEleme.push(plannerElement.getElementId());
5637
5918
  });
@@ -5762,7 +6043,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5762
6043
  }
5763
6044
  }
5764
6045
  //remove duplicate
5765
- return Array.from(new Set(allElementsToCopy));
6046
+ return allElementsToCopy;
5766
6047
  }
5767
6048
 
5768
6049
  /**
@@ -5916,42 +6197,58 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5916
6197
  value: (function () {
5917
6198
  var _updatePlanner = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee7(changedOPT, targetElements) {
5918
6199
  var _this2 = this;
5919
- var message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
6200
+ var failed, message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
5920
6201
  return _regeneratorRuntime__default["default"].wrap(function _callee7$(_context7) {
5921
6202
  while (1) switch (_context7.prev = _context7.next) {
5922
6203
  case 0:
5923
6204
  LOG.debug('BoxPlanner - configurationHasChanged ' + changedOPT);
6205
+ failed = false;
5924
6206
  targetElements === null || targetElements === void 0 || targetElements.forEach(function (e) {
5925
6207
  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);
6208
+ failed = _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
6209
+ if (failed) return;
6210
+ });
6211
+ if (!failed) {
6212
+ _context7.next = 5;
6213
+ break;
6214
+ }
6215
+ return _context7.abrupt("return", {
6216
+ doDeleteBackGrid: false,
6217
+ elemIdsToDelete: [],
6218
+ viewMessageCodex: "resizeerror",
6219
+ failed: true
5927
6220
  });
6221
+ case 5:
6222
+ this.boxPlannerGrid.updateWorldPosOfElements();
5928
6223
  if (!(changedOPT && targetElements && targetElements.length > 0 && changedOPT['OPTELEMENT'] && (changedOPT['OPTELEMENT'] == 'OPVECK_I' || changedOPT['OPTELEMENT'] == 'OPVECK_A'))) {
5929
- _context7.next = 19;
6224
+ _context7.next = 23;
5930
6225
  break;
5931
6226
  }
5932
6227
  if (!(targetElements.length > 1)) {
5933
- _context7.next = 10;
6228
+ _context7.next = 14;
5934
6229
  break;
5935
6230
  }
5936
- _context7.next = 6;
6231
+ _context7.next = 10;
5937
6232
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements, true);
5938
- case 6:
6233
+ case 10:
5939
6234
  message = _context7.sent;
5940
6235
  if (!message) {
5941
- _context7.next = 9;
6236
+ _context7.next = 13;
5942
6237
  break;
5943
6238
  }
5944
6239
  return _context7.abrupt("return", {
5945
6240
  doDeleteBackGrid: false,
5946
6241
  elemIdsToDelete: [],
5947
- viewMessageCodex: message
6242
+ viewMessageCodex: message,
6243
+ failed: false
5948
6244
  });
5949
- case 9:
6245
+ case 13:
5950
6246
  return _context7.abrupt("return", {
5951
6247
  doDeleteBackGrid: false,
5952
- elemIdsToDelete: []
6248
+ elemIdsToDelete: [],
6249
+ failed: false
5953
6250
  });
5954
- case 10:
6251
+ case 14:
5955
6252
  //If the most bottom element has no neighbor right or left - copy element
5956
6253
  cellPos = this.boxPlannerGrid.getCellsInGridByElementId(targetElements[0]);
5957
6254
  elemToCheck = targetElements[0];
@@ -5959,7 +6256,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5959
6256
  elemToCheck = this.boxPlannerGrid.getPlannerElementAtGridPos(cellPos.startColIndex, 0, false).getElementId();
5960
6257
  }
5961
6258
  if (!(!this.boxPlannerGrid.getElementHasLeftElement(elemToCheck) || !this.boxPlannerGrid.getElementHasRightElement(elemToCheck))) {
5962
- _context7.next = 19;
6259
+ _context7.next = 23;
5963
6260
  break;
5964
6261
  }
5965
6262
  //Someone has changed Eck innen or aussen. If the current eselected Element has no neighbor left or right copy neighbor
@@ -5981,6 +6278,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5981
6278
  copyType: 'BoxPlanner_COL'
5982
6279
  });
5983
6280
  return _context7.abrupt("return", {
6281
+ failed: false,
5984
6282
  doDeleteBackGrid: false,
5985
6283
  elemIdsToDelete: [],
5986
6284
  elementIdToCopy: allElementsToCopy,
@@ -5989,17 +6287,17 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5989
6287
  changedOPT: changedOPT,
5990
6288
  targetElements: targetElements
5991
6289
  });
5992
- case 19:
6290
+ case 23:
5993
6291
  if (!(changedOPT && changedOPT['OPTDMOD'])) {
5994
- _context7.next = 34;
6292
+ _context7.next = 38;
5995
6293
  break;
5996
6294
  }
5997
6295
  _context7.t0 = changedOPT['OPTDMOD'];
5998
- _context7.next = _context7.t0 === 'OPVD_EIN' ? 23 : _context7.t0 === 'OPVD_AUS' ? 27 : 32;
6296
+ _context7.next = _context7.t0 === 'OPVD_EIN' ? 27 : _context7.t0 === 'OPVD_AUS' ? 31 : 36;
5999
6297
  break;
6000
- case 23:
6298
+ case 27:
6001
6299
  if (this.boxPlannerGrid.getPlannerHasActiveBackside()) {
6002
- _context7.next = 26;
6300
+ _context7.next = 30;
6003
6301
  break;
6004
6302
  }
6005
6303
  _allElementsToCopy = this.getPlannerElementsInfluencedByCopy(-1, {
@@ -6011,25 +6309,27 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6011
6309
  copyType: 'BoxPlanner_backside'
6012
6310
  });
6013
6311
  return _context7.abrupt("return", {
6312
+ failed: false,
6014
6313
  doDeleteBackGrid: false,
6015
6314
  elemIdsToDelete: [],
6016
6315
  elementIdToCopy: _allElementsToCopy,
6017
6316
  copyType: 'BoxPlanner_backside',
6018
6317
  changedOPT: changedOPT
6019
6318
  });
6020
- case 26:
6021
- return _context7.abrupt("break", 32);
6022
- case 27:
6319
+ case 30:
6320
+ return _context7.abrupt("break", 36);
6321
+ case 31:
6023
6322
  if (!this.boxPlannerGrid.getPlannerHasActiveBackside()) {
6024
- _context7.next = 31;
6323
+ _context7.next = 35;
6025
6324
  break;
6026
6325
  }
6027
6326
  allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6028
6327
  if (!(allElementsInBackGrid.length > 0)) {
6029
- _context7.next = 31;
6328
+ _context7.next = 35;
6030
6329
  break;
6031
6330
  }
6032
6331
  return _context7.abrupt("return", {
6332
+ failed: false,
6033
6333
  doDeleteBackGrid: true,
6034
6334
  elemIdsToDelete: allElementsInBackGrid.map(function (element) {
6035
6335
  return element.ElementId;
@@ -6037,23 +6337,24 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6037
6337
  deletionType: 'BoxPlanner_backside',
6038
6338
  changedOPT: changedOPT
6039
6339
  });
6040
- case 31:
6041
- return _context7.abrupt("break", 32);
6042
- case 32:
6043
- _context7.next = 48;
6340
+ case 35:
6341
+ return _context7.abrupt("break", 36);
6342
+ case 36:
6343
+ _context7.next = 52;
6044
6344
  break;
6045
- case 34:
6345
+ case 38:
6046
6346
  if (!(changedOPT && changedOPT['OPTFARBE_RAHMEN'] && changedOPT['OPTFARBE_RAHMEN'] == 'OPVSCHWARZ_MATT' && this.boxPlannerGrid.getPlannerHasActiveBackside())) {
6047
- _context7.next = 40;
6347
+ _context7.next = 44;
6048
6348
  break;
6049
6349
  }
6050
6350
  //If the double modul is active but the color is changed to black - disable double modul
6051
6351
  _allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6052
6352
  if (!(_allElementsInBackGrid.length > 0)) {
6053
- _context7.next = 38;
6353
+ _context7.next = 42;
6054
6354
  break;
6055
6355
  }
6056
6356
  return _context7.abrupt("return", {
6357
+ failed: false,
6057
6358
  doDeleteBackGrid: true,
6058
6359
  elemIdsToDelete: _allElementsInBackGrid.map(function (element) {
6059
6360
  return element.ElementId;
@@ -6063,34 +6364,37 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6063
6364
  targetElements: targetElements,
6064
6365
  viewMessageCodex: 'BOXPLAN_BLACKFRAME_INCOMPATIBLE_ELEMENT_WARNING'
6065
6366
  });
6066
- case 38:
6067
- _context7.next = 48;
6367
+ case 42:
6368
+ _context7.next = 52;
6068
6369
  break;
6069
- case 40:
6070
- _context7.next = 42;
6370
+ case 44:
6371
+ _context7.next = 46;
6071
6372
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements);
6072
- case 42:
6373
+ case 46:
6073
6374
  _message = _context7.sent;
6074
6375
  if (!_message) {
6075
- _context7.next = 47;
6376
+ _context7.next = 51;
6076
6377
  break;
6077
6378
  }
6078
6379
  return _context7.abrupt("return", {
6079
6380
  doDeleteBackGrid: false,
6080
6381
  elemIdsToDelete: [],
6081
- viewMessageCodex: _message
6382
+ viewMessageCodex: _message,
6383
+ failed: false
6082
6384
  });
6083
- case 47:
6385
+ case 51:
6084
6386
  return _context7.abrupt("return", {
6085
6387
  doDeleteBackGrid: false,
6086
- elemIdsToDelete: []
6388
+ elemIdsToDelete: [],
6389
+ failed: false
6087
6390
  });
6088
- case 48:
6391
+ case 52:
6089
6392
  return _context7.abrupt("return", {
6090
6393
  doDeleteBackGrid: false,
6091
- elemIdsToDelete: []
6394
+ elemIdsToDelete: [],
6395
+ failed: false
6092
6396
  });
6093
- case 49:
6397
+ case 53:
6094
6398
  case "end":
6095
6399
  return _context7.stop();
6096
6400
  }