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

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
@@ -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-13aa8d15.js';
6
+ import { c as Vector2, V as Vector3, P as PlannerElementData, B as BoundingBox } from './index-8f6efc60.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-bfed02e3.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-67320283.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);
@@ -2583,23 +2596,22 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2583
2596
  }
2584
2597
  }, {
2585
2598
  key: "validateDimensionRule",
2586
- value: function validateDimensionRule(dimRule, boxPlannerSize) {
2599
+ value: function validateDimensionRule(dimension, dimensionLimit, boxPlannerSize, higherLimit, lowerLimit) {
2587
2600
  var isOver = false;
2588
2601
  var isEqual = false;
2589
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimRule.dimensionLimit) isOver = true;
2590
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimRule.dimensionLimit) isEqual = true;
2591
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimRule.dimensionLimit) isOver = true;
2592
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimRule.dimensionLimit) isEqual = true;
2593
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2594
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2602
+ if (dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimensionLimit) isOver = true;
2603
+ if (dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimensionLimit) isEqual = true;
2604
+ if (dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimensionLimit) isOver = true;
2605
+ if (dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimensionLimit) isEqual = true;
2606
+ if (dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimensionLimit) isOver = true;
2607
+ if (dimension.toLowerCase() == 'depth' && boxPlannerSize.z == 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 higherLimit;
2597
2610
  } else if (isEqual) {
2598
- return true;
2611
+ return higherLimit;
2599
2612
  } else {
2600
- if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2613
+ return lowerLimit;
2601
2614
  }
2602
- return false;
2603
2615
  }
2604
2616
 
2605
2617
  /*
@@ -2610,42 +2622,38 @@ 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', false);
2640
+ var freeSpace = element.Width;
2641
+ rightNeighbours.forEach(function (n) {
2642
+ if (n.ElementId == changedElement.ElementId) return;
2643
+ var topElements = boxPlannerGrid.getNeighborElements(n.ElementId, 'TOP', false).filter(function (n) {
2644
+ return n.ElementId != changedElement.ElementId;
2645
+ });
2646
+ var topWidth = topElements.reduce(function (totalwidth, e) {
2647
+ return totalwidth += e.Width;
2648
+ }, 0);
2649
+ if (topWidth < n.Width) freeSpace += n.Width - topWidth;
2650
+ });
2651
+ if (Math.round(changedElement.Width) > Math.round(freeSpace)) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2652
+ } else {
2653
+ // over the changed one
2654
+ if (changedElement.Width < element.Width) _this2.setOptionValue(element.ElementId, opt, opv, optionHandler);
2655
+ }
2656
+ });
2649
2657
  }
2650
2658
  }, {
2651
2659
  key: "correctFoot",
@@ -2653,7 +2661,10 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2653
2661
  var _this3 = this;
2654
2662
  var elements = boxPlannerGrid.getAllElementsInFrontGrid();
2655
2663
  elements.forEach(function (e) {
2656
- if (boxPlannerGrid.getElementHasBottomElement(e.ElementId)) _this3.setOptionValue(e.ElementId, 'OPTFUSS_SYS', 'OPVOHNE', optionHandler);
2664
+ if (boxPlannerGrid.getElementHasBottomElement(e.ElementId)) {
2665
+ _this3.setOptionValue(e.ElementId, 'OPTFUSS_SYS', 'OPVOHNE', optionHandler);
2666
+ _this3.setOptionValue(e.ElementId, 'OPTPOSSIBILITY_FUSS_OHNE', 'OPVTRUE', optionHandler);
2667
+ }
2657
2668
  });
2658
2669
  }
2659
2670
 
@@ -2662,30 +2673,49 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2662
2673
  * */
2663
2674
  }, {
2664
2675
  key: "correctOptionsInfluencedByDimensions",
2665
- value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2676
+ value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs) {
2666
2677
  var _this4 = this;
2667
2678
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2668
2679
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2669
2680
  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
+ var setRule = function setRule(option, res) {
2682
+ if (changedOPTs) {
2683
+ var changedOpt = Object.entries(changedOPTs).find(function (_ref) {
2684
+ var _ref2 = _slicedToArray(_ref, 2),
2685
+ key = _ref2[0];
2686
+ _ref2[1];
2687
+ return key == option;
2688
+ });
2689
+ if (changedOpt) {
2690
+ allElements.forEach(function (element) {
2691
+ return _this4.setOptionValue(element.ElementId, changedOpt[0], changedOpt[1], optionHandler);
2681
2692
  });
2693
+ return;
2694
+ }
2695
+ }
2696
+ allElements.forEach(function (element) {
2697
+ return _this4.setOptionDoCustom(element.ElementId, option, res, optionHandler);
2698
+ });
2699
+ };
2700
+ var dim = this.constructionRules.optionsInfluencedByDimensions;
2701
+ dim.forEach(function (dimRule) {
2702
+ if (Array.isArray(dimRule)) {
2703
+ var res = dimRule.every(function (r) {
2704
+ return _this4.validateDimensionRule(r.dimension, r.dimensionLimit, boxPlannerSize, r.higherLimit, r.lowerLimit).toLowerCase() == 'doshow';
2682
2705
  });
2706
+ var t = dimRule[0];
2707
+ if (res) setRule(t.option, 'doShow');else setRule(t.option, 'doHide');
2683
2708
  } 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);
2688
- });
2709
+ var seriesDimRule = dimRule;
2710
+ var baseDimRule = dimRule;
2711
+ if (seriesDimRule.series) {
2712
+ var _dimRule = seriesDimRule.series.findLast(function (r) {
2713
+ return _this4.validateDimensionRule(r.dimension, r.dimensionLimit, boxPlannerSize, '1', '2') == '1';
2714
+ });
2715
+ if (_dimRule) setRule(seriesDimRule.option, _dimRule.value);
2716
+ } else {
2717
+ setRule(baseDimRule.option, _this4.validateDimensionRule(baseDimRule.option, baseDimRule.dimensionLimit, boxPlannerSize, baseDimRule.higherLimit, baseDimRule.lowerLimit));
2718
+ }
2689
2719
  }
2690
2720
  });
2691
2721
  }
@@ -2759,22 +2789,22 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2759
2789
 
2760
2790
  // default => set all to ohne
2761
2791
  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) {
2792
+ var _element$size$width;
2793
+ seriesWidth += (_element$size$width = element.size.width) !== null && _element$size$width !== void 0 ? _element$size$width : 0;
2794
+ boxPlannerGrid.getAllElementsDown(element.elementId).elements.forEach(function (e) {
2765
2795
  return _this5.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2766
2796
  });
2767
- _this5.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2797
+ _this5.setOptionValue(element.elementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2768
2798
  });
2769
2799
  var firstUncoveredElement = serie[0];
2770
- var _loop2 = function _loop2() {
2800
+ var _loop = function _loop() {
2771
2801
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2772
2802
  // is a clean element ending
2773
2803
  var helperWidth = 0;
2774
2804
  var isClean = false;
2775
2805
  serie.forEach(function (element) {
2776
- var _element$Width3;
2777
- helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2806
+ var _element$size$width2;
2807
+ helperWidth += (_element$size$width2 = element.size.width) !== null && _element$size$width2 !== void 0 ? _element$size$width2 : 0;
2778
2808
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2779
2809
  });
2780
2810
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2783,11 +2813,11 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2783
2813
  if (!opv) return {
2784
2814
  v: void 0
2785
2815
  };
2786
- _this5.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2816
+ _this5.setOptionValue(firstUncoveredElement.elementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2787
2817
  var helperWidth = 0;
2788
2818
  firstUncoveredElement = serie.find(function (e) {
2789
- var _e$Width;
2790
- helperWidth += (_e$Width = e.Width) !== null && _e$Width !== void 0 ? _e$Width : 0;
2819
+ var _e$size$width;
2820
+ helperWidth += (_e$size$width = e.size.width) !== null && _e$size$width !== void 0 ? _e$size$width : 0;
2791
2821
  if (helperWidth > opv.limit) return true;
2792
2822
  return false;
2793
2823
  });
@@ -2796,7 +2826,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2796
2826
  },
2797
2827
  _ret;
2798
2828
  while (seriesWidth != 0) {
2799
- _ret = _loop2();
2829
+ _ret = _loop();
2800
2830
  if (_ret) return _ret.v;
2801
2831
  }
2802
2832
  });
@@ -3123,7 +3153,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3123
3153
  value: function () {
3124
3154
  var _updateOptionLogicBoxPlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(boxPlannerGrid, changedOPTs, targetElements, forceResetCornerElements) {
3125
3155
  var _targetElements;
3126
- var startTime, resultMessage, optionHandler, allElements, i, _iterator, _step, coverPlateRule, j, doChangeRetailArticleNumbers;
3156
+ var startTime, resultMessage, optionHandler, allElements, i, j, _boxPlannerGrid$getPl2, elementId, _boxPlannerGrid$getPl3, _elementId, _iterator, _step, coverPlateRule, _boxPlannerGrid$getPl4, _elementId2, doChangeRetailArticleNumbers;
3127
3157
  return _regeneratorRuntime.wrap(function _callee$(_context) {
3128
3158
  while (1) switch (_context.prev = _context.next) {
3129
3159
  case 0:
@@ -3158,19 +3188,6 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3158
3188
  this.correctBottom(boxPlannerGrid, optionHandler, false);
3159
3189
  if (boxPlannerGrid.getPlannerHasActiveBackside()) this.correctBottom(boxPlannerGrid, optionHandler, true);
3160
3190
  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
3191
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
3175
3192
  for (j = 0; j < boxPlannerGrid.getRowCount(i, false); j++) {
3176
3193
  this.correctSimpleOpt(i, j, boxPlannerGrid, optionHandler, false);
@@ -3183,39 +3200,126 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3183
3200
  }
3184
3201
  }
3185
3202
  }
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
- }
3203
+ i = 0;
3204
+ case 17:
3205
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3206
+ _context.next = 31;
3207
+ break;
3191
3208
  }
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
- }
3209
+ j = 0;
3210
+ case 19:
3211
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3212
+ _context.next = 28;
3213
+ break;
3199
3214
  }
3215
+ elementId = (_boxPlannerGrid$getPl2 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl2 === void 0 ? void 0 : _boxPlannerGrid$getPl2.ElementId;
3216
+ if (elementId) {
3217
+ _context.next = 23;
3218
+ break;
3219
+ }
3220
+ return _context.abrupt("continue", 25);
3221
+ case 23:
3222
+ this.correctForceOptOfElement(elementId, boxPlannerGrid, optionHandler, false);
3223
+ this.correctNeighborCustomOLTs(elementId, boxPlannerGrid, optionHandler);
3224
+ case 25:
3225
+ j++;
3226
+ _context.next = 19;
3227
+ break;
3228
+ case 28:
3229
+ i++;
3230
+ _context.next = 17;
3231
+ break;
3232
+ case 31:
3233
+ if (!boxPlannerGrid.getPlannerHasActiveBackside()) {
3234
+ _context.next = 47;
3235
+ break;
3236
+ }
3237
+ i = boxPlannerGrid.getColumnCount() - 1;
3238
+ case 33:
3239
+ if (!(i >= 0)) {
3240
+ _context.next = 47;
3241
+ break;
3242
+ }
3243
+ j = 0;
3244
+ case 35:
3245
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3246
+ _context.next = 44;
3247
+ break;
3248
+ }
3249
+ _elementId = (_boxPlannerGrid$getPl3 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl3 === void 0 ? void 0 : _boxPlannerGrid$getPl3.ElementId;
3250
+ if (_elementId) {
3251
+ _context.next = 39;
3252
+ break;
3253
+ }
3254
+ return _context.abrupt("continue", 41);
3255
+ case 39:
3256
+ this.correctForceOptOfElement(_elementId, boxPlannerGrid, optionHandler, true);
3257
+ this.correctNeighborCustomOLTs(_elementId, boxPlannerGrid, optionHandler);
3258
+ case 41:
3259
+ j++;
3260
+ _context.next = 35;
3261
+ break;
3262
+ case 44:
3263
+ i--;
3264
+ _context.next = 33;
3265
+ break;
3266
+ case 47:
3200
3267
  this.correctFoot(boxPlannerGrid, optionHandler);
3201
3268
  this.correctLadder(boxPlannerGrid, optionHandler);
3202
- this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3269
+ this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler, changedOPTs);
3203
3270
  this.correctOverHangingElement((_targetElements = targetElements) === null || _targetElements === void 0 ? void 0 : _targetElements[0], boxPlannerGrid, optionHandler, changedOPTs);
3204
3271
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3205
3272
  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());
3273
+ if (this.constructionRules.coverPlateRule) {
3274
+ _iterator = _createForOfIteratorHelper$1(this.constructionRules.coverPlateRule);
3275
+ try {
3276
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3277
+ coverPlateRule = _step.value;
3278
+ this.correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler);
3279
+ }
3280
+ } catch (err) {
3281
+ _iterator.e(err);
3282
+ } finally {
3283
+ _iterator.f();
3209
3284
  }
3210
3285
  }
3286
+ i = 0;
3287
+ case 55:
3288
+ if (!(i < boxPlannerGrid.getColumnCount())) {
3289
+ _context.next = 68;
3290
+ break;
3291
+ }
3292
+ j = 0;
3293
+ case 57:
3294
+ if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3295
+ _context.next = 65;
3296
+ break;
3297
+ }
3298
+ _elementId2 = (_boxPlannerGrid$getPl4 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl4 === void 0 ? void 0 : _boxPlannerGrid$getPl4.getElementId();
3299
+ if (_elementId2) {
3300
+ _context.next = 61;
3301
+ break;
3302
+ }
3303
+ return _context.abrupt("continue", 62);
3304
+ case 61:
3305
+ this.correctBack(boxPlannerGrid, optionHandler, _elementId2);
3306
+ case 62:
3307
+ j++;
3308
+ _context.next = 57;
3309
+ break;
3310
+ case 65:
3311
+ i++;
3312
+ _context.next = 55;
3313
+ break;
3314
+ case 68:
3211
3315
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3212
- _context.next = 29;
3316
+ _context.next = 71;
3213
3317
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3214
- case 29:
3318
+ case 71:
3215
3319
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3216
3320
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3217
3321
  return _context.abrupt("return", resultMessage);
3218
- case 32:
3322
+ case 74:
3219
3323
  case "end":
3220
3324
  return _context.stop();
3221
3325
  }
@@ -3343,7 +3447,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3343
3447
  var cells = [];
3344
3448
  for (var i = 0; i < colCount; i++) {
3345
3449
  for (var j = 0; j < rowCount; j++) {
3346
- var _cell = {
3450
+ var _cell2 = {
3347
3451
  plannedElement: {
3348
3452
  basketId: newElement.getBasketId(),
3349
3453
  elementId: newElement.getElementId(),
@@ -3362,7 +3466,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3362
3466
  },
3363
3467
  index: new Vector2(startColIndex + i, startRowIndex + j)
3364
3468
  };
3365
- cells.push(_cell);
3469
+ cells.push(_cell2);
3366
3470
  }
3367
3471
  }
3368
3472
  return cells;
@@ -3427,7 +3531,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3427
3531
  key: "getGridColumnWidth",
3428
3532
  value: function getGridColumnWidth(x) {
3429
3533
  var frontGrid = this.generalPlanningState.grids[0].matrix;
3430
- for (var y = 0; x < frontGrid[y].length; x++) {
3534
+ for (var y = 0; y < frontGrid[y].length; y++) {
3431
3535
  var _plannedElement$size$, _plannedElement;
3432
3536
  var cell = frontGrid[x][y];
3433
3537
  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;
@@ -3651,10 +3755,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3651
3755
  }
3652
3756
  for (var i = 0; i < backGrid.length; i++) {
3653
3757
  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) {
3758
+ var _cell3$plannedElement;
3759
+ var _cell3 = backGrid[i][j];
3760
+ var _elementId = (_cell3$plannedElement = _cell3.plannedElement) === null || _cell3$plannedElement === void 0 ? void 0 : _cell3$plannedElement.elementId;
3761
+ if (_cell3 && _elementId && allCheckedElementIds.indexOf(_elementId) == -1) {
3658
3762
  var _element = this.getElementById(_elementId);
3659
3763
  allCheckedElementIds.push(_elementId);
3660
3764
  returnElements.push(_element);
@@ -3918,10 +4022,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3918
4022
  }
3919
4023
  } else {
3920
4024
  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) {
4025
+ var _cell4$plannedElement;
4026
+ var _cell4 = curGrid[index][i];
4027
+ var _elementId4 = _cell4 === null || _cell4 === void 0 || (_cell4$plannedElement = _cell4.plannedElement) === null || _cell4$plannedElement === void 0 ? void 0 : _cell4$plannedElement.elementId;
4028
+ if (_cell4 && _elementId4 && allElementIds.indexOf(_elementId4) == -1) {
3925
4029
  allElementIds.push(_elementId4);
3926
4030
  allElements.push(this.plannerElements.get(_elementId4));
3927
4031
  }
@@ -4010,31 +4114,88 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4010
4114
  }, {
4011
4115
  key: "getNeighborElements",
4012
4116
  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;
4117
+ var _this = this,
4118
+ _curGrid$area$fromX,
4119
+ _downNeighbour$planne;
4120
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
4014
4121
  var res = this.getCellsInGridByElementId(elementId);
4015
4122
  var curGrid = res.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4016
4123
  var result = [];
4017
4124
  var plannedElement = res.cells[0].plannedElement;
4018
4125
  if (!plannedElement) return result;
4126
+ var currentRow = curGrid[plannedElement.area.fromX];
4127
+ var startHeight = 0;
4128
+ var endHeight = 0;
4129
+ for (var y = 0; y < currentRow.length;) {
4130
+ var cell = currentRow[y];
4131
+ if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000) / 1000;
4132
+ if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000) / 1000;
4133
+ y = cell.plannedElement.area.toY;
4134
+ }
4135
+ var neighbourSize = 0;
4136
+ var neighbours = [];
4019
4137
  switch (dir) {
4020
4138
  case 'RIGHT':
4021
4139
  // 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));
4140
+
4141
+ for (var x = plannedElement.area.toX; x < curGrid.length;) {
4142
+ var _neighbourRow$0$plann, _neighbourRow$0$plann2;
4143
+ var neighbourRow = curGrid[x];
4144
+ for (var _y = 0; _y < neighbourRow.length;) {
4145
+ var _cell5$plannedElement, _cell5$plannedElement2;
4146
+ var _cell5 = neighbourRow[_y];
4147
+ if (neighbours.includes(_cell5)) continue;
4148
+ if (clean && neighbourSize == startHeight) neighbours.push(_cell5);else if (!clean && neighbourSize >= startHeight && neighbourSize <= endHeight) neighbours.push(_cell5);
4149
+ neighbourSize = Math.round((neighbourSize + _cell5.plannedElement.size.height) * 1000) / 1000;
4150
+ _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;
4151
+ }
4152
+ neighbourSize = 0;
4153
+ 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;
4154
+ }
4155
+ neighbours.forEach(function (n) {
4156
+ return !result.find(function (r) {
4157
+ return r.ElementId == n.plannedElement.elementId;
4158
+ }) && result.push(_this.plannerElements.get(n.plannedElement.elementId));
4159
+ });
4025
4160
  break;
4026
4161
  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));
4162
+ for (var _x2 = plannedElement.area.fromX - 1; _x2 > 0;) {
4163
+ var _neighbourRow = curGrid[_x2];
4164
+ for (var _y2 = 0; _y2 < _neighbourRow.length;) {
4165
+ var _cell6$plannedElement, _cell6$plannedElement2;
4166
+ var _cell6 = _neighbourRow[_y2];
4167
+ if (neighbours.includes(_cell6)) continue;
4168
+ if (clean && neighbourSize == startHeight) neighbours.push(_cell6);else if (!clean && neighbourSize >= startHeight && neighbourSize <= endHeight) neighbours.push(_cell6);
4169
+ neighbourSize = Math.round((neighbourSize + _cell6.plannedElement.size.height) * 1000) / 1000;
4170
+ _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;
4171
+ }
4172
+ neighbourSize = 0;
4173
+ _x2 = _neighbourRow[0].plannedElement ? _neighbourRow[0].plannedElement.area.fromX - 1 : _x2 + 1;
4174
+ }
4175
+ neighbours.forEach(function (n) {
4176
+ return !result.find(function (r) {
4177
+ return r.ElementId == n.plannedElement.elementId;
4178
+ }) && result.push(_this.plannerElements.get(n.plannedElement.elementId));
4179
+ });
4030
4180
  break;
4031
4181
  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;
4034
- if (tElementId) result.push(this.plannerElements.get(tElementId));
4182
+ var topNeighbours = [];
4183
+ for (var _x3 = plannedElement.area.fromX; _x3 < plannedElement.area.toX;) {
4184
+ var _cell7 = curGrid[_x3][plannedElement.area.toY];
4185
+ if (!_cell7) break;
4186
+ topNeighbours.push(_cell7);
4187
+ if (clean) break;
4188
+ _x3 = _cell7.plannedElement.area.toX;
4189
+ }
4190
+ if (topNeighbours.length == 0) break;
4191
+ topNeighbours.forEach(function (topNeighbour) {
4192
+ var _plannedElement3;
4193
+ var tElementId = (_plannedElement3 = topNeighbour.plannedElement) === null || _plannedElement3 === void 0 ? void 0 : _plannedElement3.elementId;
4194
+ if (tElementId) result.push(_this.plannerElements.get(tElementId));
4195
+ });
4035
4196
  break;
4036
4197
  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];
4198
+ 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
4199
  var dElementId = downNeighbour === null || downNeighbour === void 0 || (_downNeighbour$planne = downNeighbour.plannedElement) === null || _downNeighbour$planne === void 0 ? void 0 : _downNeighbour$planne.elementId;
4039
4200
  if (dElementId) result.push(this.plannerElements.get(dElementId));
4040
4201
  break;
@@ -4104,12 +4265,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4104
4265
  var curHeight = 0;
4105
4266
  var row = frontGrid[x];
4106
4267
  for (var y = 0; y < row.length;) {
4107
- var _cell4, _cell$plannedElement$, _cell$plannedElement8;
4268
+ var _cell8, _cell$plannedElement$, _cell$plannedElement8;
4108
4269
  var cell = row[y];
4109
- var elementId = (_cell4 = cell) === null || _cell4 === void 0 || (_cell4 = _cell4.plannedElement) === null || _cell4 === void 0 ? void 0 : _cell4.elementId;
4270
+ var elementId = (_cell8 = cell) === null || _cell8 === void 0 || (_cell8 = _cell8.plannedElement) === null || _cell8 === void 0 ? void 0 : _cell8.elementId;
4110
4271
  if (elementId && cell && checkedElementIds.indexOf(elementId) == -1) {
4111
4272
  curHeight += this.plannerElements.get(elementId).getHeight();
4112
- if (x == 0 && y == 0) depth = this.plannerElements.get(elementId).getDepth();
4273
+ if (x == 0 && y == 0) depth = cell.plannedElement.size.depth;
4113
4274
  }
4114
4275
  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;
4115
4276
  }
@@ -4136,9 +4297,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4136
4297
  var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4137
4298
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4138
4299
  var result = [];
4300
+ var grid = this.generalPlanningState.grids[0].matrix;
4139
4301
  var lastHeight = -1;
4140
- for (var x = 0; x < this.getColumnCount();) {
4141
- var row = this.generalPlanningState.grids[0].matrix[x];
4302
+ for (var x = 0; x < grid.length;) {
4303
+ var _grid$new_x;
4304
+ var row = grid[x];
4142
4305
  var height = 0;
4143
4306
  for (var y = 0; y < row.length;) {
4144
4307
  var element = row[y].plannedElement;
@@ -4147,12 +4310,20 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4147
4310
  }
4148
4311
  if (Math.round(height) == Math.round(lastHeight) || onBottom) {
4149
4312
  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)]);
4313
+ result[result.length - 1].push(grid[x][onBottom ? 0 : row.length - 1].plannedElement);
4314
+ } else if (grid[x][row.length - 1].plannedElement.area.fromX == x) {
4315
+ result.push([grid[x][onBottom ? 0 : row.length - 1].plannedElement]);
4153
4316
  }
4154
4317
  lastHeight = height;
4155
- x = row[row.length - 1].plannedElement ? row[row.length - 1].plannedElement.area.toX : x + 1;
4318
+ var new_x = row[row.length - 1].plannedElement.area.toX;
4319
+ var newHeight = (_grid$new_x = grid[new_x]) === null || _grid$new_x === void 0 ? void 0 : _grid$new_x.length;
4320
+
4321
+ // if the next row is fx. lower and doesn't have a clean cut here we need to skip more
4322
+ if (newHeight && newHeight != row.length) {
4323
+ var cell = grid[new_x][newHeight - 1];
4324
+ if (cell.index.x != cell.plannedElement.area.fromX) new_x = cell.plannedElement.area.toX;
4325
+ }
4326
+ x = new_x;
4156
4327
  }
4157
4328
  return result;
4158
4329
  }
@@ -4198,42 +4369,63 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4198
4369
  }, {
4199
4370
  key: "getAllElementsToFillUp",
4200
4371
  value: function getAllElementsToFillUp(elementId, dir) {
4201
- var _this = this;
4372
+ var _this2 = this;
4202
4373
  var curPos = this.getCellsInGridByElementId(elementId);
4203
4374
 
4204
4375
  //columns and rows are swapped don't ask me why
4205
4376
  var element = curPos.cells[0].plannedElement;
4206
4377
  var index = {
4207
- x: curPos.startColIndex,
4378
+ x: dir == 'LEFT' ? curPos.startColIndex : curPos.endColIndex - 1,
4208
4379
  y: curPos.startRowIndex
4209
4380
  };
4210
4381
  var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4211
4382
  var plannerIdsToFill = [];
4212
- var existingPlannerIds = [];
4213
- var _loop = function _loop(_y) {
4214
- var _curGrid$index$x$_y;
4215
- var elementToCopy = (_curGrid$index$x$_y = curGrid[index.x][_y]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
4216
- if (!elementToCopy) {
4217
- y = _y;
4218
- return 1;
4219
- } // break
4220
- var length = element.area.toX - element.area.fromX;
4221
- 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);
4225
- });
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);
4228
- _y = elementToCopy.area.toY;
4229
- y = _y;
4230
- };
4231
- for (var y = 0; y <= index.y;) {
4232
- if (_loop(y)) break;
4383
+ var length = element.area.toX - element.area.fromX;
4384
+ var d = dir == 'RIGHT' ? +length : -length;
4385
+ plannerIdsToFill.push(element.elementId);
4386
+ _objectSpread(_objectSpread({}, element.area), {}, {
4387
+ fromX: element.area.fromX + d,
4388
+ toX: element.area.toX + d
4389
+ });
4390
+ var _loop = function _loop(_y3) {
4391
+ var _curGrid$index$x$_y;
4392
+ var supportElement = (_curGrid$index$x$_y = curGrid[index.x][_y3]) === null || _curGrid$index$x$_y === void 0 ? void 0 : _curGrid$index$x$_y.plannedElement;
4393
+ if (!supportElement) {
4394
+ y = _y3;
4395
+ return 0;
4396
+ } // break
4397
+ var topElements = _this2.getNeighborElements(supportElement.elementId, 'TOP', false);
4398
+ var topWidth = 0;
4399
+ topElements.forEach(function (t) {
4400
+ return topWidth += t.Width;
4401
+ });
4402
+ var freeSpace = 0;
4403
+ if (supportElement.size.width > topWidth) freeSpace = supportElement.size.width - topWidth;
4404
+ var neighbours = _this2.getNeighborElements(supportElement.elementId, dir, false);
4405
+ neighbours.forEach(function (n) {
4406
+ if (_this2.getNeighborElements(n.ElementId, 'TOP').length > 0) return;
4407
+ freeSpace += n.Width;
4408
+ });
4409
+ if (freeSpace >= element.size.width) {
4410
+ y = _y3;
4411
+ return 0;
4412
+ } // break
4413
+ var missingWidth = element.size.width - freeSpace;
4414
+ while (missingWidth > 0) {
4415
+ plannerIdsToFill.push(supportElement.elementId);
4416
+ missingWidth = Math.round(missingWidth - supportElement.size.width);
4417
+ }
4418
+ _y3 = supportElement.area.fromY - 1;
4419
+ y = _y3;
4420
+ },
4421
+ _ret;
4422
+ for (var y = index.y - 1; y >= 0;) {
4423
+ _ret = _loop(y);
4424
+ if (_ret === 0) break;
4233
4425
  }
4234
4426
  // if there is nothing to fill we copy everyting
4235
4427
  return {
4236
- elements: plannerIdsToFill.length == 0 ? existingPlannerIds : plannerIdsToFill,
4428
+ elements: plannerIdsToFill.reverse(),
4237
4429
  backside: curPos.backside
4238
4430
  };
4239
4431
  }
@@ -4329,11 +4521,32 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4329
4521
  // [][] -> | [][][]
4330
4522
  // [][] | [][][]
4331
4523
  // [][][] | [][][][]
4332
- function moveGrid(plannedCells) {
4524
+ var moveGrid = function moveGrid(plannedCells) {
4333
4525
  var grid = new Array();
4334
4526
  var rightNeighbour = plannedCells.filter(function (c) {
4335
4527
  return c.index.x == element.area.toX;
4336
4528
  });
4529
+ var col = [];
4530
+ var support = [];
4531
+ var _loop2 = function _loop2() {
4532
+ var c = frontGrid[x][element.area.fromY];
4533
+ var s = frontGrid[x][element.area.fromY - 1];
4534
+ if (c && !col.find(function (_c) {
4535
+ return _c.plannedElement.elementId == c.plannedElement.elementId;
4536
+ })) col.push(frontGrid[x][element.area.fromY]);
4537
+ if (s && !support.find(function (_c) {
4538
+ return _c.plannedElement.elementId == s.plannedElement.elementId;
4539
+ })) support.push(frontGrid[x][element.area.fromY - 1]);
4540
+ };
4541
+ for (var x = 0; x < frontGrid.length; x++) {
4542
+ _loop2();
4543
+ }
4544
+ var sizeXTop = col.reduce(function (acc, n) {
4545
+ return acc += n.plannedElement.size.width;
4546
+ }, 0);
4547
+ var sizeXUnder = support ? support.reduce(function (acc, n) {
4548
+ return acc += n.plannedElement.size.width;
4549
+ }, 0) : 0;
4337
4550
  var rightNeighbourOfCopy = rightNeighbour.find(function (c) {
4338
4551
  return c.index.y == absoluteCopyIndex.y;
4339
4552
  });
@@ -4345,7 +4558,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4345
4558
  });
4346
4559
  plannedCells.forEach(function (cell) {
4347
4560
  // if we can't fill up (need to move the grid)
4348
- if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && (rightNeighbourOfCopy || rightNeighbour.length == 0) || !copyDirectionIsRight && (leftNeighbourOfCopy || leftNeighbour.length == 0) || absoluteCopyIndex.x == -1)) {
4561
+ if (cell.index.x >= absoluteCopyIndex.x && (copyDirectionIsRight && (rightNeighbourOfCopy || rightNeighbour.length == 0) && (
4562
+ // no free space or on the right height == move
4563
+ !(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)) {
4349
4564
  cell.index.x += widthCopyArea;
4350
4565
  cell.plannedElement.area.fromX += widthCopyArea;
4351
4566
  cell.plannedElement.area.toX += widthCopyArea;
@@ -4354,13 +4569,13 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4354
4569
  grid[cell.index.x][cell.index.y] = cell;
4355
4570
  });
4356
4571
  return grid;
4357
- }
4572
+ };
4358
4573
  frontGrid = moveGrid(this.getAllUsedCellsInGrid(false));
4359
4574
  for (var x = 0; x < widthCopyArea; x++) if (!frontGrid[absoluteCopyIndex.x + x]) frontGrid[absoluteCopyIndex.x + x] = [];
4360
4575
  this.generalPlanningState.grids[0].matrix = frontGrid;
4361
4576
  if (this.hasActiveBackside) {
4362
4577
  backGrid = moveGrid(this.getAllUsedCellsInGrid(true));
4363
- for (var _x2 = 0; _x2 < widthCopyArea; _x2++) if (!backGrid[absoluteCopyIndex.x + _x2]) backGrid[absoluteCopyIndex.x + _x2] = [];
4578
+ for (var _x4 = 0; _x4 < widthCopyArea; _x4++) if (!backGrid[absoluteCopyIndex.x + _x4]) backGrid[absoluteCopyIndex.x + _x4] = [];
4364
4579
  this.generalPlanningState.grids[1].matrix = backGrid;
4365
4580
  }
4366
4581
  }
@@ -4406,13 +4621,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4406
4621
  var elementData = this.plannerElements.get(elementId);
4407
4622
  var deletedCells = this.getCellsInGridByElementId(elementId);
4408
4623
  if (!elementData) return;
4409
- this.deleteElement(elementId, "STD");
4624
+ this.deleteElement(elementId, 'STD');
4410
4625
  var curGrid = this.generalPlanningState.grids[0].matrix;
4411
4626
  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
- ) {
4627
+ if (absoluteIndex.x < 0 && absoluteIndex.y == 0) {
4414
4628
  var dir = deletedCells.endColIndex >= absoluteIndex.x;
4415
- if (deletedCells.startColIndex >= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4629
+ if (deletedCells.startColIndex <= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4416
4630
  if (absoluteIndex.x < 0) absoluteIndex.x = 0;
4417
4631
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4418
4632
  var movedGrid = [];
@@ -4421,9 +4635,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4421
4635
  _.forEach(function (_, y) {
4422
4636
  var newX = x;
4423
4637
  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);
4638
+ if (y == absoluteIndex.y || absoluteIndex.y == 0) {
4639
+ newX += dir ? element.area.toX - element.area.fromX : 0;
4640
+ shiftX = dir ? element.area.toX - element.area.fromX : 0;
4427
4641
  }
4428
4642
  if (!movedGrid[newX]) movedGrid[newX] = [];
4429
4643
  var cellElem = curGrid[x][y].plannedElement;
@@ -4446,7 +4660,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4446
4660
  });
4447
4661
  curGrid = movedGrid;
4448
4662
  } else {
4449
- if (absoluteIndex.x > deletedCells.startColIndex && absoluteIndex.y == deletedCells.startRowIndex) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4663
+ if (absoluteIndex.x > deletedCells.startColIndex && deletedCells.startRowIndex == 0) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4450
4664
  cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4451
4665
  }
4452
4666
  for (var i = 0; i < cells.length; i++) {
@@ -4476,8 +4690,6 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4476
4690
  var backsideForCopy = copyIndex.z == -1 || curPos.backside == true;
4477
4691
  if (cellIndex.x < 0) cellIndex.x = 0; // can't plan to negative space see prepareGridForColCopy
4478
4692
  var curGrid = backsideForCopy ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4479
- // can't float need to dock
4480
- if (curGrid[cellIndex.x].length < cellIndex.y) cellIndex.y = curGrid[cellIndex.x].length;
4481
4693
  var cells = this.createNewCells(newElement, cellIndex.x, cellIndex.y, backsideForCopy);
4482
4694
  for (var i = 0; i < cells.length; i++) {
4483
4695
  if (!curGrid[cells[i].index.x]) curGrid[cells[i].index.x] = [];
@@ -4508,75 +4720,129 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4508
4720
  }, {
4509
4721
  key: "updateGridElementDimensions",
4510
4722
  value: function updateGridElementDimensions(elementId, elementData) {
4511
- var _this2 = this;
4512
- if (!elementData) return;
4723
+ var _this3 = this;
4724
+ if (!elementData) return false;
4725
+ var backup = structuredClone(this.generalPlanningState);
4513
4726
  var res = this.getCellsInGridByElementId(elementId);
4514
4727
  var scpe = this.gridSetupParams.forceSingleCellPerElement;
4728
+ var origin = {
4729
+ x: res.cells[0].plannedElement.area.toX,
4730
+ y: res.cells[0].plannedElement.area.toY
4731
+ };
4732
+ var diff = {
4733
+ x: 0,
4734
+ y: 0
4735
+ };
4515
4736
  res.cells.forEach(function (cell) {
4516
4737
  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
4738
+ var el = cell.plannedElement;
4739
+ el.size.width = elementData.width;
4740
+ el.size.height = elementData.height;
4741
+ el.size.depth = elementData.depth;
4742
+ el.area = {
4743
+ fromX: el.area.fromX,
4744
+ toX: !scpe ? Math.round(el.area.fromX + elementData.width / _this3.gridSetupParams.fixCellRasterWidth) : cell.index.x + 1,
4745
+ fromY: el.area.fromY,
4746
+ toY: !scpe ? Math.round(el.area.fromY + elementData.height / _this3.gridSetupParams.fixCellRasterHeight) : cell.index.y + 1
4524
4747
  };
4748
+ diff.y = cell.plannedElement.area.toY - origin.y;
4749
+ diff.x = cell.plannedElement.area.toX - origin.x;
4525
4750
  });
4526
- if (scpe) return;
4751
+ var cell = res.cells[0];
4752
+ var grid = this.generalPlanningState.grids[0].matrix;
4753
+ // if the element got bigger we need to move all the above elements up
4754
+ // if it got wider we need to move all the elements to the right
4755
+ if (diff.y != 0) {
4756
+ for (var x = cell.plannedElement.area.fromX; x < cell.plannedElement.area.toX; x++) {
4757
+ var row = grid[x];
4758
+ if (!row) continue;
4759
+ for (var y = origin.y; y < row.length; y++) {
4760
+ var _cell = row[y];
4761
+ if (_cell.index.y != y || _cell.plannedElement.elementId == cell.plannedElement.elementId) continue; //already corrected
4762
+ _cell.index.y += diff.y;
4763
+ _cell.plannedElement.area.fromY += diff.y;
4764
+ _cell.plannedElement.area.toY += diff.y;
4765
+ }
4766
+ }
4767
+ } else if (diff.x != 0) {
4768
+ for (var _x5 = cell.plannedElement.area.fromX; _x5 < grid.length; _x5++) {
4769
+ for (var _y4 = cell.plannedElement.area.fromY; _y4 < cell.plannedElement.area.toY; _y4++) {
4770
+ var _cell9 = grid[_x5][_y4];
4771
+ if (!_cell9 || _cell9.plannedElement.elementId == elementId) continue; //already corrected
4772
+ _cell9.index.x += diff.x;
4773
+ _cell9.plannedElement.area.fromX += diff.x;
4774
+ _cell9.plannedElement.area.toX += diff.x;
4775
+ }
4776
+ }
4777
+ }
4778
+
4779
+ // after indices/areas are corrected rebuild the grid
4780
+ if (scpe) return false;
4781
+ res.cells[0].plannedElement;
4527
4782
  var newGrid = new Array();
4528
4783
  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
4784
+ var _loop3 = function _loop3() {
4785
+ var cell = plannedCells[idx];
4786
+ var area = cell.plannedElement.area;
4787
+ if (newGrid.find(function (x) {
4788
+ return x.find(function (y) {
4789
+ var _y$plannedElement3, _cell$plannedElement9;
4790
+ 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);
4791
+ });
4792
+ })) return 0; // continue
4793
+ for (var _x6 = area.fromX; _x6 < area.toX; _x6++) {
4794
+ for (var _y5 = area.fromY; _y5 < area.toY; _y5++) {
4795
+ if (!newGrid[_x6] && area.fromY == 0) newGrid[_x6] = [];
4796
+
4797
+ // we have a so called overhanging element not so nice, let's correct:
4798
+ var support = plannedCells.find(function (c) {
4799
+ return c.plannedElement.area.toX >= cell.plannedElement.area.toX && c.plannedElement.area.toY == cell.index.y;
4800
+ });
4801
+ if (!support && !newGrid[_x6]) {
4802
+ _this3.generalPlanningState = backup;
4803
+ return {
4804
+ v: true
4551
4805
  };
4552
- return 0; // continue
4553
4806
  }
4554
4807
 
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), {}, {
4808
+ // the element below got smaller
4809
+ if (!newGrid[_x6] && !support) {
4810
+ _this3.generalPlanningState = backup;
4811
+ return {
4812
+ v: true
4813
+ };
4814
+ } else if (!newGrid[_x6]) newGrid[_x6] = [];
4815
+ // when the element above starts early and goes over multiple ones
4816
+
4817
+ // regular case
4818
+ newGrid[_x6][_y5] = _objectSpread(_objectSpread({}, cell), {}, {
4558
4819
  index: {
4559
- x: x,
4560
- y: y
4820
+ x: _x6,
4821
+ y: _y5
4561
4822
  },
4562
4823
  plannedElement: _objectSpread(_objectSpread({}, cell.plannedElement), {}, {
4563
4824
  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)
4568
- }
4825
+ fromX: cell.plannedElement.area.fromX,
4826
+ toX: cell.plannedElement.area.fromX + (cell.plannedElement.area.toX - cell.plannedElement.area.fromX),
4827
+ fromY: cell.plannedElement.area.fromY,
4828
+ toY: cell.plannedElement.area.fromY + (cell.plannedElement.area.toY - cell.plannedElement.area.fromY)
4829
+ },
4830
+ size: _objectSpread(_objectSpread({}, cell.plannedElement.size), {}, {
4831
+ depth: elementData.depth
4832
+ })
4569
4833
  })
4570
4834
  });
4571
- },
4572
- _ret;
4573
- for (var y = 0; y < area.toY; y++) {
4574
- _ret = _loop2(y);
4575
- if (_ret === 0) continue;
4835
+ }
4576
4836
  }
4577
- }
4578
- });
4837
+ },
4838
+ _ret2;
4839
+ for (var idx = 0; idx < plannedCells.length; idx++) {
4840
+ _ret2 = _loop3();
4841
+ if (_ret2 === 0) continue;
4842
+ if (_ret2) return _ret2.v;
4843
+ }
4579
4844
  if (res.backside) this.generalPlanningState.grids[1].matrix = newGrid;else this.generalPlanningState.grids[0].matrix = newGrid;
4845
+ return false;
4580
4846
  }
4581
4847
 
4582
4848
  /**
@@ -4617,9 +4883,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4617
4883
  var topNeighbors = this.getNeighborElements(elementId, 'TOP');
4618
4884
  var rightNeighbors = this.getNeighborElements(elementId, 'RIGHT');
4619
4885
  var leftNeighbors = this.getNeighborElements(elementId, 'LEFT');
4886
+ var downNeighbors = this.getNeighborElements(elementId, 'DOWN');
4620
4887
  if (topNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[0]]);
4621
4888
  if (leftNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVL', [leftNeighbors[0]]);
4622
4889
  if (rightNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[0]]);
4890
+ if (downNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVU', [downNeighbors[0]]);
4623
4891
  element.PosNr = posNr;
4624
4892
  posNr++;
4625
4893
  }
@@ -4627,9 +4895,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4627
4895
  }
4628
4896
  for (var i = 0; i < backGrid.length; i++) {
4629
4897
  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;
4898
+ var _cell10$plannedElemen;
4899
+ var _cell10 = backGrid[i][j];
4900
+ var _elementId6 = _cell10 === null || _cell10 === void 0 || (_cell10$plannedElemen = _cell10.plannedElement) === null || _cell10$plannedElemen === void 0 ? void 0 : _cell10$plannedElemen.elementId;
4633
4901
  if (_elementId6 && allCheckedElementIds.indexOf(_elementId6) == -1) {
4634
4902
  var _element2 = this.plannerElements.get(_elementId6);
4635
4903
  allCheckedElementIds.push(_elementId6);
@@ -4967,9 +5235,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4967
5235
  var targetRowIndex = endRowIndex + 1;
4968
5236
  var _copyPossible = false;
4969
5237
  // Iterate through columns within the element's width
4970
- for (var _x3 = endColIndex; _x3 >= startColIndex; _x3--) {
4971
- if (isValidCell(_x3, targetRowIndex)) {
4972
- copyStartColIndex = _x3;
5238
+ for (var _x7 = endColIndex; _x7 >= startColIndex; _x7--) {
5239
+ if (isValidCell(_x7, targetRowIndex)) {
5240
+ copyStartColIndex = _x7;
4973
5241
  _copyPossible = true;
4974
5242
  }
4975
5243
  }
@@ -4986,19 +5254,19 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4986
5254
  var _targetColIndex = endColIndex;
4987
5255
  var _copyPossible2 = false;
4988
5256
  // Iterate through rows within the element's height
4989
- for (var _y2 = startRowIndex; _y2 <= endRowIndex; _y2++) {
4990
- if (isValidCell(_targetColIndex, _y2)) {
4991
- copyStartRowIndex = _y2;
5257
+ for (var _y6 = startRowIndex; _y6 <= endRowIndex; _y6++) {
5258
+ if (isValidCell(_targetColIndex, _y6)) {
5259
+ copyStartRowIndex = _y6;
4992
5260
  _copyPossible2 = true;
4993
5261
  break;
4994
5262
  }
4995
5263
  }
4996
5264
  if (!_copyPossible2) return undefined;
4997
5265
  _copyPossible2 = false;
4998
- for (var _x4 = endColIndex; _x4 <= endColIndex + elementCells.colCount; _x4++) {
4999
- if (isValidCell(_x4, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x4, copyStartRowIndex - 1))) {
5266
+ for (var _x8 = endColIndex; _x8 <= endColIndex + elementCells.colCount; _x8++) {
5267
+ if (isValidCell(_x8, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x8, copyStartRowIndex - 1))) {
5000
5268
  //check also for overhang
5001
- copyEndColIndex = _x4;
5269
+ copyEndColIndex = _x8;
5002
5270
  _copyPossible2 = true;
5003
5271
  } else {
5004
5272
  break; //when you find one situation where it is not valid skip outside.
@@ -5038,16 +5306,16 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5038
5306
  } else {
5039
5307
  var distToOriginX = 0;
5040
5308
  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;
5309
+ var _plannedElement$size$3, _plannedElement4;
5310
+ 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
5311
  }
5044
5312
  if (cellsStartColIndex < 0) {
5045
5313
  distToOriginX = -element.getWidth();
5046
5314
  }
5047
5315
  var distToOriginY = 0;
5048
5316
  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;
5317
+ var _plannedElement$size$4, _plannedElement5;
5318
+ 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
5319
  }
5052
5320
  elementLocation.startIndexWorldPos = new Vector2(distToOriginX, distToOriginY);
5053
5321
  }
@@ -5094,7 +5362,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5094
5362
  var _ele2, _ele3;
5095
5363
  var movables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5096
5364
  var selectedElementId = arguments.length > 1 ? arguments[1] : undefined;
5097
- if (!movables) return this.generalPlanningState;
5365
+ if (!movables || !selectedElementId) return this.generalPlanningState;
5098
5366
  // fill to equal size
5099
5367
  var matrix = this.generalPlanningState.grids[0].matrix;
5100
5368
  var matrixWithMovables = [];
@@ -5141,6 +5409,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5141
5409
  isSupport = !!matrix.find(function (x, idx) {
5142
5410
  return idx >= ele.area.fromX && idx < ele.area.toX && matrix[idx].length > ele.area.toY;
5143
5411
  }); // can't move if there is anything above these cells
5412
+
5413
+ // if it has left and right neighbour and is on the bottom
5414
+ if (ele.area.fromX == 0 && this.getNeighborElements(ele.elementId, 'LEFT').length > 0 && this.getNeighborElements(ele.elementId, 'RIGHT').length > 0) isSupport = true;
5144
5415
  }
5145
5416
  if (isSupport) return this.generalPlanningState;
5146
5417
  for (var x = 0; x < maxWidth; x++) {
@@ -5161,7 +5432,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5161
5432
  if (x >= from && x < to) return;
5162
5433
  var row = matrixWithMovables[x];
5163
5434
  var len = row.length;
5164
- var _x = ele.fromX == 0 ? x : x - 1;
5435
+ var _x = ele.area.fromX == 0 ? x : x - 1;
5165
5436
  row[len] = {
5166
5437
  index: {
5167
5438
  x: _x,
@@ -5174,7 +5445,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5174
5445
  var len = matrixWithMovables.length;
5175
5446
  if (((_ele2 = ele) === null || _ele2 === void 0 ? void 0 : _ele2.area.toX) != matrix.length) matrixWithMovables[len] = [{
5176
5447
  index: {
5177
- x: ele.fromX == 0 ? len : len - 1,
5448
+ x: ele.area.fromX == 0 ? len : len - 1,
5178
5449
  y: 0
5179
5450
  }
5180
5451
  }];
@@ -5198,7 +5469,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5198
5469
  //system 4 useacse
5199
5470
  var totalColCount = matrix[0].length;
5200
5471
  var colSizes = Array(totalColCount).fill(-1);
5201
- var _loop3 = function _loop3(i) {
5472
+ var _loop4 = function _loop4(i) {
5202
5473
  var _matrix$find;
5203
5474
  var cell = (_matrix$find = matrix.find(function (row) {
5204
5475
  var _row$i$plannedElement, _row$i$plannedElement2;
@@ -5212,7 +5483,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
5212
5483
  if (colSizes[i] === -1) return 1; // break
5213
5484
  };
5214
5485
  for (var i = 0; i < totalColCount; i++) {
5215
- if (_loop3(i)) break;
5486
+ if (_loop4(i)) break;
5216
5487
  }
5217
5488
  if (colSizes.includes(-1)) LOG$1.error(new Error('Column sizes are not set'));
5218
5489
  return colSizes;
@@ -5326,7 +5597,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5326
5597
  key: "initPlanner",
5327
5598
  value: function () {
5328
5599
  var _initPlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(setPlanData) {
5329
- var planData, jsonElements, i, jsonElement, elementID, plannerElement, data, highesElemId, _jsonElement, params;
5600
+ var planData, jsonElements, i, jsonElement, elementID, plannerElement, constructionRules, _constructionRules$co, _constructionRules$co2, data, highesElemId, _jsonElement, params;
5330
5601
  return _regeneratorRuntime.wrap(function _callee$(_context) {
5331
5602
  while (1) switch (_context.prev = _context.next) {
5332
5603
  case 0:
@@ -5356,7 +5627,20 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5356
5627
  if (this.nextElementId < elementID + 1) this.nextElementId = elementID + 1;
5357
5628
  this.set.setElementId(jsonElement.basketID, plannerElement.ElementId);
5358
5629
  if (!this.constructionRulesHandler.getConstructionRulesLoaded()) {
5359
- this.constructionRulesHandler.setConstructionRules(this.set.getConstructionRuleOfElementId(plannerElement.ElementId));
5630
+ constructionRules = this.set.getConstructionRuleOfElementId(plannerElement.ElementId);
5631
+ if (constructionRules) {
5632
+ this.boxPlannerGrid.GridSetupParams = {
5633
+ fixCellRasterHeight: 19.2,
5634
+ fixCellRasterWidth: 19.2,
5635
+ forceFixCellRasterSize: (_constructionRules$co = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co !== void 0 ? _constructionRules$co : true,
5636
+ forceSingleCellPerElement: (_constructionRules$co2 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co2 !== void 0 ? _constructionRules$co2 : true,
5637
+ hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5638
+ maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5639
+ hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
5640
+ maxGridRasterWidth: constructionRules.constructionRules.maxGridRasterWidth
5641
+ };
5642
+ }
5643
+ this.constructionRulesHandler.setConstructionRules(constructionRules);
5360
5644
  }
5361
5645
  data = this.set.getPlannerData(plannerElement.ElementId);
5362
5646
  if (data) plannerElement.updatePlannerData(data);
@@ -5484,7 +5768,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5484
5768
  key: "addPlannerElement",
5485
5769
  value: (function () {
5486
5770
  var _addPlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(basketID, params) {
5487
- var plannerElement, data, constructionRules, _constructionRules$co, _constructionRules$co2;
5771
+ var plannerElement, data, constructionRules, _constructionRules$co3, _constructionRules$co4;
5488
5772
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
5489
5773
  while (1) switch (_context2.prev = _context2.next) {
5490
5774
  case 0:
@@ -5508,8 +5792,8 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5508
5792
  this.boxPlannerGrid.GridSetupParams = {
5509
5793
  fixCellRasterHeight: 19.2,
5510
5794
  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,
5795
+ forceFixCellRasterSize: (_constructionRules$co3 = constructionRules.constructionRules.forceFixCellRasterSize) !== null && _constructionRules$co3 !== void 0 ? _constructionRules$co3 : true,
5796
+ forceSingleCellPerElement: (_constructionRules$co4 = constructionRules.constructionRules.forceSingleCellPerElement) !== null && _constructionRules$co4 !== void 0 ? _constructionRules$co4 : true,
5513
5797
  hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5514
5798
  maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5515
5799
  hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
@@ -5587,11 +5871,10 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5587
5871
  value: (function () {
5588
5872
  var _copyPlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(articleCopyRelation, copyInfo) {
5589
5873
  var _this = this;
5590
- var gridIsPrepared, plannerElementsToLoadSVG, that, i, cellPos, allDPs, j;
5874
+ var plannerElementsToLoadSVG, that, i, cellPos, allDPs, j;
5591
5875
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
5592
5876
  while (1) switch (_context5.prev = _context5.next) {
5593
5877
  case 0:
5594
- gridIsPrepared = false;
5595
5878
  if (copyInfo) {
5596
5879
  _context5.next = 3;
5597
5880
  break;
@@ -5601,25 +5884,22 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5601
5884
  if (copyInfo.copyType == 'STD') copyInfo.targetElements = [];
5602
5885
  plannerElementsToLoadSVG = [];
5603
5886
  that = this;
5604
- articleCopyRelation.forEach(function (basketIDNewArticle, elementToCopyId) {
5887
+ articleCopyRelation.forEach(function (val) {
5605
5888
  var _copyInfo$targetEleme;
5606
- if (!gridIsPrepared) {
5607
- if (copyInfo.copyIndex.z == -1) {
5608
- if (!_this.boxPlannerGrid.getPlannerHasActiveBackside()) _this.boxPlannerGrid.prepareGridForBackSideCopy();
5609
- } else {
5610
- _this.boxPlannerGrid.prepareGridForColCopy(elementToCopyId, copyInfo.copyIndex);
5611
- }
5889
+ if (copyInfo.copyIndex.z == -1) {
5890
+ if (!_this.boxPlannerGrid.getPlannerHasActiveBackside()) _this.boxPlannerGrid.prepareGridForBackSideCopy();
5891
+ } else {
5892
+ _this.boxPlannerGrid.prepareGridForColCopy(val.key, copyInfo.copyIndex);
5612
5893
  }
5613
- gridIsPrepared = true;
5614
5894
 
5615
5895
  //Init Planner Element
5616
- var plannerElement = new PlannerElementData(_this.set.getSetId(), basketIDNewArticle, _this.nextElementId, DivaBoxPlanner.plannerType);
5896
+ var plannerElement = new PlannerElementData(_this.set.getSetId(), val.value, _this.nextElementId, DivaBoxPlanner.plannerType);
5617
5897
  _this.nextElementId++;
5618
- _this.set.setElementId(basketIDNewArticle, plannerElement.ElementId);
5898
+ _this.set.setElementId(val.value, plannerElement.ElementId);
5619
5899
  var data = _this.set.getPlannerData(plannerElement.ElementId);
5620
5900
  plannerElement.updatePlannerData(data);
5621
- _this.boxPlannerGrid.addElementAsCopy(elementToCopyId, plannerElement, copyInfo.copyIndex);
5622
- _this.constructionRulesHandler.onElementCopy(elementToCopyId, plannerElement.getElementId());
5901
+ _this.boxPlannerGrid.addElementAsCopy(val.key, plannerElement, copyInfo.copyIndex);
5902
+ _this.constructionRulesHandler.onElementCopy(val.key, plannerElement.getElementId());
5623
5903
  plannerElementsToLoadSVG.push(plannerElement);
5624
5904
  if (copyInfo.copyType == 'STD') (_copyInfo$targetEleme = copyInfo.targetElements) === null || _copyInfo$targetEleme === void 0 || _copyInfo$targetEleme.push(plannerElement.getElementId());
5625
5905
  });
@@ -5750,7 +6030,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5750
6030
  }
5751
6031
  }
5752
6032
  //remove duplicate
5753
- return Array.from(new Set(allElementsToCopy));
6033
+ return allElementsToCopy;
5754
6034
  }
5755
6035
 
5756
6036
  /**
@@ -5904,42 +6184,58 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5904
6184
  value: (function () {
5905
6185
  var _updatePlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(changedOPT, targetElements) {
5906
6186
  var _this2 = this;
5907
- var message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
6187
+ var failed, message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
5908
6188
  return _regeneratorRuntime.wrap(function _callee7$(_context7) {
5909
6189
  while (1) switch (_context7.prev = _context7.next) {
5910
6190
  case 0:
5911
6191
  LOG.debug('BoxPlanner - configurationHasChanged ' + changedOPT);
6192
+ failed = false;
5912
6193
  targetElements === null || targetElements === void 0 || targetElements.forEach(function (e) {
5913
6194
  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);
6195
+ failed = _this2.boxPlannerGrid.updateGridElementDimensions(e, (_this2$set$getArticle = _this2.set.getArticleByElementId(e)) === null || _this2$set$getArticle === void 0 ? void 0 : _this2$set$getArticle.plannerData);
6196
+ if (failed) return;
6197
+ });
6198
+ if (!failed) {
6199
+ _context7.next = 5;
6200
+ break;
6201
+ }
6202
+ return _context7.abrupt("return", {
6203
+ doDeleteBackGrid: false,
6204
+ elemIdsToDelete: [],
6205
+ viewMessageCodex: "resizeerror",
6206
+ failed: true
5915
6207
  });
6208
+ case 5:
6209
+ this.boxPlannerGrid.updateWorldPosOfElements();
5916
6210
  if (!(changedOPT && targetElements && targetElements.length > 0 && changedOPT['OPTELEMENT'] && (changedOPT['OPTELEMENT'] == 'OPVECK_I' || changedOPT['OPTELEMENT'] == 'OPVECK_A'))) {
5917
- _context7.next = 19;
6211
+ _context7.next = 23;
5918
6212
  break;
5919
6213
  }
5920
6214
  if (!(targetElements.length > 1)) {
5921
- _context7.next = 10;
6215
+ _context7.next = 14;
5922
6216
  break;
5923
6217
  }
5924
- _context7.next = 6;
6218
+ _context7.next = 10;
5925
6219
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements, true);
5926
- case 6:
6220
+ case 10:
5927
6221
  message = _context7.sent;
5928
6222
  if (!message) {
5929
- _context7.next = 9;
6223
+ _context7.next = 13;
5930
6224
  break;
5931
6225
  }
5932
6226
  return _context7.abrupt("return", {
5933
6227
  doDeleteBackGrid: false,
5934
6228
  elemIdsToDelete: [],
5935
- viewMessageCodex: message
6229
+ viewMessageCodex: message,
6230
+ failed: false
5936
6231
  });
5937
- case 9:
6232
+ case 13:
5938
6233
  return _context7.abrupt("return", {
5939
6234
  doDeleteBackGrid: false,
5940
- elemIdsToDelete: []
6235
+ elemIdsToDelete: [],
6236
+ failed: false
5941
6237
  });
5942
- case 10:
6238
+ case 14:
5943
6239
  //If the most bottom element has no neighbor right or left - copy element
5944
6240
  cellPos = this.boxPlannerGrid.getCellsInGridByElementId(targetElements[0]);
5945
6241
  elemToCheck = targetElements[0];
@@ -5947,7 +6243,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5947
6243
  elemToCheck = this.boxPlannerGrid.getPlannerElementAtGridPos(cellPos.startColIndex, 0, false).getElementId();
5948
6244
  }
5949
6245
  if (!(!this.boxPlannerGrid.getElementHasLeftElement(elemToCheck) || !this.boxPlannerGrid.getElementHasRightElement(elemToCheck))) {
5950
- _context7.next = 19;
6246
+ _context7.next = 23;
5951
6247
  break;
5952
6248
  }
5953
6249
  //Someone has changed Eck innen or aussen. If the current eselected Element has no neighbor left or right copy neighbor
@@ -5969,6 +6265,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5969
6265
  copyType: 'BoxPlanner_COL'
5970
6266
  });
5971
6267
  return _context7.abrupt("return", {
6268
+ failed: false,
5972
6269
  doDeleteBackGrid: false,
5973
6270
  elemIdsToDelete: [],
5974
6271
  elementIdToCopy: allElementsToCopy,
@@ -5977,17 +6274,17 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5977
6274
  changedOPT: changedOPT,
5978
6275
  targetElements: targetElements
5979
6276
  });
5980
- case 19:
6277
+ case 23:
5981
6278
  if (!(changedOPT && changedOPT['OPTDMOD'])) {
5982
- _context7.next = 34;
6279
+ _context7.next = 38;
5983
6280
  break;
5984
6281
  }
5985
6282
  _context7.t0 = changedOPT['OPTDMOD'];
5986
- _context7.next = _context7.t0 === 'OPVD_EIN' ? 23 : _context7.t0 === 'OPVD_AUS' ? 27 : 32;
6283
+ _context7.next = _context7.t0 === 'OPVD_EIN' ? 27 : _context7.t0 === 'OPVD_AUS' ? 31 : 36;
5987
6284
  break;
5988
- case 23:
6285
+ case 27:
5989
6286
  if (this.boxPlannerGrid.getPlannerHasActiveBackside()) {
5990
- _context7.next = 26;
6287
+ _context7.next = 30;
5991
6288
  break;
5992
6289
  }
5993
6290
  _allElementsToCopy = this.getPlannerElementsInfluencedByCopy(-1, {
@@ -5999,25 +6296,27 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5999
6296
  copyType: 'BoxPlanner_backside'
6000
6297
  });
6001
6298
  return _context7.abrupt("return", {
6299
+ failed: false,
6002
6300
  doDeleteBackGrid: false,
6003
6301
  elemIdsToDelete: [],
6004
6302
  elementIdToCopy: _allElementsToCopy,
6005
6303
  copyType: 'BoxPlanner_backside',
6006
6304
  changedOPT: changedOPT
6007
6305
  });
6008
- case 26:
6009
- return _context7.abrupt("break", 32);
6010
- case 27:
6306
+ case 30:
6307
+ return _context7.abrupt("break", 36);
6308
+ case 31:
6011
6309
  if (!this.boxPlannerGrid.getPlannerHasActiveBackside()) {
6012
- _context7.next = 31;
6310
+ _context7.next = 35;
6013
6311
  break;
6014
6312
  }
6015
6313
  allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6016
6314
  if (!(allElementsInBackGrid.length > 0)) {
6017
- _context7.next = 31;
6315
+ _context7.next = 35;
6018
6316
  break;
6019
6317
  }
6020
6318
  return _context7.abrupt("return", {
6319
+ failed: false,
6021
6320
  doDeleteBackGrid: true,
6022
6321
  elemIdsToDelete: allElementsInBackGrid.map(function (element) {
6023
6322
  return element.ElementId;
@@ -6025,23 +6324,24 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6025
6324
  deletionType: 'BoxPlanner_backside',
6026
6325
  changedOPT: changedOPT
6027
6326
  });
6028
- case 31:
6029
- return _context7.abrupt("break", 32);
6030
- case 32:
6031
- _context7.next = 48;
6327
+ case 35:
6328
+ return _context7.abrupt("break", 36);
6329
+ case 36:
6330
+ _context7.next = 52;
6032
6331
  break;
6033
- case 34:
6332
+ case 38:
6034
6333
  if (!(changedOPT && changedOPT['OPTFARBE_RAHMEN'] && changedOPT['OPTFARBE_RAHMEN'] == 'OPVSCHWARZ_MATT' && this.boxPlannerGrid.getPlannerHasActiveBackside())) {
6035
- _context7.next = 40;
6334
+ _context7.next = 44;
6036
6335
  break;
6037
6336
  }
6038
6337
  //If the double modul is active but the color is changed to black - disable double modul
6039
6338
  _allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
6040
6339
  if (!(_allElementsInBackGrid.length > 0)) {
6041
- _context7.next = 38;
6340
+ _context7.next = 42;
6042
6341
  break;
6043
6342
  }
6044
6343
  return _context7.abrupt("return", {
6344
+ failed: false,
6045
6345
  doDeleteBackGrid: true,
6046
6346
  elemIdsToDelete: _allElementsInBackGrid.map(function (element) {
6047
6347
  return element.ElementId;
@@ -6051,34 +6351,37 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
6051
6351
  targetElements: targetElements,
6052
6352
  viewMessageCodex: 'BOXPLAN_BLACKFRAME_INCOMPATIBLE_ELEMENT_WARNING'
6053
6353
  });
6054
- case 38:
6055
- _context7.next = 48;
6354
+ case 42:
6355
+ _context7.next = 52;
6056
6356
  break;
6057
- case 40:
6058
- _context7.next = 42;
6357
+ case 44:
6358
+ _context7.next = 46;
6059
6359
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements);
6060
- case 42:
6360
+ case 46:
6061
6361
  _message = _context7.sent;
6062
6362
  if (!_message) {
6063
- _context7.next = 47;
6363
+ _context7.next = 51;
6064
6364
  break;
6065
6365
  }
6066
6366
  return _context7.abrupt("return", {
6067
6367
  doDeleteBackGrid: false,
6068
6368
  elemIdsToDelete: [],
6069
- viewMessageCodex: _message
6369
+ viewMessageCodex: _message,
6370
+ failed: false
6070
6371
  });
6071
- case 47:
6372
+ case 51:
6072
6373
  return _context7.abrupt("return", {
6073
6374
  doDeleteBackGrid: false,
6074
- elemIdsToDelete: []
6375
+ elemIdsToDelete: [],
6376
+ failed: false
6075
6377
  });
6076
- case 48:
6378
+ case 52:
6077
6379
  return _context7.abrupt("return", {
6078
6380
  doDeleteBackGrid: false,
6079
- elemIdsToDelete: []
6381
+ elemIdsToDelete: [],
6382
+ failed: false
6080
6383
  });
6081
- case 49:
6384
+ case 53:
6082
6385
  case "end":
6083
6386
  return _context7.stop();
6084
6387
  }