@crystaldesign/web-planner-logic 25.13.0-beta.9 → 25.14.0-beta.1

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 (112) hide show
  1. package/build/cjs/{DivaBoxPlanner-9dc63e6c.js → DivaBoxPlanner-1aa00c05.js} +949 -632
  2. package/build/cjs/{DivaStandardPlanner-edc8adbb.js → DivaStandardPlanner-6f7f29c2.js} +101 -74
  3. package/build/cjs/{DoorPlanner-4184aa93.js → DoorPlanner-cac35b21.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-3e4afb1c.js → Host3DSignalR-99bf15f7.js} +19 -1
  5. package/build/cjs/{LiviqueWWSHandler-566296fe.js → LiviqueWWSHandler-96b45f30.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-c131cf9d.js → PfisterWWSHandler-ca57914a.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-cdf785a8.js → PlannerHandler2D-c2f424fb.js} +1 -1
  8. package/build/cjs/{SeriousBasketHandler-62a42abd.js → SeriousBasketHandler-3da471b1.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-5d155708.js → ShelfPlanner-0e604bef.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-e33be010.js → StandardWWSHandler-7830aef9.js} +1 -1
  11. package/build/cjs/{index-589e2f4b.js → index-66e9bbd7.js} +2267 -1352
  12. package/build/cjs/index.js +3 -1
  13. package/build/esm/{DivaBoxPlanner-091c8b09.js → DivaBoxPlanner-8c163d35.js} +949 -632
  14. package/build/esm/{DivaStandardPlanner-8c6fe69d.js → DivaStandardPlanner-d89575a9.js} +101 -74
  15. package/build/esm/{DoorPlanner-b7931e1b.js → DoorPlanner-a5b01dbb.js} +1 -1
  16. package/build/esm/{Host3DSignalR-f59bbfff.js → Host3DSignalR-45d8f4c4.js} +19 -1
  17. package/build/esm/{LiviqueWWSHandler-17487162.js → LiviqueWWSHandler-ef620655.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-38fd3e0b.js → PfisterWWSHandler-bfd319db.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-80d37ff1.js → PlannerHandler2D-af50a706.js} +1 -1
  20. package/build/esm/{SeriousBasketHandler-2843e656.js → SeriousBasketHandler-40a88689.js} +1 -1
  21. package/build/esm/{ShelfPlanner-d144ac1f.js → ShelfPlanner-e9996b84.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-c87284af.js → StandardWWSHandler-f6e8e368.js} +1 -1
  23. package/build/esm/{index-f875e861.js → index-f5485f21.js} +2266 -1353
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +4 -2
  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 +82 -0
  28. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts.map +1 -0
  29. package/build/types/web-planner-logic/src/interface/API/Checkout.d.ts +4 -1
  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 +2 -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 +19 -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/AccessoireItemType.d.ts +1 -1
  36. package/build/types/web-planner-logic/src/interface/Articles/AccessoireItemType.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +6 -15
  38. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts +1 -1
  40. package/build/types/web-planner-logic/src/interface/Articles/CatalogPlannerArticleViewDataType.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +2 -0
  42. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +2 -1
  44. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts +1 -1
  46. package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts +6 -0
  48. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionDataTypes.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts +1 -1
  50. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +26 -20
  52. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +1 -1
  54. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +9 -0
  56. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +5 -0
  58. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  59. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +2 -0
  60. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  61. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  62. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +32 -0
  63. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  64. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +48 -5
  65. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  66. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +30 -6
  67. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +3 -0
  69. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts +4 -0
  71. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts.map +1 -1
  72. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +12 -1
  73. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +1 -0
  75. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  76. package/build/types/web-planner-logic/src/logic/Planner/Rendering/DivaMediaServiceHandler.d.ts +10 -0
  77. package/build/types/web-planner-logic/src/logic/Planner/Rendering/DivaMediaServiceHandler.d.ts.map +1 -1
  78. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Host3DSignalR.d.ts.map +1 -1
  79. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  80. package/build/types/web-planner-logic/src/logic/Planner/Rendering/Rendering.d.ts.map +1 -1
  81. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +8 -0
  82. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  83. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +17 -1
  84. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  85. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +3 -13
  86. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  87. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts +3 -3
  88. package/build/types/web-planner-logic/src/model/Articles/Article/DivaCatalogArticle.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts +3 -3
  90. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  91. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +3 -1
  92. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  93. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +6 -1
  94. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  95. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +2 -1
  96. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  97. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts +3 -9
  98. package/build/types/web-planner-logic/src/model/Options/ArticleOptionValueData.d.ts.map +1 -1
  99. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +5 -3
  100. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  101. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts +6 -4
  102. package/build/types/web-planner-logic/src/model/Options/CatalogOptionValueData.d.ts.map +1 -1
  103. package/build/types/web-planner-logic/src/model/Planner/BoxPlannerData.d.ts +2 -1
  104. package/build/types/web-planner-logic/src/model/Planner/BoxPlannerData.d.ts.map +1 -1
  105. package/build/types/web-planner-logic/src/model/Planner/PlannerInteractionData.d.ts +7 -2
  106. package/build/types/web-planner-logic/src/model/Planner/PlannerInteractionData.d.ts.map +1 -1
  107. package/build/types/web-planner-logic/src/test/datas/environments/scripts/pfister-prod.d.ts.map +1 -1
  108. package/build/types/web-planner-logic/src/test/datas/environments/scripts/pfister-quality.d.ts.map +1 -1
  109. package/build/types/web-planner-logic/src/test/datas/environments/testing/pfister-dev.d.ts.map +1 -1
  110. package/build/types/web-planner-logic/src/test/datas/environments/testing/retail-dev.d.ts.map +1 -1
  111. package/build/types/web-planner-logic/src/test/datas/environments/testing/retail-test.d.ts.map +1 -1
  112. package/package.json +2 -2
@@ -3,10 +3,10 @@ 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-f875e861.js';
6
+ import { c as Vector2, V as Vector3, P as PlannerElementData, B as BoundingBox } from './index-f5485f21.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-80d37ff1.js';
9
+ import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-af50a706.js';
10
10
  import '@babel/runtime/helpers/slicedToArray';
11
11
  import '@babel/runtime/helpers/objectWithoutProperties';
12
12
  import 'axios';
@@ -1822,6 +1822,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1822
1822
  * Elements without bottom plate are "Garderobe" or "Offenes Fach ohne Boden"
1823
1823
  */
1824
1824
  _defineProperty(this, "getElementHasBottomPlate", function (curElement, optionHandler) {
1825
+ if (!curElement) return false;
1825
1826
  if (_this.constructionRules.knotInfo.elementsWithGroundPlate) {
1826
1827
  for (var i = 0; i < _this.constructionRules.knotInfo.elementsWithGroundPlate.length; i++) {
1827
1828
  var onOPT = _this.constructionRules.knotInfo.elementsWithGroundPlate[i].onOPT;
@@ -1838,6 +1839,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1838
1839
  * @param optionHandler
1839
1840
  */
1840
1841
  _defineProperty(this, "getElementIsCornerElement", function (curElement, optionHandler) {
1842
+ if (!curElement) return false;
1841
1843
  return _this.constructionRules.hasCORNER && _this.arrayContainsValue(_this.constructionRules.knotInfo.cornerElements.onOPVs, _this.getOptionVal(curElement.getElementId(), _this.constructionRules.knotInfo.cornerElements.onOPT, optionHandler));
1842
1844
  });
1843
1845
  _defineProperty(this, "getElementIsGarderobeElement", function (curElement, optionHandler) {
@@ -1857,9 +1859,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
1857
1859
  if (boxPlannerGrid.getElementHasTopElement(curElement.getElementId())) {
1858
1860
  var allTopElements = boxPlannerGrid.getTopElements(curElement.getElementId());
1859
1861
  var oneTrueFound = false;
1860
- for (var i = 0; i < allTopElements.length; i++) {
1861
- if (_this.getElementHasBottomPlate(allTopElements[i], optionHandler)) oneTrueFound = true;
1862
- }
1862
+ if (_this.getElementHasBottomPlate(allTopElements[0], optionHandler)) oneTrueFound = true;
1863
1863
  return oneTrueFound;
1864
1864
  }
1865
1865
  return true;
@@ -2045,7 +2045,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2045
2045
  }
2046
2046
  }
2047
2047
  if (cellsInGrid.endColIndex < colCount - 1) {
2048
- var rightElement = boxPlannerGrid.getPlannerElementAtGridPos(cellsInGrid.endColIndex + 1, 0, false);
2048
+ var rightElement = boxPlannerGrid.getPlannerElementAtGridPos(cellsInGrid.endColIndex, 0, false);
2049
2049
  if (rightElement) {
2050
2050
  var _cornerVal = this.getOptionVal(rightElement.getElementId(), 'OPTELEMENT', optionHandler);
2051
2051
  if (_cornerVal == 'OPVECK_I') {
@@ -2060,7 +2060,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2060
2060
  }
2061
2061
  if (this.constructionRules.avoidOptionLastCol) {
2062
2062
  var elementType = this.getOptionVal(allElementIds[i], this.constructionRules.avoidOptionLastCol.onOPT, optionHandler);
2063
- if (this.arrayContainsValue(this.constructionRules.avoidOptionLastCol.onOPVs, elementType) && cellsInGrid.endColIndex == colCount - 1) {
2063
+ if (this.arrayContainsValue(this.constructionRules.avoidOptionLastCol.onOPVs, elementType) && cellsInGrid.endColIndex - 1 == colCount - 1) {
2064
2064
  this.setOptionValue(allElementIds[i], this.constructionRules.avoidOptionLastCol.onOPT, this.constructionRules.avoidOptionLastCol.defaultOpv, optionHandler);
2065
2065
  }
2066
2066
  }
@@ -2219,6 +2219,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2219
2219
  //Setze alle Fuße zurück
2220
2220
  //DEPRECTED this.setOptionValue(allElementIds[i], "OPTFAF_LINKS", "OPVOHNE_FAF", optionHandler);
2221
2221
  //DEPRECTED this.setOptionValue(allElementIds[i], "OPTFAF_RECHTS", "OPVOHNE_FAF", optionHandler);
2222
+
2222
2223
  this.setOptionValue(allElementIds[i], 'OPTFAF_L_V', 'OPVOHNE_FAF', optionHandler);
2223
2224
  this.setOptionValue(allElementIds[i], 'OPTFAF_L_H', 'OPVOHNE_FAF', optionHandler);
2224
2225
  this.setOptionValue(allElementIds[i], 'OPTFAF_R_V', 'OPVOHNE_FAF', optionHandler);
@@ -2433,35 +2434,17 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2433
2434
  var bottomElemts = boxPlannerGrid.getBottomElements(curElement.ElementId);
2434
2435
  var topRightElemt = !fromBackside ? boxPlannerGrid.getTopRightElement(curElement.ElementId) : boxPlannerGrid.getTopLeftElement(curElement.ElementId);
2435
2436
  if (rightElemts.length > 0) {
2436
- if (rightElemts.length > 1) {
2437
- LOG$2.error(new DivaError('BoxPlannerError - only one OPTNACHBAR_RECHTS allowed', {
2438
- code: 'WC_0012'
2439
- }));
2440
- } else {
2441
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_RECHTS', this.getOptionVal(rightElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2442
- }
2437
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_RECHTS', this.getOptionVal(rightElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2443
2438
  } else {
2444
2439
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_RECHTS', optionHandler);
2445
2440
  }
2446
2441
  if (leftElemts.length > 0) {
2447
- if (leftElemts.length > 1) {
2448
- LOG$2.error(new DivaError('BoxPlannerError - only one OPTNACHBAR_LINKS allowed', {
2449
- code: 'WC_0012'
2450
- }));
2451
- } else {
2452
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_LINKS', this.getOptionVal(leftElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2453
- }
2442
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_LINKS', this.getOptionVal(leftElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2454
2443
  } else {
2455
2444
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_LINKS', optionHandler);
2456
2445
  }
2457
2446
  if (topElemts.length > 0) {
2458
- if (topElemts.length > 1) {
2459
- LOG$2.error(new DivaError('BoxPlannerError - only one OPTNACHBAR_OBEN allowed', {
2460
- code: 'WC_0012'
2461
- }));
2462
- } else {
2463
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_OBEN', this.getOptionVal(topElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2464
- }
2447
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_OBEN', this.getOptionVal(topElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2465
2448
  } else {
2466
2449
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_OBEN', optionHandler);
2467
2450
  }
@@ -2472,13 +2455,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2472
2455
  }
2473
2456
  if (this.constructionRules.hasNeighbors && this.constructionRules.hasNeighbors.indexOf('OPTNACHBAR_UNTEN') >= 0) {
2474
2457
  if (bottomElemts.length > 0) {
2475
- if (bottomElemts.length > 1) {
2476
- LOG$2.error(new DivaError('BoxPlannerError - only one OPTNACHBAR_UNTEN allowed', {
2477
- code: 'WC_0012'
2478
- }));
2479
- } else {
2480
- this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_UNTEN', this.getOptionVal(bottomElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2481
- }
2458
+ this.setOptionValue(curElement.ElementId, 'OPTNACHBAR_UNTEN', this.getOptionVal(bottomElemts[0].ElementId, 'OPTELEMENT', optionHandler), optionHandler);
2482
2459
  } else {
2483
2460
  this.setOptionDoHide(curElement.ElementId, 'OPTNACHBAR_UNTEN', optionHandler);
2484
2461
  }
@@ -2532,7 +2509,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2532
2509
  }
2533
2510
  }
2534
2511
  }
2535
- if (this.getElementHasBottomPlate(backElement, optionHandler)) {
2512
+ if (backElement && this.getElementHasBottomPlate(backElement, optionHandler)) {
2536
2513
  //Set the opposite element has rahmen unten vorne
2537
2514
  this.setOptionDoShow(frontElement, 'OPTOPP_RAHMEN_U_V', optionHandler);
2538
2515
  } else {
@@ -2604,31 +2581,112 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2604
2581
  }
2605
2582
  return undefined;
2606
2583
  }
2584
+ }, {
2585
+ key: "validateDimensionRule",
2586
+ value: function validateDimensionRule(dimRule, boxPlannerSize) {
2587
+ var isOver = false;
2588
+ 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;
2595
+ if (isOver) {
2596
+ if (dimRule.higherLimit.toLowerCase() == 'doshow') return true;else if (dimRule.higherLimit.toLowerCase() == 'dohide') return false;
2597
+ } else if (isEqual) {
2598
+ return true;
2599
+ } else {
2600
+ if (dimRule.lowerLimit.toLowerCase() == 'doshow') return true;else if (dimRule.lowerLimit.toLowerCase() == 'dohide') return false;
2601
+ }
2602
+ return false;
2603
+ }
2604
+
2605
+ /*
2606
+ * This function corrects the elements in one row when the top element is wider then the bottom one.
2607
+ * Goal is to make all the bottom ones also atleast as wide as the top one because no element can overhang - omlin setup
2608
+ */
2609
+ }, {
2610
+ key: "correctOverHangingElement",
2611
+ value: function correctOverHangingElement(changedElementId, boxPlannerGrid, optionHandler, changedOPTs) {
2612
+ 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
+ }
2649
+ }
2650
+ }, {
2651
+ key: "correctFoot",
2652
+ value: function correctFoot(boxPlannerGrid, optionHandler) {
2653
+ var _this3 = this;
2654
+ var elements = boxPlannerGrid.getAllElementsInFrontGrid();
2655
+ elements.forEach(function (e) {
2656
+ if (boxPlannerGrid.getElementHasBottomElement(e.ElementId)) _this3.setOptionValue(e.ElementId, 'OPTFUSS_SYS', 'OPVOHNE', optionHandler);
2657
+ });
2658
+ }
2659
+
2660
+ /*
2661
+ * This function corrects Options that are based on the total planning dimensions
2662
+ * */
2607
2663
  }, {
2608
2664
  key: "correctOptionsInfluencedByDimensions",
2609
2665
  value: function correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler) {
2610
- var _this2 = this;
2666
+ var _this4 = this;
2611
2667
  if (!this.constructionRules.optionsInfluencedByDimensions) return;
2612
2668
  var boxPlannerSize = boxPlannerGrid.getSizeOfWholeSet(false);
2613
2669
  var allElements = boxPlannerGrid.getAllElementsInFrontGrid();
2614
2670
  this.constructionRules.optionsInfluencedByDimensions.forEach(function (dimRule) {
2615
- var isOver = false;
2616
- var isEqual = false;
2617
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y > dimRule.dimensionLimit) isOver = true;
2618
- if (dimRule.dimension.toLowerCase() == 'height' && boxPlannerSize.y == dimRule.dimensionLimit) isEqual = true;
2619
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x > dimRule.dimensionLimit) isOver = true;
2620
- if (dimRule.dimension.toLowerCase() == 'width' && boxPlannerSize.x == dimRule.dimensionLimit) isEqual = true;
2621
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z > dimRule.dimensionLimit) isOver = true;
2622
- if (dimRule.dimension.toLowerCase() == 'depth' && boxPlannerSize.z == dimRule.dimensionLimit) isEqual = true;
2623
- allElements.forEach(function (element) {
2624
- if (isOver) {
2625
- if (dimRule.higherLimit.toLowerCase() == 'doshow') _this2.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);else if (dimRule.higherLimit.toLowerCase() == 'dohide') _this2.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2626
- } else if (isEqual) {
2627
- _this2.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2628
- } else {
2629
- if (dimRule.lowerLimit.toLowerCase() == 'doshow') _this2.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);else if (dimRule.lowerLimit.toLowerCase() == 'dohide') _this2.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2630
- }
2631
- });
2671
+ if (Array.isArray(dimRule)) {
2672
+ if (dimRule.every(function (rule) {
2673
+ return _this4.validateDimensionRule(rule, boxPlannerSize);
2674
+ })) dimRule.forEach(function (rule) {
2675
+ return allElements.forEach(function (element) {
2676
+ return _this4.setOptionDoShow(element.ElementId, rule.option, optionHandler);
2677
+ });
2678
+ });else dimRule.forEach(function (rule) {
2679
+ return allElements.forEach(function (element) {
2680
+ return _this4.setOptionDoHide(element.ElementId, rule.option, optionHandler);
2681
+ });
2682
+ });
2683
+ } else {
2684
+ if (_this4.validateDimensionRule(dimRule, boxPlannerSize)) allElements.forEach(function (element) {
2685
+ return _this4.setOptionDoShow(element.ElementId, dimRule.option, optionHandler);
2686
+ });else allElements.forEach(function (element) {
2687
+ return _this4.setOptionDoHide(element.ElementId, dimRule.option, optionHandler);
2688
+ });
2689
+ }
2632
2690
  });
2633
2691
  }
2634
2692
  }, {
@@ -2691,27 +2749,32 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2691
2749
  }, {
2692
2750
  key: "correctCoverPlate",
2693
2751
  value: function correctCoverPlate(coverPlateRule, boxPlannerGrid, optionHandler) {
2694
- var _this3 = this;
2752
+ var _this5 = this;
2695
2753
  if (coverPlateRule.onHighestElementsOnly) return; // System4 not handled by this logic yet
2696
2754
 
2697
2755
  var elementsPerSeries = boxPlannerGrid.getHighestElementsPerSeries(!!coverPlateRule.onBottom);
2698
2756
  elementsPerSeries.forEach(function (serie) {
2699
2757
  var seriesWidth = 0;
2700
2758
  var seriesWidthToPlateOpv = coverPlateRule.seriesWidthToPlateOpv;
2759
+
2760
+ // default => set all to ohne
2701
2761
  serie.forEach(function (element) {
2702
- var _element$Width;
2703
- seriesWidth += (_element$Width = element.Width) !== null && _element$Width !== void 0 ? _element$Width : 0;
2704
- _this3.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
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) {
2765
+ return _this5.setOptionValue(e, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2766
+ });
2767
+ _this5.setOptionValue(element.ElementId, coverPlateRule.optABD, 'OPVOHNE', optionHandler);
2705
2768
  });
2706
2769
  var firstUncoveredElement = serie[0];
2707
- var _loop = function _loop() {
2770
+ var _loop2 = function _loop2() {
2708
2771
  var opv = seriesWidthToPlateOpv.findLast(function (stp) {
2709
2772
  // is a clean element ending
2710
2773
  var helperWidth = 0;
2711
2774
  var isClean = false;
2712
2775
  serie.forEach(function (element) {
2713
- var _element$Width2;
2714
- helperWidth += (_element$Width2 = element.Width) !== null && _element$Width2 !== void 0 ? _element$Width2 : 0;
2776
+ var _element$Width3;
2777
+ helperWidth += (_element$Width3 = element.Width) !== null && _element$Width3 !== void 0 ? _element$Width3 : 0;
2715
2778
  if (Math.abs(helperWidth - stp.limit) < 1) isClean = true;
2716
2779
  });
2717
2780
  if (stp.limit <= seriesWidth && isClean) return true;
@@ -2720,7 +2783,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2720
2783
  if (!opv) return {
2721
2784
  v: void 0
2722
2785
  };
2723
- _this3.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2786
+ _this5.setOptionValue(firstUncoveredElement.ElementId, coverPlateRule.optABD, opv.plateOpv, optionHandler);
2724
2787
  var helperWidth = 0;
2725
2788
  firstUncoveredElement = serie.find(function (e) {
2726
2789
  var _e$Width;
@@ -2733,7 +2796,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2733
2796
  },
2734
2797
  _ret;
2735
2798
  while (seriesWidth != 0) {
2736
- _ret = _loop();
2799
+ _ret = _loop2();
2737
2800
  if (_ret) return _ret.v;
2738
2801
  }
2739
2802
  });
@@ -3059,6 +3122,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3059
3122
  key: "updateOptionLogicBoxPlanner",
3060
3123
  value: function () {
3061
3124
  var _updateOptionLogicBoxPlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(boxPlannerGrid, changedOPTs, targetElements, forceResetCornerElements) {
3125
+ var _targetElements;
3062
3126
  var startTime, resultMessage, optionHandler, allElements, i, _iterator, _step, coverPlateRule, j, doChangeRetailArticleNumbers;
3063
3127
  return _regeneratorRuntime.wrap(function _callee$(_context) {
3064
3128
  while (1) switch (_context.prev = _context.next) {
@@ -3133,8 +3197,10 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3133
3197
  }
3134
3198
  }
3135
3199
  }
3200
+ this.correctFoot(boxPlannerGrid, optionHandler);
3136
3201
  this.correctLadder(boxPlannerGrid, optionHandler);
3137
3202
  this.correctOptionsInfluencedByDimensions(boxPlannerGrid, optionHandler);
3203
+ this.correctOverHangingElement((_targetElements = targetElements) === null || _targetElements === void 0 ? void 0 : _targetElements[0], boxPlannerGrid, optionHandler, changedOPTs);
3138
3204
  this.partlistHelper.calculateKnots(boxPlannerGrid, optionHandler);
3139
3205
  this.partlistHelper.calculateRahmen(boxPlannerGrid, optionHandler);
3140
3206
  for (i = 0; i < boxPlannerGrid.getColumnCount(); i++) {
@@ -3143,13 +3209,13 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3143
3209
  }
3144
3210
  }
3145
3211
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3146
- _context.next = 27;
3212
+ _context.next = 29;
3147
3213
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3148
- case 27:
3214
+ case 29:
3149
3215
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3150
3216
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3151
3217
  return _context.abrupt("return", resultMessage);
3152
- case 30:
3218
+ case 32:
3153
3219
  case "end":
3154
3220
  return _context.stop();
3155
3221
  }
@@ -3211,21 +3277,26 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3211
3277
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3212
3278
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
3213
3279
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3280
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3281
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3214
3282
  var LOG$1 = DivaUtils.initLog('Planner', 'BOX-PLANNER_GRID');
3215
3283
  var BoxPlannerGrid = /*#__PURE__*/function () {
3216
3284
  function BoxPlannerGrid(gridSetupParams, getValueOfOptionOfArticle) {
3217
3285
  _classCallCheck(this, BoxPlannerGrid);
3218
3286
  _defineProperty(this, "plannerElements", void 0);
3219
- _defineProperty(this, "frontGrid", void 0);
3220
- //first entry is width, second height
3221
- _defineProperty(this, "backGrid", void 0);
3222
- //if cell is empty it is undefined
3287
+ _defineProperty(this, "generalPlanningState", void 0);
3288
+ // [0] == frontgrid, and [1] == backgrid
3223
3289
  _defineProperty(this, "hasActiveBackside", void 0);
3224
3290
  _defineProperty(this, "getValueOfOptionOfArticle", void 0);
3225
3291
  _defineProperty(this, "gridSetupParams", void 0);
3226
3292
  this.plannerElements = new Map();
3227
- this.frontGrid = new Array();
3228
- this.backGrid = new Array();
3293
+
3294
+ // the old logic
3295
+ this.generalPlanningState = {
3296
+ grids: [{
3297
+ matrix: [[]]
3298
+ }]
3299
+ };
3229
3300
  this.gridSetupParams = gridSetupParams;
3230
3301
  this.getValueOfOptionOfArticle = getValueOfOptionOfArticle;
3231
3302
  this.hasActiveBackside = false;
@@ -3244,50 +3315,57 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3244
3315
  if (this.gridSetupParams.forceSingleCellPerElement) {
3245
3316
  var cell = {
3246
3317
  //isEmpty: false,
3247
- plannerElementId: newElement.ElementId,
3248
- width: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterWidth : newElement.getWidth(),
3249
- height: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterHeight : newElement.getHeight(),
3318
+ plannedElement: {
3319
+ elementId: newElement.ElementId,
3320
+ basketId: newElement.getBasketId(),
3321
+ size: {
3322
+ width: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterWidth : newElement.getWidth(),
3323
+ height: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterHeight : newElement.getHeight(),
3324
+ depth: newElement.getDepth()
3325
+ },
3326
+ articleCodex: newElement.ArticleCodex,
3327
+ area: {
3328
+ fromX: startColIndex,
3329
+ toX: startColIndex + 1,
3330
+ fromY: startRowIndex,
3331
+ toY: startRowIndex + 1
3332
+ }
3333
+ },
3250
3334
  index: new Vector2(startColIndex, startRowIndex)
3251
3335
  };
3252
- return {
3253
- cells: [cell],
3254
- startColIndex: startColIndex,
3255
- endColIndex: startColIndex,
3256
- startRowIndex: startRowIndex,
3257
- endRowIndex: startRowIndex,
3258
- backside: backside,
3259
- colCount: 1,
3260
- rowCount: 1
3261
- };
3336
+ return [cell];
3262
3337
  }
3263
3338
  if (!this.gridSetupParams.forceFixCellRasterSize) {
3264
3339
  LOG$1.error(new DivaError('Box planner with params forceSingleCellPerElement is false and forceFixCellRasterSize is false are not allowed'));
3265
3340
  }
3266
3341
  var colCount = Math.round(newElement.getWidth() / this.gridSetupParams.fixCellRasterWidth);
3267
- var rowCount = Math.round(newElement.getHeight() / this.gridSetupParams.fixCellRasterWidth);
3342
+ var rowCount = Math.round(newElement.getHeight() / this.gridSetupParams.fixCellRasterHeight);
3268
3343
  var cells = [];
3269
3344
  for (var i = 0; i < colCount; i++) {
3270
3345
  for (var j = 0; j < rowCount; j++) {
3271
3346
  var _cell = {
3272
- // isEmpty: false,
3273
- plannerElementId: newElement.ElementId,
3274
- width: this.gridSetupParams.fixCellRasterWidth,
3275
- height: this.gridSetupParams.fixCellRasterHeight,
3347
+ plannedElement: {
3348
+ basketId: newElement.getBasketId(),
3349
+ elementId: newElement.getElementId(),
3350
+ articleCodex: newElement.ArticleCodex,
3351
+ size: {
3352
+ width: newElement.getWidth(),
3353
+ depth: newElement.getDepth(),
3354
+ height: newElement.getHeight()
3355
+ },
3356
+ area: {
3357
+ fromX: startColIndex,
3358
+ toX: startColIndex + newElement.getWidth() / this.gridSetupParams.fixCellRasterWidth,
3359
+ fromY: startRowIndex,
3360
+ toY: startRowIndex + newElement.getHeight() / this.gridSetupParams.fixCellRasterHeight
3361
+ }
3362
+ },
3276
3363
  index: new Vector2(startColIndex + i, startRowIndex + j)
3277
3364
  };
3278
3365
  cells.push(_cell);
3279
3366
  }
3280
3367
  }
3281
- return {
3282
- cells: cells,
3283
- startColIndex: startColIndex,
3284
- endColIndex: startColIndex + colCount - 1,
3285
- startRowIndex: startRowIndex,
3286
- endRowIndex: startRowIndex + rowCount - 1,
3287
- backside: backside,
3288
- colCount: colCount,
3289
- rowCount: rowCount
3290
- };
3368
+ return cells;
3291
3369
  }
3292
3370
  }, {
3293
3371
  key: "createEmptyCells",
@@ -3333,7 +3411,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3333
3411
  key: "getAllUsedCellsInGrid",
3334
3412
  value: function getAllUsedCellsInGrid(backside) {
3335
3413
  var allCellsInGrid = new Array();
3336
- var curGrid = backside ? this.backGrid : this.frontGrid;
3414
+ var curGrid = backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3337
3415
  for (var i = 0; i < curGrid.length; i++) {
3338
3416
  for (var j = 0; j < curGrid[i].length; j++) {
3339
3417
  if (curGrid[i][j] != undefined) allCellsInGrid.push(curGrid[i][j]);
@@ -3347,9 +3425,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3347
3425
  */
3348
3426
  }, {
3349
3427
  key: "getGridColumnWidth",
3350
- value: function getGridColumnWidth(columnIndex) {
3351
- for (var i = 0; i < this.frontGrid[columnIndex].length; i++) {
3352
- if (this.frontGrid[columnIndex][i]) return this.frontGrid[columnIndex][i].width;
3428
+ value: function getGridColumnWidth(x) {
3429
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3430
+ for (var y = 0; x < frontGrid[y].length; x++) {
3431
+ var _plannedElement$size$, _plannedElement;
3432
+ var cell = frontGrid[x][y];
3433
+ 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;
3353
3434
  }
3354
3435
  return 0;
3355
3436
  }
@@ -3361,14 +3442,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3361
3442
  */
3362
3443
  }, {
3363
3444
  key: "getGridColumnHeight",
3364
- value: function getGridColumnHeight(columnIdex) {
3445
+ value: function getGridColumnHeight(x) {
3365
3446
  var height = 0;
3366
3447
  var firstElementFound = false;
3367
- if (this.frontGrid.length > columnIdex) {
3368
- var allCellsInCol = this.frontGrid[columnIdex];
3369
- for (var i = allCellsInCol.length; i >= 0; i--) {
3370
- if (!firstElementFound && allCellsInCol[i]) firstElementFound = true;
3371
- if (firstElementFound) height += allCellsInCol[i] == undefined ? 0 : allCellsInCol[i].height;
3448
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3449
+ if (frontGrid.length > x) {
3450
+ var column = frontGrid[x];
3451
+ for (var y = column.length - 1; y >= 0; y--) {
3452
+ var _plannedElement$size$2, _plannedElement2;
3453
+ var cell = column[y];
3454
+ if (!firstElementFound && cell) firstElementFound = true;
3455
+ if (firstElementFound) height += (_plannedElement$size$2 = (_plannedElement2 = cell.plannedElement) === null || _plannedElement2 === void 0 ? void 0 : _plannedElement2.size.height) !== null && _plannedElement$size$2 !== void 0 ? _plannedElement$size$2 : 0;
3456
+ y = cell.plannedElement ? cell.plannedElement.area.fromY - 1 : y - 1;
3372
3457
  }
3373
3458
  }
3374
3459
  return height;
@@ -3381,31 +3466,37 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3381
3466
  key: "deleteElementByIdFromGrid",
3382
3467
  value: function deleteElementByIdFromGrid(elementIdTodelete) {
3383
3468
  var gridCellsToDelete = this.getCellsInGridByElementId(elementIdTodelete);
3384
- var curGrid = gridCellsToDelete.backside ? this.backGrid : this.frontGrid;
3469
+ var curGrid = gridCellsToDelete.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3385
3470
  var rowCountToDelete = 1 + (gridCellsToDelete.endRowIndex - gridCellsToDelete.startRowIndex);
3386
- var doDeleteCol = false;
3387
- var startColToDelete = gridCellsToDelete.startColIndex;
3388
- var colCountToDelete = 1 + (gridCellsToDelete.startColIndex - gridCellsToDelete.endColIndex);
3389
3471
 
3390
3472
  //check if we need to delete all cols
3391
- if (this.getRowCount(gridCellsToDelete.startColIndex, gridCellsToDelete.backside) == rowCountToDelete) {
3392
- doDeleteCol = true;
3393
- }
3394
- var allUsedCellCurGrid = this.getAllUsedCellsInGrid(gridCellsToDelete.backside);
3395
- curGrid = new Array();
3396
- for (var i = 0; i < allUsedCellCurGrid.length; i++) {
3397
- var curCellFrontGrid = allUsedCellCurGrid[i];
3398
- if (curCellFrontGrid.plannerElementId != elementIdTodelete) {
3399
- if (doDeleteCol && curCellFrontGrid.index.x > startColToDelete) {
3400
- curCellFrontGrid.index.x -= colCountToDelete;
3401
- }
3402
- if (!curGrid[curCellFrontGrid.index.x]) {
3403
- curGrid[curCellFrontGrid.index.x] = [];
3404
- }
3405
- curGrid[curCellFrontGrid.index.x][curCellFrontGrid.index.y] = curCellFrontGrid;
3406
- }
3407
- }
3408
- if (gridCellsToDelete.backside) this.backGrid = curGrid;else this.frontGrid = curGrid;
3473
+ if (this.getRowCount(gridCellsToDelete.startColIndex, gridCellsToDelete.backside) == rowCountToDelete) ;
3474
+ gridCellsToDelete.cells.reverse().forEach(function (cell) {
3475
+ curGrid[cell.index.x].splice(cell.index.y, 1);
3476
+ if (curGrid[cell.index.x].length == 0) curGrid.splice(cell.index.x, 1);
3477
+ });
3478
+ var refreshedGrid = [];
3479
+ curGrid.forEach(function (row, x) {
3480
+ refreshedGrid[x] = [];
3481
+ row.forEach(function (column, y) {
3482
+ var area = column.plannedElement.area;
3483
+ refreshedGrid[x][y] = {
3484
+ index: {
3485
+ x: x,
3486
+ y: y
3487
+ },
3488
+ plannedElement: _objectSpread(_objectSpread({}, column.plannedElement), {}, {
3489
+ area: {
3490
+ fromX: x,
3491
+ fromY: y,
3492
+ toX: x + (area.toX - area.fromX),
3493
+ toY: y + (area.toY - area.fromY)
3494
+ }
3495
+ })
3496
+ };
3497
+ });
3498
+ });
3499
+ if (gridCellsToDelete.backside) this.generalPlanningState.grids[1].matrix = refreshedGrid;else this.generalPlanningState.grids[0].matrix = refreshedGrid;
3409
3500
  }
3410
3501
 
3411
3502
  /**
@@ -3418,11 +3509,14 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3418
3509
  }, {
3419
3510
  key: "getPlannerElementAtGridPos",
3420
3511
  value: function getPlannerElementAtGridPos(curXPos, curYPos, fromBackmodul) {
3421
- var curElementGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3512
+ var curElementGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3422
3513
  if (curElementGrid[curXPos] && curElementGrid[curXPos][curYPos]) {
3514
+ var _cell$plannedElement;
3423
3515
  var cell = curElementGrid[curXPos][curYPos];
3424
3516
  if (cell == undefined) return undefined;
3425
- return this.plannerElements.get(cell.plannerElementId);
3517
+ var elementId = (_cell$plannedElement = cell.plannedElement) === null || _cell$plannedElement === void 0 ? void 0 : _cell$plannedElement.elementId;
3518
+ if (!elementId) return undefined;
3519
+ return this.plannerElements.get(elementId);
3426
3520
  }
3427
3521
  return undefined;
3428
3522
  }
@@ -3436,82 +3530,53 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3436
3530
  }, {
3437
3531
  key: "getCellsInGridByElementId",
3438
3532
  value: function getCellsInGridByElementId(elementId) {
3439
- var firstCell = undefined;
3533
+ var _this$generalPlanning, _cells$0$plannedEleme, _area$fromX, _area$toX, _area$fromY, _area$toY;
3440
3534
  var onBacksideFound = false;
3441
- for (var i = 0; i < this.frontGrid.length; i++) {
3442
- for (var j = 0; j < this.frontGrid[i].length; j++) {
3443
- var cell = this.frontGrid[i][j];
3444
- if (cell && cell.plannerElementId == elementId) {
3445
- firstCell = cell;
3446
- onBacksideFound = false;
3447
- }
3448
- }
3449
- }
3450
- if (firstCell == undefined) {
3451
- for (var i = 0; i < this.backGrid.length; i++) {
3452
- for (var j = 0; j < this.backGrid[i].length; j++) {
3453
- var _cell2 = this.backGrid[i][j];
3454
- if (_cell2 && _cell2.plannerElementId == elementId) {
3455
- firstCell = _cell2;
3456
- onBacksideFound = true;
3457
- }
3535
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3536
+ var backGrid = (_this$generalPlanning = this.generalPlanningState.grids[1]) === null || _this$generalPlanning === void 0 ? void 0 : _this$generalPlanning.matrix;
3537
+ var cells = [];
3538
+ frontGrid.forEach(function (x) {
3539
+ return x.forEach(function (y) {
3540
+ var _y$plannedElement;
3541
+ if (((_y$plannedElement = y.plannedElement) === null || _y$plannedElement === void 0 ? void 0 : _y$plannedElement.elementId) == elementId) cells.push(y);
3542
+ });
3543
+ });
3544
+ backGrid === null || backGrid === void 0 || backGrid.forEach(function (x) {
3545
+ return x.forEach(function (y) {
3546
+ var _y$plannedElement2;
3547
+ if (((_y$plannedElement2 = y.plannedElement) === null || _y$plannedElement2 === void 0 ? void 0 : _y$plannedElement2.elementId) == elementId) {
3548
+ cells.push(y);
3549
+ onBacksideFound = true;
3458
3550
  }
3459
- }
3460
- }
3461
- if (firstCell == undefined) return {
3462
- cells: [],
3463
- backside: false,
3464
- startColIndex: -1,
3465
- endColIndex: -1,
3466
- startRowIndex: -1,
3467
- endRowIndex: -1,
3551
+ });
3552
+ });
3553
+ if (cells.length == 0) return {
3554
+ cells: cells,
3555
+ backside: onBacksideFound,
3556
+ startColIndex: 0,
3557
+ endColIndex: 0,
3558
+ startRowIndex: 0,
3559
+ endRowIndex: 0,
3468
3560
  colCount: 0,
3469
3561
  rowCount: 0
3470
3562
  };
3471
- if (this.gridSetupParams.forceSingleCellPerElement) return {
3472
- cells: [firstCell],
3473
- backside: onBacksideFound,
3474
- startColIndex: firstCell.index.x,
3475
- endColIndex: firstCell.index.x,
3476
- startRowIndex: firstCell.index.y,
3477
- endRowIndex: firstCell.index.y,
3478
- colCount: 1,
3479
- rowCount: 1
3480
- };
3481
- //Now find the other cells that have the same element
3482
-
3483
- var curGrid = onBacksideFound ? this.backGrid : this.frontGrid;
3484
- var cells = [firstCell];
3485
- var startColIndex = Infinity;
3486
- var endColIndex = -Infinity;
3487
- var startRowIndex = Infinity;
3488
- var endRowIndex = -Infinity;
3489
- for (var i = firstCell.index.x; i < curGrid.length; i++) {
3490
- for (var j = firstCell.index.y + 1; j < curGrid.length; j++) {
3491
- var nextCell = curGrid[i][j];
3492
- if (nextCell && nextCell.plannerElementId == elementId) {
3493
- if (i < startColIndex) startColIndex = i;
3494
- if (i > endColIndex) endColIndex = i;
3495
- if (j < startRowIndex) startRowIndex = j;
3496
- if (j > endColIndex) endRowIndex = j;
3497
- cells.push(nextCell); //also this cell has the same element
3498
- //TODO
3499
- } else {
3500
- break;
3501
- }
3502
- }
3503
- }
3563
+ var area = (_cells$0$plannedEleme = cells[0].plannedElement) === null || _cells$0$plannedEleme === void 0 ? void 0 : _cells$0$plannedEleme.area;
3504
3564
  return {
3505
3565
  cells: cells,
3506
3566
  backside: onBacksideFound,
3507
- startColIndex: startColIndex,
3508
- endColIndex: endColIndex,
3509
- startRowIndex: startRowIndex,
3510
- endRowIndex: endRowIndex,
3511
- colCount: endColIndex - startColIndex + 1,
3512
- rowCount: endRowIndex - startRowIndex + 1
3567
+ startColIndex: (_area$fromX = area === null || area === void 0 ? void 0 : area.fromX) !== null && _area$fromX !== void 0 ? _area$fromX : 0,
3568
+ endColIndex: (_area$toX = area === null || area === void 0 ? void 0 : area.toX) !== null && _area$toX !== void 0 ? _area$toX : 0,
3569
+ startRowIndex: (_area$fromY = area === null || area === void 0 ? void 0 : area.fromY) !== null && _area$fromY !== void 0 ? _area$fromY : 0,
3570
+ endRowIndex: (_area$toY = area === null || area === void 0 ? void 0 : area.toY) !== null && _area$toY !== void 0 ? _area$toY : 0,
3571
+ colCount: area ? area.toX - area.toX : 0,
3572
+ rowCount: area ? area.toY - area.fromY : 0
3513
3573
  };
3514
3574
  }
3575
+ }, {
3576
+ key: "GridSetupParams",
3577
+ set: function set(gridSetupParams) {
3578
+ this.gridSetupParams = gridSetupParams;
3579
+ }
3515
3580
 
3516
3581
  /**
3517
3582
  * This function returns all elementIds that are inside the grid
@@ -3528,11 +3593,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3528
3593
  var allElements = [];
3529
3594
  for (var i = 0; i < grid.length; i++) {
3530
3595
  for (var j = 0; j < grid[i].length; j++) {
3596
+ var _cell$plannedElement2;
3531
3597
  var cell = grid[i][j];
3532
3598
  if (cell == undefined) continue;
3533
- if (allElementIds.indexOf(cell.plannerElementId) == -1) {
3534
- allElementIds.push(cell.plannerElementId);
3535
- allElements.push(this.plannerElements.get(cell.plannerElementId));
3599
+ if ((_cell$plannedElement2 = cell.plannedElement) !== null && _cell$plannedElement2 !== void 0 && _cell$plannedElement2.elementId && allElementIds.indexOf(cell.plannedElement.elementId) == -1) {
3600
+ allElementIds.push(cell.plannedElement.elementId);
3601
+ allElements.push(this.plannerElements.get(cell.plannedElement.elementId));
3536
3602
  }
3537
3603
  }
3538
3604
  }
@@ -3541,17 +3607,17 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3541
3607
  }, {
3542
3608
  key: "getAllElementsInFrontGrid",
3543
3609
  value: function getAllElementsInFrontGrid() {
3544
- return this._getAllElementsInGrid(this.frontGrid);
3610
+ return this._getAllElementsInGrid(this.generalPlanningState.grids[0].matrix);
3545
3611
  }
3546
3612
  }, {
3547
3613
  key: "getAllElementsInBackGrid",
3548
3614
  value: function getAllElementsInBackGrid() {
3549
- return this._getAllElementsInGrid(this.backGrid);
3615
+ return this._getAllElementsInGrid(this.generalPlanningState.grids[1].matrix);
3550
3616
  }
3551
3617
  }, {
3552
3618
  key: "getAllElementsInBacksideModuleGrid",
3553
3619
  value: function getAllElementsInBacksideModuleGrid() {
3554
- return this._getAllElementsInGrid(this.backGrid).map(function (element) {
3620
+ return this._getAllElementsInGrid(this.generalPlanningState.grids[1].matrix).map(function (element) {
3555
3621
  return element.ElementId;
3556
3622
  });
3557
3623
  }
@@ -3566,24 +3632,31 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3566
3632
  }, {
3567
3633
  key: "getAllElementsInGridSortedbyGridPos",
3568
3634
  value: function getAllElementsInGridSortedbyGridPos() {
3635
+ var _this$generalPlanning2, _this$generalPlanning3;
3569
3636
  var returnElements = [];
3570
3637
  var allCheckedElementIds = [];
3571
- for (var i = 0; i < this.frontGrid.length; i++) {
3572
- for (var j = 0; j < this.frontGrid[i].length; j++) {
3573
- var cell = this.frontGrid[i][j];
3574
- if (cell && allCheckedElementIds.indexOf(cell.plannerElementId) == -1) {
3575
- var element = this.getElementById(cell.plannerElementId);
3576
- allCheckedElementIds.push(cell.plannerElementId);
3638
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
3639
+ var backGrid = (_this$generalPlanning2 = (_this$generalPlanning3 = this.generalPlanningState.grids[1]) === null || _this$generalPlanning3 === void 0 ? void 0 : _this$generalPlanning3.matrix) !== null && _this$generalPlanning2 !== void 0 ? _this$generalPlanning2 : 0;
3640
+ for (var i = 0; i < frontGrid.length; i++) {
3641
+ for (var j = 0; j < frontGrid[i].length; j++) {
3642
+ var _cell$plannedElement3;
3643
+ var cell = frontGrid[i][j];
3644
+ var elementId = (_cell$plannedElement3 = cell.plannedElement) === null || _cell$plannedElement3 === void 0 ? void 0 : _cell$plannedElement3.elementId;
3645
+ if (cell && elementId && allCheckedElementIds.indexOf(elementId) == -1) {
3646
+ var element = this.getElementById(elementId);
3647
+ allCheckedElementIds.push(elementId);
3577
3648
  returnElements.push(element);
3578
3649
  }
3579
3650
  }
3580
3651
  }
3581
- for (var i = 0; i < this.backGrid.length; i++) {
3582
- for (var j = 0; j < this.backGrid[i].length; j++) {
3583
- var _cell3 = this.backGrid[i][j];
3584
- if (_cell3 && allCheckedElementIds.indexOf(_cell3.plannerElementId) == -1) {
3585
- var _element = this.getElementById(_cell3.plannerElementId);
3586
- allCheckedElementIds.push(_cell3.plannerElementId);
3652
+ for (var i = 0; i < backGrid.length; i++) {
3653
+ 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) {
3658
+ var _element = this.getElementById(_elementId);
3659
+ allCheckedElementIds.push(_elementId);
3587
3660
  returnElements.push(_element);
3588
3661
  }
3589
3662
  }
@@ -3615,9 +3688,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3615
3688
  }, {
3616
3689
  key: "getElementIsInLastCol",
3617
3690
  value: function getElementIsInLastCol(elementId, fromBackmodul) {
3618
- var curElementGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3691
+ var curElementGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3619
3692
  var result = this.getCellsInGridByElementId(elementId);
3620
- return result.endColIndex + 1 == curElementGrid.length;
3693
+ return result.endColIndex == curElementGrid.length;
3621
3694
  }
3622
3695
 
3623
3696
  /**
@@ -3628,10 +3701,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3628
3701
  key: "getElementHasTopElement",
3629
3702
  value: function getElementHasTopElement(elementId) {
3630
3703
  var result = this.getCellsInGridByElementId(elementId);
3631
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3632
- for (var i = result.startColIndex; i <= result.endColIndex; i++) {
3704
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3705
+ for (var i = result.startColIndex; i < result.endColIndex; i++) {
3633
3706
  //Check if in one of the top cells is another element
3634
- if (curGrid[i].length > result.endRowIndex + 1 && curGrid[i][result.endRowIndex + 1]) {
3707
+ if (curGrid[i].length > result.endRowIndex && curGrid[i][result.endRowIndex]) {
3635
3708
  return true;
3636
3709
  }
3637
3710
  }
@@ -3645,19 +3718,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3645
3718
  }, {
3646
3719
  key: "getTopElements",
3647
3720
  value: function getTopElements(elementId) {
3721
+ var _curGrid$plannedEleme;
3648
3722
  var result = this.getCellsInGridByElementId(elementId);
3649
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3723
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3650
3724
  var neighborPlannerElements = [];
3651
- var neighborElementIds = [];
3652
- for (var i = result.startColIndex; i <= result.endColIndex; i++) {
3653
- if (curGrid[i].length > result.endRowIndex + 1 && curGrid[i][result.endRowIndex + 1]) {
3654
- var neighborCell = curGrid[i][result.endRowIndex + 1];
3655
- if (!neighborCell) continue;
3656
- if (neighborElementIds.indexOf(neighborCell.plannerElementId) == -1) {
3657
- neighborElementIds.push(neighborCell.plannerElementId);
3658
- neighborPlannerElements.push(this.plannerElements.get(neighborCell.plannerElementId));
3659
- }
3660
- }
3725
+ var plannedElement = result.cells[0].plannedElement;
3726
+ if (!plannedElement) return neighborPlannerElements;
3727
+ var topElement = (_curGrid$plannedEleme = curGrid[plannedElement.area.fromX]) === null || _curGrid$plannedEleme === void 0 ? void 0 : _curGrid$plannedEleme[plannedElement.area.toY];
3728
+ while (topElement) {
3729
+ var element = topElement.plannedElement;
3730
+ if (!element) break;
3731
+ neighborPlannerElements.push(this.plannerElements.get(element.elementId));
3732
+ topElement = curGrid[element.area.fromX][element.area.toY];
3661
3733
  }
3662
3734
  return neighborPlannerElements;
3663
3735
  }
@@ -3670,10 +3742,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3670
3742
  key: "getTopRightElement",
3671
3743
  value: function getTopRightElement(elementId) {
3672
3744
  var result = this.getCellsInGridByElementId(elementId);
3673
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3674
- if (curGrid.length > result.endColIndex + 1 && curGrid[result.endColIndex + 1].length > result.endRowIndex + 1 && curGrid[result.endColIndex + 1][result.endRowIndex + 1]) {
3675
- var cell = curGrid[result.endColIndex + 1][result.endRowIndex + 1];
3676
- return this.plannerElements.get(cell.plannerElementId);
3745
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3746
+ if (curGrid.length > result.endColIndex && curGrid[result.endColIndex].length > result.endRowIndex && curGrid[result.endColIndex][result.endRowIndex]) {
3747
+ var cell = curGrid[result.endColIndex][result.endRowIndex];
3748
+ return this.plannerElements.get(cell.plannedElement.elementId);
3677
3749
  }
3678
3750
  return undefined;
3679
3751
  }
@@ -3686,10 +3758,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3686
3758
  key: "getTopLeftElement",
3687
3759
  value: function getTopLeftElement(elementId) {
3688
3760
  var result = this.getCellsInGridByElementId(elementId);
3689
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3690
- if (result.startColIndex > 0 && curGrid[result.startColIndex - 1].length > 0 && curGrid[result.startColIndex - 1][result.endRowIndex + 1]) {
3691
- var cell = curGrid[result.startColIndex - 1][result.endRowIndex + 1];
3692
- return this.plannerElements.get(cell.plannerElementId);
3761
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3762
+ if (result.startColIndex > 0 && curGrid[result.startColIndex - 1].length > 0 && curGrid[result.startColIndex - 1][result.endRowIndex]) {
3763
+ var cell = curGrid[result.startColIndex - 1][result.endRowIndex];
3764
+ return this.plannerElements.get(cell.plannedElement.elementId);
3693
3765
  }
3694
3766
  return undefined;
3695
3767
  }
@@ -3717,22 +3789,21 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3717
3789
  }, {
3718
3790
  key: "getBottomElements",
3719
3791
  value: function getBottomElements(elementId) {
3792
+ var _curGrid$plannedEleme2;
3720
3793
  var result = this.getCellsInGridByElementId(elementId);
3721
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3722
- var bottomElements = [];
3723
- var bottomElementIds = [];
3724
- if (result.startRowIndex - 1 >= 0) {
3725
- for (var i = result.startColIndex; i <= result.endColIndex; i++) {
3726
- var cell = curGrid[i][result.startRowIndex - 1];
3727
- if (cell) {
3728
- if (bottomElementIds.indexOf(cell.plannerElementId) == -1) {
3729
- bottomElementIds.push(cell.plannerElementId);
3730
- bottomElements.push(this.plannerElements.get(cell.plannerElementId));
3731
- }
3732
- }
3733
- }
3794
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3795
+ var neighborPlannerElements = [];
3796
+ var plannedElement = result.cells[0].plannedElement;
3797
+ if (!plannedElement) return neighborPlannerElements;
3798
+ var topElement = (_curGrid$plannedEleme2 = curGrid[plannedElement.area.fromX]) === null || _curGrid$plannedEleme2 === void 0 ? void 0 : _curGrid$plannedEleme2[plannedElement.area.fromY - 1];
3799
+ while (topElement) {
3800
+ var _curGrid$element$area;
3801
+ var element = topElement.plannedElement;
3802
+ if (!element) break;
3803
+ neighborPlannerElements.push(this.plannerElements.get(element.elementId));
3804
+ topElement = (_curGrid$element$area = curGrid[element.area.fromX]) === null || _curGrid$element$area === void 0 ? void 0 : _curGrid$element$area[element.area.fromY - 1];
3734
3805
  }
3735
- return bottomElements;
3806
+ return neighborPlannerElements;
3736
3807
  }
3737
3808
 
3738
3809
  /**
@@ -3743,9 +3814,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3743
3814
  key: "getElementHasRightElement",
3744
3815
  value: function getElementHasRightElement(elementId) {
3745
3816
  var result = this.getCellsInGridByElementId(elementId);
3746
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3747
- if (curGrid.length > result.endColIndex + 1 && curGrid[result.endColIndex + 1].length > result.startRowIndex) {
3748
- var cell = curGrid[result.endColIndex + 1][result.startRowIndex];
3817
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3818
+ if (curGrid.length > result.endColIndex && curGrid[result.endColIndex].length > result.startRowIndex) {
3819
+ var cell = curGrid[result.endColIndex][result.startRowIndex];
3749
3820
  if (cell) return true;
3750
3821
  }
3751
3822
  return false;
@@ -3762,18 +3833,18 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3762
3833
  key: "getRightElements",
3763
3834
  value: function getRightElements(elementId) {
3764
3835
  var result = this.getCellsInGridByElementId(elementId);
3765
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3836
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3766
3837
  var rightElements = [];
3767
3838
  var rightElementIds = [];
3768
- if (curGrid.length > result.endColIndex + 1) {
3769
- for (var i = result.startRowIndex; i <= result.endRowIndex; i++) {
3770
- var cell = curGrid[result.endColIndex + 1][i];
3771
- if (cell) {
3772
- if (rightElementIds.indexOf(cell.plannerElementId) == -1) {
3773
- rightElementIds.push(cell.plannerElementId);
3774
- rightElements.push(this.plannerElements.get(cell.plannerElementId));
3775
- }
3776
- }
3839
+ var element = result.cells[0].plannedElement;
3840
+ if (!element) return rightElements;
3841
+ for (var y = element.area.fromY; y < element.area.toY; y++) {
3842
+ var _curGrid$element$area2, _cell$plannedElement4;
3843
+ var cell = (_curGrid$element$area2 = curGrid[element.area.toX]) === null || _curGrid$element$area2 === void 0 ? void 0 : _curGrid$element$area2[y];
3844
+ var _elementId2 = cell === null || cell === void 0 || (_cell$plannedElement4 = cell.plannedElement) === null || _cell$plannedElement4 === void 0 ? void 0 : _cell$plannedElement4.elementId;
3845
+ if (cell && _elementId2 && rightElementIds.indexOf(_elementId2) == -1) {
3846
+ rightElementIds.push(_elementId2);
3847
+ rightElements.push(this.plannerElements.get(_elementId2));
3777
3848
  }
3778
3849
  }
3779
3850
  return rightElements;
@@ -3787,7 +3858,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3787
3858
  key: "getElementHasLeftElement",
3788
3859
  value: function getElementHasLeftElement(elementId) {
3789
3860
  var result = this.getCellsInGridByElementId(elementId);
3790
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3861
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3791
3862
  if (result.startColIndex > 0 && curGrid[result.startColIndex - 1][result.startRowIndex]) {
3792
3863
  return true;
3793
3864
  }
@@ -3805,21 +3876,21 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3805
3876
  key: "getLeftElements",
3806
3877
  value: function getLeftElements(elementId) {
3807
3878
  var result = this.getCellsInGridByElementId(elementId);
3808
- var curGrid = result.backside ? this.backGrid : this.frontGrid;
3809
- var leftElements = [];
3810
- var leftElementIds = [];
3811
- if (result.startColIndex - 1 >= 0) {
3812
- for (var i = result.startRowIndex; i <= result.endRowIndex; i++) {
3813
- var cell = curGrid[result.startColIndex - 1][i];
3814
- if (cell) {
3815
- if (leftElementIds.indexOf(cell.plannerElementId) == -1) {
3816
- leftElementIds.push(cell.plannerElementId);
3817
- leftElements.push(this.plannerElements.get(cell.plannerElementId));
3818
- }
3819
- }
3879
+ var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3880
+ var rightElements = [];
3881
+ var rightElementIds = [];
3882
+ var element = result.cells[0].plannedElement;
3883
+ if (!element) return rightElements;
3884
+ for (var y = element.area.fromY; y < element.area.toY; y++) {
3885
+ var _curGrid, _cell$plannedElement5;
3886
+ var cell = (_curGrid = curGrid[element.area.fromX - 1]) === null || _curGrid === void 0 ? void 0 : _curGrid[y];
3887
+ var _elementId3 = cell === null || cell === void 0 || (_cell$plannedElement5 = cell.plannedElement) === null || _cell$plannedElement5 === void 0 ? void 0 : _cell$plannedElement5.elementId;
3888
+ if (cell && _elementId3 && rightElementIds.indexOf(_elementId3) == -1) {
3889
+ rightElementIds.push(_elementId3);
3890
+ rightElements.push(this.plannerElements.get(_elementId3));
3820
3891
  }
3821
3892
  }
3822
- return leftElements;
3893
+ return rightElements;
3823
3894
  }
3824
3895
 
3825
3896
  /*
@@ -3830,15 +3901,29 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3830
3901
  }, {
3831
3902
  key: "getAllElementsInColumn",
3832
3903
  value: function getAllElementsInColumn(index, fromBackmodul) {
3833
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3904
+ var orderBottomDown = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
3905
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3834
3906
  var allElements = [];
3835
3907
  var allElementIds = [];
3836
- if (curGrid.length > index) {
3908
+ if (!curGrid[index]) return allElements;
3909
+ if (orderBottomDown) {
3837
3910
  for (var i = 0; i < curGrid[index].length; i++) {
3911
+ var _cell$plannedElement6;
3838
3912
  var cell = curGrid[index][i];
3839
- if (cell && allElementIds.indexOf(cell.plannerElementId) == -1) {
3840
- allElementIds.push(cell.plannerElementId);
3841
- allElements.push(this.plannerElements.get(cell.plannerElementId));
3913
+ var elementId = cell === null || cell === void 0 || (_cell$plannedElement6 = cell.plannedElement) === null || _cell$plannedElement6 === void 0 ? void 0 : _cell$plannedElement6.elementId;
3914
+ if (elementId && cell && allElementIds.indexOf(elementId) == -1) {
3915
+ allElementIds.push(elementId);
3916
+ allElements.push(this.plannerElements.get(elementId));
3917
+ }
3918
+ }
3919
+ } else {
3920
+ 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) {
3925
+ allElementIds.push(_elementId4);
3926
+ allElements.push(this.plannerElements.get(_elementId4));
3842
3927
  }
3843
3928
  }
3844
3929
  }
@@ -3851,7 +3936,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3851
3936
  }, {
3852
3937
  key: "getColumnCount",
3853
3938
  value: function getColumnCount() {
3854
- return this.frontGrid.length;
3939
+ return this.generalPlanningState.grids[0].matrix.length;
3855
3940
  }
3856
3941
 
3857
3942
  /**
@@ -3861,7 +3946,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3861
3946
  }, {
3862
3947
  key: "getRowCount",
3863
3948
  value: function getRowCount(colIndex, fromBackmodul) {
3864
- return fromBackmodul ? this.backGrid[colIndex].length : this.frontGrid[colIndex].length;
3949
+ return fromBackmodul ? this.generalPlanningState.grids[1].matrix[colIndex].length : this.generalPlanningState.grids[0].matrix[colIndex].length;
3865
3950
  }
3866
3951
 
3867
3952
  /*
@@ -3872,15 +3957,17 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3872
3957
  }, {
3873
3958
  key: "getAllElementsInRow",
3874
3959
  value: function getAllElementsInRow(index, fromBackmodul) {
3875
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3960
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3876
3961
  var allElements = [];
3877
3962
  var allElementIds = [];
3878
3963
  for (var i = 0; i < curGrid.length; i++) {
3879
3964
  if (curGrid[i].length > index) {
3965
+ var _cell$plannedElement7;
3880
3966
  var cell = curGrid[i][index];
3881
- if (cell && allElementIds.indexOf(cell.plannerElementId) == -1) {
3882
- allElementIds.push(cell.plannerElementId);
3883
- allElements.push(this.plannerElements.get(cell.plannerElementId));
3967
+ var elementId = cell === null || cell === void 0 || (_cell$plannedElement7 = cell.plannedElement) === null || _cell$plannedElement7 === void 0 ? void 0 : _cell$plannedElement7.elementId;
3968
+ if (cell && elementId && allElementIds.indexOf(elementId) == -1) {
3969
+ allElementIds.push(elementId);
3970
+ allElements.push(this.plannerElements.get(elementId));
3884
3971
  }
3885
3972
  }
3886
3973
  }
@@ -3894,7 +3981,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3894
3981
  }, {
3895
3982
  key: "getSizeOfHighesRow",
3896
3983
  value: function getSizeOfHighesRow(fromBackmodul) {
3897
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
3984
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3898
3985
  var highestRow = 0;
3899
3986
  for (var i = 0; i < curGrid.length; i++) {
3900
3987
  for (var j = curGrid[i].length; j >= 0; j--) {
@@ -3923,69 +4010,39 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3923
4010
  }, {
3924
4011
  key: "getNeighborElements",
3925
4012
  value: function getNeighborElements(elementId, dir) {
3926
- var cellPos = this.getCellsInGridByElementId(elementId);
3927
- var curGrid = cellPos.backside ? this.backGrid : this.frontGrid;
4013
+ var _curGrid$area$toX, _curGrid$area$toX2, _curGrid2, _curGrid3, _curGrid$area$fromX, _topNeighbour$planned, _curGrid$area$fromX2, _downNeighbour$planne;
4014
+ var res = this.getCellsInGridByElementId(elementId);
4015
+ var curGrid = res.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
3928
4016
  var result = [];
3929
- var resultPlannerIds = [];
4017
+ var plannedElement = res.cells[0].plannedElement;
4018
+ if (!plannedElement) return result;
3930
4019
  switch (dir) {
3931
- case 'TOP':
3932
- for (var i = cellPos.startColIndex; i <= cellPos.endColIndex; i++) {
3933
- var neighborX = i;
3934
- var neighborY = cellPos.endRowIndex + 1;
3935
- if (curGrid[neighborX].length > neighborY) {
3936
- var neighborCell = curGrid[neighborX][neighborY];
3937
- if (neighborCell && resultPlannerIds.indexOf(neighborCell.plannerElementId) == -1) {
3938
- resultPlannerIds.push(neighborCell.plannerElementId);
3939
- result.push(this.plannerElements.get(neighborCell.plannerElementId));
3940
- }
3941
- }
3942
- }
3943
- break;
3944
- case 'DOWN':
3945
- for (var i = cellPos.startColIndex; i <= cellPos.endColIndex; i++) {
3946
- var _neighborX = i;
3947
- var _neighborY = cellPos.startRowIndex - 1;
3948
- if (_neighborY >= 0) {
3949
- var _neighborCell = curGrid[_neighborX][_neighborY];
3950
- if (_neighborCell && resultPlannerIds.indexOf(_neighborCell.plannerElementId) == -1) {
3951
- resultPlannerIds.push(_neighborCell.plannerElementId);
3952
- result.push(this.plannerElements.get(_neighborCell.plannerElementId));
3953
- }
3954
- }
3955
- }
4020
+ case 'RIGHT':
4021
+ // 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));
3956
4025
  break;
3957
4026
  case 'LEFT':
3958
- for (var i = cellPos.startRowIndex; i <= cellPos.endRowIndex; i++) {
3959
- var _neighborX2 = cellPos.startColIndex - 1;
3960
- var _neighborY2 = i;
3961
- if (_neighborX2 >= 0) {
3962
- var _neighborCell2 = curGrid[_neighborX2][_neighborY2];
3963
- if (_neighborCell2 && resultPlannerIds.indexOf(_neighborCell2.plannerElementId) == -1) {
3964
- resultPlannerIds.push(_neighborCell2.plannerElementId);
3965
- result.push(this.plannerElements.get(_neighborCell2.plannerElementId));
3966
- }
3967
- }
3968
- }
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));
3969
4030
  break;
3970
- case 'RIGHT':
3971
- for (var i = cellPos.startRowIndex; i <= cellPos.endRowIndex; i++) {
3972
- var _neighborX3 = cellPos.startColIndex + 1;
3973
- var _neighborY3 = i;
3974
- if (curGrid.length > _neighborX3) {
3975
- var _neighborCell3 = curGrid[_neighborX3][_neighborY3];
3976
- if (_neighborCell3 && resultPlannerIds.indexOf(_neighborCell3.plannerElementId) == -1) {
3977
- resultPlannerIds.push(_neighborCell3.plannerElementId);
3978
- result.push(this.plannerElements.get(_neighborCell3.plannerElementId));
3979
- }
3980
- }
3981
- }
4031
+ 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));
4035
+ break;
4036
+ 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];
4038
+ var dElementId = downNeighbour === null || downNeighbour === void 0 || (_downNeighbour$planne = downNeighbour.plannedElement) === null || _downNeighbour$planne === void 0 ? void 0 : _downNeighbour$planne.elementId;
4039
+ if (dElementId) result.push(this.plannerElements.get(dElementId));
3982
4040
  break;
3983
4041
  case 'BACK':
3984
4042
  if (this.hasActiveBackside) {
3985
- var plannerElement = this.getPlannerElementAtGridPos(cellPos.startColIndex, cellPos.startRowIndex, true);
4043
+ var plannerElement = this.getPlannerElementAtGridPos(res.startColIndex, res.startRowIndex, true);
3986
4044
  if (plannerElement != undefined) result = [plannerElement];
3987
4045
  }
3988
- break;
3989
4046
  }
3990
4047
  return result;
3991
4048
  }
@@ -4041,22 +4098,29 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4041
4098
  var depth = 0;
4042
4099
  var height = 0;
4043
4100
  var checkedElementIds = [];
4044
- for (var i = 0; i < this.frontGrid.length; i++) {
4101
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4102
+ for (var x = 0; x < frontGrid.length;) {
4103
+ var _row$0$plannedElement, _row$0$plannedElement2;
4045
4104
  var curHeight = 0;
4046
- for (var j = 0; j < this.frontGrid[i].length; j++) {
4047
- var cell = this.frontGrid[i][j];
4048
- if (cell && checkedElementIds.indexOf(cell.plannerElementId) == -1) {
4049
- curHeight += this.plannerElements.get(cell.plannerElementId).getHeight();
4050
- if (i == 0 && j == 0) depth = this.plannerElements.get(cell.plannerElementId).getDepth();
4105
+ var row = frontGrid[x];
4106
+ for (var y = 0; y < row.length;) {
4107
+ var _cell4, _cell$plannedElement$, _cell$plannedElement8;
4108
+ var cell = row[y];
4109
+ var elementId = (_cell4 = cell) === null || _cell4 === void 0 || (_cell4 = _cell4.plannedElement) === null || _cell4 === void 0 ? void 0 : _cell4.elementId;
4110
+ if (elementId && cell && checkedElementIds.indexOf(elementId) == -1) {
4111
+ curHeight += this.plannerElements.get(elementId).getHeight();
4112
+ if (x == 0 && y == 0) depth = this.plannerElements.get(elementId).getDepth();
4051
4113
  }
4114
+ 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;
4052
4115
  }
4053
4116
  if (curHeight > height) height = curHeight;
4054
- var curWidth = this.getGridColumnWidth(i);
4055
- if (correctSizeSystem4 && i > 0) {
4117
+ var curWidth = this.getGridColumnWidth(x);
4118
+ if (correctSizeSystem4 && x > 0) {
4056
4119
  //Correct width
4057
4120
  if (curWidth == 77.9) curWidth = 75;else if (curWidth == 40.4) curWidth = 37.5;else if (curWidth == 21.7) curWidth = 18.75;
4058
4121
  }
4059
4122
  width += curWidth;
4123
+ x = (_row$0$plannedElement = (_row$0$plannedElement2 = row[0].plannedElement) === null || _row$0$plannedElement2 === void 0 ? void 0 : _row$0$plannedElement2.area.toX) !== null && _row$0$plannedElement !== void 0 ? _row$0$plannedElement : x + 1;
4060
4124
  }
4061
4125
  if (this.hasActiveBackside) depth *= 2;
4062
4126
  return new Vector3(width, height, depth);
@@ -4069,21 +4133,26 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4069
4133
  }, {
4070
4134
  key: "getHighestElementsPerSeries",
4071
4135
  value: function getHighestElementsPerSeries() {
4136
+ var onBottom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4072
4137
  if (this.hasActiveBackside) throw new Error('this function is doesnt implement the backside logic (yet)');
4073
4138
  var result = [];
4074
4139
  var lastHeight = -1;
4075
- for (var idx = 0; idx < this.getColumnCount(); idx++) {
4076
- var row = this.frontGrid[idx];
4077
- var height = row.reduce(function (added, column) {
4078
- return column.height + added;
4079
- }, 0);
4080
- if (height == lastHeight) {
4140
+ for (var x = 0; x < this.getColumnCount();) {
4141
+ var row = this.generalPlanningState.grids[0].matrix[x];
4142
+ var height = 0;
4143
+ for (var y = 0; y < row.length;) {
4144
+ var element = row[y].plannedElement;
4145
+ height += element.size.height;
4146
+ y = element.area.toY;
4147
+ }
4148
+ if (Math.round(height) == Math.round(lastHeight) || onBottom) {
4081
4149
  if (!result[result.length - 1]) result.push([]);
4082
- result[result.length - 1].push(this.getPlannerElementAtGridPos(idx, row.length - 1, false));
4150
+ result[result.length - 1].push(this.getPlannerElementAtGridPos(x, row.length - 1, false));
4083
4151
  } else {
4084
- result.push([this.getPlannerElementAtGridPos(idx, row.length - 1, false)]);
4152
+ result.push([this.getPlannerElementAtGridPos(x, row.length - 1, false)]);
4085
4153
  }
4086
4154
  lastHeight = height;
4155
+ x = row[row.length - 1].plannedElement ? row[row.length - 1].plannedElement.area.toX : x + 1;
4087
4156
  }
4088
4157
  return result;
4089
4158
  }
@@ -4115,6 +4184,60 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4115
4184
  };
4116
4185
  }
4117
4186
 
4187
+ /**
4188
+ * Get all the Elements need to fill up for the copy of Element x fxe:
4189
+ *
4190
+ * [4] ->
4191
+ * [3]
4192
+ * [2]
4193
+ * [0][1]
4194
+ *
4195
+ * returns element 4, 3 and 2 because those are needed to copy in order
4196
+ * for the copy of element 4 to not float
4197
+ */
4198
+ }, {
4199
+ key: "getAllElementsToFillUp",
4200
+ value: function getAllElementsToFillUp(elementId, dir) {
4201
+ var _this = this;
4202
+ var curPos = this.getCellsInGridByElementId(elementId);
4203
+
4204
+ //columns and rows are swapped don't ask me why
4205
+ var element = curPos.cells[0].plannedElement;
4206
+ var index = {
4207
+ x: curPos.startColIndex,
4208
+ y: curPos.startRowIndex
4209
+ };
4210
+ var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4211
+ 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;
4233
+ }
4234
+ // if there is nothing to fill we copy everyting
4235
+ return {
4236
+ elements: plannerIdsToFill.length == 0 ? existingPlannerIds : plannerIdsToFill,
4237
+ backside: curPos.backside
4238
+ };
4239
+ }
4240
+
4118
4241
  /**
4119
4242
  * Returns all Elements that are under the specified element
4120
4243
  * AAAE
@@ -4131,13 +4254,15 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4131
4254
  elements: [],
4132
4255
  backside: false
4133
4256
  };
4134
- var curGrid = curPos.backside ? this.backGrid : this.frontGrid;
4257
+ var curGrid = curPos.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4135
4258
  var resultPlannerIds = [];
4136
- for (var i = curPos.startColIndex; i <= curPos.endColIndex; i++) {
4259
+ for (var i = curPos.startColIndex; i < curPos.endColIndex; i++) {
4137
4260
  for (var j = curPos.startRowIndex--; j >= 0; j--) {
4261
+ var _neighborCell$planned;
4138
4262
  var neighborCell = curGrid[i][j];
4139
- if (neighborCell && resultPlannerIds.indexOf(neighborCell.plannerElementId) == -1) {
4140
- resultPlannerIds.push(neighborCell.plannerElementId);
4263
+ var _elementId5 = neighborCell === null || neighborCell === void 0 || (_neighborCell$planned = neighborCell.plannedElement) === null || _neighborCell$planned === void 0 ? void 0 : _neighborCell$planned.elementId;
4264
+ if (neighborCell && _elementId5 && resultPlannerIds.indexOf(_elementId5) == -1) {
4265
+ resultPlannerIds.push(_elementId5);
4141
4266
  }
4142
4267
  }
4143
4268
  }
@@ -4173,56 +4298,78 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4173
4298
  }
4174
4299
  }, {
4175
4300
  key: "prepareGridForColCopy",
4176
- value: function prepareGridForColCopy(elementId, copyIndex) {
4177
- if (copyIndex.y > 0) return;
4301
+ value: function prepareGridForColCopy(elementId, relativeCopyIndex) {
4302
+ var _this$generalPlanning4, _this$generalPlanning5, _frontGrid;
4303
+ if (relativeCopyIndex.y > 0) return;
4178
4304
  var elementToCopyPos = this.getCellsInGridByElementId(elementId);
4179
- this.plannerElements.get(elementId);
4180
- //Kopiere das Grid nach rechts abhängig von der Breite des aktuellen Elementes
4181
- //now correct all indices in all cells:
4182
-
4183
- var copyStartIndex = 0;
4184
- if (copyIndex.x > 0) copyStartIndex = elementToCopyPos.endColIndex + 1;else if (copyIndex.x < 0) copyStartIndex = elementToCopyPos.startColIndex;
4185
- var copyIndexCount = 1 + (elementToCopyPos.endColIndex - elementToCopyPos.startColIndex);
4186
- var allUsedCellsFrontGrid = this.getAllUsedCellsInGrid(false);
4187
- this.frontGrid = new Array();
4188
- for (var i = 0; i < allUsedCellsFrontGrid.length; i++) {
4189
- var curCellFrontGrid = allUsedCellsFrontGrid[i];
4190
- if (curCellFrontGrid.index.x >= copyStartIndex) {
4191
- curCellFrontGrid.index.x += copyIndexCount;
4192
- }
4193
- if (!this.frontGrid[curCellFrontGrid.index.x]) {
4194
- this.frontGrid[curCellFrontGrid.index.x] = [];
4195
- }
4196
- this.frontGrid[curCellFrontGrid.index.x][curCellFrontGrid.index.y] = curCellFrontGrid;
4197
- }
4198
- //Init empty cols
4199
- for (var i = copyStartIndex; i < copyStartIndex + copyIndexCount; i++) {
4200
- if (!this.frontGrid[i]) this.frontGrid[i] = [];
4305
+ var copyDirectionIsRight = relativeCopyIndex.x > 0;
4306
+ // We add the relativeCopyIndex only if positive otherwise the whole grid get's
4307
+ // shifted to the right bexause can`t got negative
4308
+ var element = elementToCopyPos.cells[0].plannedElement;
4309
+ var absoluteCopyIndex = {
4310
+ x: element.area.toX - 1 + relativeCopyIndex.x,
4311
+ y: element.area.fromY + relativeCopyIndex.y
4312
+ };
4313
+ if (relativeCopyIndex.x < 0) absoluteCopyIndex.x = elementToCopyPos.cells[0].plannedElement.area.fromX - 1;
4314
+
4315
+ // check if the side we copy to is already blocked
4316
+ // if blocked and we copy to the left the grid get's shifted so the copy
4317
+ // get's the index of the copied
4318
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4319
+ var backGrid = (_this$generalPlanning4 = (_this$generalPlanning5 = this.generalPlanningState.grids[1]) === null || _this$generalPlanning5 === void 0 ? void 0 : _this$generalPlanning5.matrix) !== null && _this$generalPlanning4 !== void 0 ? _this$generalPlanning4 : 0;
4320
+ var widthCopyArea = element.area.toX - element.area.fromX;
4321
+ var isBlocked = (_frontGrid = frontGrid[elementToCopyPos.cells[0].index.x + relativeCopyIndex.x]) === null || _frontGrid === void 0 ? void 0 : _frontGrid[elementToCopyPos.cells[0].index.y];
4322
+ if (absoluteCopyIndex.x == -1 || isBlocked && !copyDirectionIsRight) absoluteCopyIndex.x -= relativeCopyIndex.x;
4323
+
4324
+ // new copy logic fill up like this:
4325
+ // [][] -> | [][][]
4326
+ // [][] | [][][]
4327
+ // [][][] | [][][]
4328
+ // not like this (old logic)
4329
+ // [][] -> | [][][]
4330
+ // [][] | [][][]
4331
+ // [][][] | [][][][]
4332
+ function moveGrid(plannedCells) {
4333
+ var grid = new Array();
4334
+ var rightNeighbour = plannedCells.filter(function (c) {
4335
+ return c.index.x == element.area.toX;
4336
+ });
4337
+ var rightNeighbourOfCopy = rightNeighbour.find(function (c) {
4338
+ return c.index.y == absoluteCopyIndex.y;
4339
+ });
4340
+ var leftNeighbour = plannedCells.filter(function (c) {
4341
+ return c.index.x == element.area.fromX - 1;
4342
+ });
4343
+ var leftNeighbourOfCopy = leftNeighbour.find(function (neighbour) {
4344
+ return neighbour.index.y == absoluteCopyIndex.y;
4345
+ });
4346
+ plannedCells.forEach(function (cell) {
4347
+ // 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)) {
4349
+ cell.index.x += widthCopyArea;
4350
+ cell.plannedElement.area.fromX += widthCopyArea;
4351
+ cell.plannedElement.area.toX += widthCopyArea;
4352
+ }
4353
+ if (!grid[cell.index.x]) grid[cell.index.x] = [];
4354
+ grid[cell.index.x][cell.index.y] = cell;
4355
+ });
4356
+ return grid;
4201
4357
  }
4358
+ frontGrid = moveGrid(this.getAllUsedCellsInGrid(false));
4359
+ for (var x = 0; x < widthCopyArea; x++) if (!frontGrid[absoluteCopyIndex.x + x]) frontGrid[absoluteCopyIndex.x + x] = [];
4360
+ this.generalPlanningState.grids[0].matrix = frontGrid;
4202
4361
  if (this.hasActiveBackside) {
4203
- var allUsedCellsBackGrid = this.getAllUsedCellsInGrid(true);
4204
- this.backGrid = new Array();
4205
- for (var i = 0; i < allUsedCellsBackGrid.length; i++) {
4206
- var curCellBackGrid = allUsedCellsBackGrid[i];
4207
- if (curCellBackGrid.index.x >= copyStartIndex) {
4208
- curCellBackGrid.index.x += copyIndexCount;
4209
- }
4210
- if (!this.backGrid[curCellBackGrid.index.x]) {
4211
- this.backGrid[curCellBackGrid.index.x] = [];
4212
- }
4213
- this.backGrid[curCellBackGrid.index.x][curCellBackGrid.index.y] = curCellBackGrid;
4214
- }
4215
-
4216
- //Init empty cols
4217
- for (var i = copyStartIndex; i < copyStartIndex + copyIndexCount; i++) {
4218
- if (!this.backGrid[i]) this.backGrid[i] = [];
4219
- }
4362
+ backGrid = moveGrid(this.getAllUsedCellsInGrid(true));
4363
+ for (var _x2 = 0; _x2 < widthCopyArea; _x2++) if (!backGrid[absoluteCopyIndex.x + _x2]) backGrid[absoluteCopyIndex.x + _x2] = [];
4364
+ this.generalPlanningState.grids[1].matrix = backGrid;
4220
4365
  }
4221
4366
  }
4222
4367
  }, {
4223
4368
  key: "prepareGridForBackSideCopy",
4224
4369
  value: function prepareGridForBackSideCopy() {
4225
- this.backGrid = new Array();
4370
+ this.generalPlanningState.grids[1] = {
4371
+ matrix: [[]]
4372
+ };
4226
4373
  this.hasActiveBackside = true;
4227
4374
  }
4228
4375
 
@@ -4236,11 +4383,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4236
4383
  }, {
4237
4384
  key: "addElementAtGridPos",
4238
4385
  value: function addElementAtGridPos(newElement, col, row, fromBackmodul) {
4239
- var curGrid = fromBackmodul ? this.backGrid : this.frontGrid;
4240
- var result = this.createNewCells(newElement, col, row, fromBackmodul);
4241
- for (var i = 0; i < result.cells.length; i++) {
4242
- var cell = result.cells[i];
4243
- // Prüfen, ob das innere Array existiert, sonst erstellen
4386
+ var curGrid = fromBackmodul ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4387
+ var cells = this.createNewCells(newElement, col, row, fromBackmodul);
4388
+ for (var i = 0; i < cells.length; i++) {
4389
+ var cell = cells[i];
4244
4390
  if (!curGrid[cell.index.x]) {
4245
4391
  curGrid[cell.index.x] = [];
4246
4392
  }
@@ -4249,6 +4395,67 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4249
4395
  this.plannerElements.set(newElement.getElementId(), newElement);
4250
4396
  if (fromBackmodul) this.hasActiveBackside = true;
4251
4397
  }
4398
+ /**
4399
+ * move element
4400
+ * @param elementIDToMove
4401
+ * @param copyInfo
4402
+ */
4403
+ }, {
4404
+ key: "moveElementAsCopy",
4405
+ value: function moveElementAsCopy(elementId, absoluteIndex) {
4406
+ var elementData = this.plannerElements.get(elementId);
4407
+ var deletedCells = this.getCellsInGridByElementId(elementId);
4408
+ if (!elementData) return;
4409
+ this.deleteElement(elementId, "STD");
4410
+ var curGrid = this.generalPlanningState.grids[0].matrix;
4411
+ 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
+ ) {
4414
+ var dir = deletedCells.endColIndex >= absoluteIndex.x;
4415
+ if (deletedCells.startColIndex >= absoluteIndex.x) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4416
+ if (absoluteIndex.x < 0) absoluteIndex.x = 0;
4417
+ cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4418
+ var movedGrid = [];
4419
+ var element = cells[0].plannedElement;
4420
+ curGrid.forEach(function (_, x) {
4421
+ _.forEach(function (_, y) {
4422
+ var newX = x;
4423
+ 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);
4427
+ }
4428
+ if (!movedGrid[newX]) movedGrid[newX] = [];
4429
+ var cellElem = curGrid[x][y].plannedElement;
4430
+ var newCell = {
4431
+ plannedElement: _objectSpread(_objectSpread({}, cellElem), {}, {
4432
+ area: {
4433
+ fromX: newX,
4434
+ toX: cellElem.area.toX + shiftX,
4435
+ fromY: cellElem.area.fromY,
4436
+ toY: cellElem.area.toY
4437
+ }
4438
+ }),
4439
+ index: {
4440
+ x: newX,
4441
+ y: y
4442
+ }
4443
+ };
4444
+ movedGrid[newX][y] = newCell;
4445
+ });
4446
+ });
4447
+ curGrid = movedGrid;
4448
+ } else {
4449
+ if (absoluteIndex.x > deletedCells.startColIndex && absoluteIndex.y == deletedCells.startRowIndex) absoluteIndex.x -= deletedCells.endColIndex - deletedCells.startColIndex;
4450
+ cells = this.createNewCells(elementData, absoluteIndex.x, absoluteIndex.y, false);
4451
+ }
4452
+ for (var i = 0; i < cells.length; i++) {
4453
+ if (!curGrid[cells[i].index.x]) curGrid[cells[i].index.x] = [];
4454
+ curGrid[cells[i].index.x][cells[i].index.y] = cells[i];
4455
+ }
4456
+ this.plannerElements.set(elementId, elementData);
4457
+ this.generalPlanningState.grids[0].matrix = curGrid;
4458
+ }
4252
4459
 
4253
4460
  /**
4254
4461
  * Assume that the grid is already prepared and there is enough empty space for the new element.
@@ -4260,22 +4467,27 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4260
4467
  key: "addElementAsCopy",
4261
4468
  value: function addElementAsCopy(copiedElementId, newElement, copyIndex) {
4262
4469
  var curPos = this.getCellsInGridByElementId(copiedElementId);
4470
+ var area = curPos.cells[0].plannedElement.area;
4263
4471
  var cellIndex = {
4264
- x: curPos.endColIndex + copyIndex.x,
4265
- y: curPos.endRowIndex + copyIndex.y
4472
+ x: area.fromX,
4473
+ y: area.fromY
4266
4474
  };
4475
+ if (copyIndex.x > 0) cellIndex.x = area.toX - 1 + copyIndex.x;else if (copyIndex.x < 0) cellIndex.x = area.fromX - (area.toX - area.fromX);else if (copyIndex.y > 0) cellIndex.y = area.toY - 1 + copyIndex.y;
4267
4476
  var backsideForCopy = copyIndex.z == -1 || curPos.backside == true;
4268
- var newCellInfos = this.createNewCells(newElement, cellIndex.x, cellIndex.y, backsideForCopy);
4269
- var curGrid = backsideForCopy ? this.backGrid : this.frontGrid;
4270
- for (var i = 0; i < newCellInfos.cells.length; i++) {
4271
- if (!curGrid[newCellInfos.cells[i].index.x]) curGrid[newCellInfos.cells[i].index.x] = [];
4272
- curGrid[newCellInfos.cells[i].index.x][newCellInfos.cells[i].index.y] = newCellInfos.cells[i];
4477
+ if (cellIndex.x < 0) cellIndex.x = 0; // can't plan to negative space see prepareGridForColCopy
4478
+ 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
+ var cells = this.createNewCells(newElement, cellIndex.x, cellIndex.y, backsideForCopy);
4482
+ for (var i = 0; i < cells.length; i++) {
4483
+ if (!curGrid[cells[i].index.x]) curGrid[cells[i].index.x] = [];
4484
+ curGrid[cells[i].index.x][cells[i].index.y] = cells[i];
4273
4485
  }
4274
4486
  this.plannerElements.set(newElement.getElementId(), newElement);
4275
4487
  }
4276
4488
 
4277
4489
  /**
4278
- * This function deletes an Element from the grid.
4490
+ * This function deletes an Element from the grid.ShaderMaterial
4279
4491
  * If backsideModule is active, than the oppsite Element is deleted as well
4280
4492
  * If the boxPlanner_backside switch deletion type is set, do not delete the opposite element
4281
4493
  * If the last element in col was deleted, do delete whole col.
@@ -4296,12 +4508,75 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4296
4508
  }, {
4297
4509
  key: "updateGridElementDimensions",
4298
4510
  value: function updateGridElementDimensions(elementId, elementData) {
4511
+ var _this2 = this;
4299
4512
  if (!elementData) return;
4300
4513
  var res = this.getCellsInGridByElementId(elementId);
4514
+ var scpe = this.gridSetupParams.forceSingleCellPerElement;
4301
4515
  res.cells.forEach(function (cell) {
4302
- cell.width = elementData.width;
4303
- cell.height = elementData.height;
4516
+ 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
4524
+ };
4304
4525
  });
4526
+ if (scpe) return;
4527
+ var newGrid = new Array();
4528
+ 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
4551
+ };
4552
+ return 0; // continue
4553
+ }
4554
+
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), {}, {
4558
+ index: {
4559
+ x: x,
4560
+ y: y
4561
+ },
4562
+ plannedElement: _objectSpread(_objectSpread({}, cell.plannedElement), {}, {
4563
+ 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
+ }
4569
+ })
4570
+ });
4571
+ },
4572
+ _ret;
4573
+ for (var y = 0; y < area.toY; y++) {
4574
+ _ret = _loop2(y);
4575
+ if (_ret === 0) continue;
4576
+ }
4577
+ }
4578
+ });
4579
+ if (res.backside) this.generalPlanningState.grids[1].matrix = newGrid;else this.generalPlanningState.grids[0].matrix = newGrid;
4305
4580
  }
4306
4581
 
4307
4582
  /**
@@ -4311,6 +4586,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4311
4586
  }, {
4312
4587
  key: "updateWorldPosOfElements",
4313
4588
  value: function updateWorldPosOfElements() {
4589
+ var _this$generalPlanning6, _this$generalPlanning7;
4314
4590
  //First remove all docking Point relation information
4315
4591
  var _iterator = _createForOfIteratorHelper(this.plannerElements.values()),
4316
4592
  _step;
@@ -4328,45 +4604,45 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4328
4604
  //First remove all docking Point relation information
4329
4605
 
4330
4606
  var allCheckedElementIds = [];
4331
- for (var i = 0; i < this.frontGrid.length; i++) {
4332
- for (var j = 0; j < this.frontGrid[i].length; j++) {
4333
- var cell = this.frontGrid[i][j];
4334
- if (allCheckedElementIds.indexOf(cell.plannerElementId) == -1) {
4335
- var element = this.plannerElements.get(cell.plannerElementId);
4336
- allCheckedElementIds.push(cell.plannerElementId);
4337
- var topNeighbors = this.getNeighborElements(cell.plannerElementId, 'TOP');
4338
- var rightNeighbors = this.getNeighborElements(cell.plannerElementId, 'RIGHT');
4339
- for (var n = 0; n < topNeighbors.length; n++) {
4340
- dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[n]]);
4341
- }
4342
- for (var n = 0; n < rightNeighbors.length; n++) {
4343
- dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[n]]);
4344
- }
4607
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4608
+ var backGrid = (_this$generalPlanning6 = (_this$generalPlanning7 = this.generalPlanningState.grids[1]) === null || _this$generalPlanning7 === void 0 ? void 0 : _this$generalPlanning7.matrix) !== null && _this$generalPlanning6 !== void 0 ? _this$generalPlanning6 : [];
4609
+ for (var x = 0; x < frontGrid.length; x++) {
4610
+ for (var y = 0; y < frontGrid[x].length; y++) {
4611
+ var _cell$plannedElement10;
4612
+ var cell = frontGrid[x][y];
4613
+ var elementId = cell === null || cell === void 0 || (_cell$plannedElement10 = cell.plannedElement) === null || _cell$plannedElement10 === void 0 ? void 0 : _cell$plannedElement10.elementId;
4614
+ if (elementId && allCheckedElementIds.indexOf(elementId) == -1) {
4615
+ var element = this.plannerElements.get(elementId);
4616
+ allCheckedElementIds.push(elementId);
4617
+ var topNeighbors = this.getNeighborElements(elementId, 'TOP');
4618
+ var rightNeighbors = this.getNeighborElements(elementId, 'RIGHT');
4619
+ var leftNeighbors = this.getNeighborElements(elementId, 'LEFT');
4620
+ if (topNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVO', [topNeighbors[0]]);
4621
+ if (leftNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVL', [leftNeighbors[0]]);
4622
+ if (rightNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(element, 'AVR', [rightNeighbors[0]]);
4345
4623
  element.PosNr = posNr;
4346
4624
  posNr++;
4347
4625
  }
4348
4626
  }
4349
4627
  }
4350
- for (var i = 0; i < this.backGrid.length; i++) {
4351
- for (var j = 0; j < this.backGrid[i].length; j++) {
4352
- var _cell4 = this.backGrid[i][j];
4353
- if (allCheckedElementIds.indexOf(_cell4.plannerElementId) == -1) {
4354
- var _element2 = this.plannerElements.get(_cell4.plannerElementId);
4355
- allCheckedElementIds.push(_cell4.plannerElementId);
4356
- var cellFrontGrid = this.frontGrid[i][j];
4357
- var elementFrontGrid = this.plannerElements.get(cellFrontGrid.plannerElementId);
4628
+ for (var i = 0; i < backGrid.length; i++) {
4629
+ 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;
4633
+ if (_elementId6 && allCheckedElementIds.indexOf(_elementId6) == -1) {
4634
+ var _element2 = this.plannerElements.get(_elementId6);
4635
+ allCheckedElementIds.push(_elementId6);
4636
+ var frontCell = frontGrid[i][j];
4637
+ var elementFrontGrid = this.plannerElements.get(frontCell.plannedElement.elementId);
4358
4638
  if (elementFrontGrid) {
4359
4639
  var targetDPFrontGrid = elementFrontGrid === null || elementFrontGrid === void 0 ? void 0 : elementFrontGrid.getDockingPointById('AVO_AVO_2_IL');
4360
4640
  if (!targetDPFrontGrid) LOG$1.error(new DivaError('Error Loading DockingPoint AVO_2 for plannerElement'));else if (_element2) dockingPointHandlerInst.tryDockElementToDP(_element2, elementFrontGrid, targetDPFrontGrid);
4361
4641
  }
4362
- var _topNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'TOP');
4363
- var _rightNeighbors = this.getNeighborElements(_cell4.plannerElementId, 'RIGHT');
4364
- for (var n = 0; n < _topNeighbors.length; n++) {
4365
- dockingPointHandlerInst.tryDockElement(_element2, 'AVO', [_topNeighbors[n]]);
4366
- }
4367
- for (var n = 0; n < _rightNeighbors.length; n++) {
4368
- dockingPointHandlerInst.tryDockElement(_element2, 'AVL', [_rightNeighbors[n]]);
4369
- }
4642
+ var _topNeighbors = this.getNeighborElements(_elementId6, 'TOP');
4643
+ var _rightNeighbors = this.getNeighborElements(_elementId6, 'RIGHT');
4644
+ if (_topNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(_element2, 'AVO', [_topNeighbors[0]]);
4645
+ if (_rightNeighbors.length > 0) dockingPointHandlerInst.tryDockElement(_element2, 'AVL', [_rightNeighbors[0]]);
4370
4646
  _element2.PosNr = posNr;
4371
4647
  posNr++;
4372
4648
  }
@@ -4394,10 +4670,10 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4394
4670
  _iterator2.f();
4395
4671
  }
4396
4672
  this.plannerElements.clear();
4397
- this.frontGrid = new Array();
4673
+ this.generalPlanningState.grids[0].matrix = [];
4398
4674
  if (this.hasActiveBackside) {
4399
4675
  this.hasActiveBackside = false;
4400
- this.backGrid = new Array();
4676
+ this.generalPlanningState.grids[1].matrix = [];
4401
4677
  }
4402
4678
  }
4403
4679
 
@@ -4423,7 +4699,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4423
4699
  _iterator3.f();
4424
4700
  }
4425
4701
  allElements = [];
4426
- this.backGrid = new Array();
4702
+ this.generalPlanningState.grids[1].matrix = [];
4427
4703
  }
4428
4704
  }, {
4429
4705
  key: "getPlannerHasActiveBackside",
@@ -4438,26 +4714,31 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4438
4714
  }, {
4439
4715
  key: "getBoundingBox",
4440
4716
  value: function getBoundingBox() {
4717
+ var _frontGrid$;
4718
+ var frontGrid = this.generalPlanningState.grids[0].matrix;
4719
+ var element = frontGrid === null || frontGrid === void 0 || (_frontGrid$ = frontGrid[0]) === null || _frontGrid$ === void 0 || (_frontGrid$ = _frontGrid$[0]) === null || _frontGrid$ === void 0 ? void 0 : _frontGrid$.plannedElement;
4441
4720
  var height = 0;
4442
4721
  var minX = 0;
4443
4722
  var maxX = 0;
4444
4723
  var curX = 0;
4445
4724
  var minZ = 0;
4446
- var curZ = this.plannerElements.get(this.frontGrid[0][0].plannerElementId).getDepth();
4725
+ var curZ = element ? element.size.depth : 0;
4447
4726
  var maxZ = 0;
4448
4727
  var curDir;
4449
4728
  curDir = 'RIGHT';
4450
4729
  var allCheckedElementIds = [];
4451
- for (var i = 0; i < this.frontGrid.length; i++) {
4452
- var groundCell = this.frontGrid[i][0];
4730
+ for (var i = 0; i < frontGrid.length; i++) {
4731
+ var _groundCell$plannedEl;
4732
+ var groundCell = frontGrid[i][0];
4453
4733
  if (!groundCell) break; //if on the lowest position the cell is empty, the grid ist finished - no wholes are allowed
4454
4734
 
4455
- if (allCheckedElementIds.indexOf(groundCell.plannerElementId) == -1) {
4456
- allCheckedElementIds.push(groundCell.plannerElementId);
4457
- var groundElement = this.plannerElements.get(groundCell.plannerElementId);
4735
+ var elementId = (_groundCell$plannedEl = groundCell.plannedElement) === null || _groundCell$plannedEl === void 0 ? void 0 : _groundCell$plannedEl.elementId;
4736
+ if (elementId && allCheckedElementIds.indexOf(elementId) == -1) {
4737
+ allCheckedElementIds.push(elementId);
4738
+ var groundElement = this.plannerElements.get(elementId);
4458
4739
  if (!groundElement) continue;
4459
4740
  //Check if the col has a corner.
4460
- var elementOption = this.getValueOfOptionOfArticle(groundCell.plannerElementId, 'OPTELEMENT');
4741
+ var elementOption = this.getValueOfOptionOfArticle(elementId, 'OPTELEMENT');
4461
4742
  if (curDir == 'RIGHT') {
4462
4743
  curX += groundElement.getWidth();
4463
4744
  } else if (curDir == 'FRONT') {
@@ -4526,7 +4807,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4526
4807
  var _curGrid$x;
4527
4808
  return ((_curGrid$x = curGrid[x]) === null || _curGrid$x === void 0 ? void 0 : _curGrid$x[y]) === undefined;
4528
4809
  };
4529
- var curGrid = elementCells.backside ? this.backGrid : this.frontGrid;
4810
+ var curGrid = elementCells.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4530
4811
  var _iterator4 = _createForOfIteratorHelper(this.plannerElements.keys()),
4531
4812
  _step4;
4532
4813
  try {
@@ -4545,7 +4826,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4545
4826
 
4546
4827
  //Now we found a possible place
4547
4828
 
4548
- var locationInformation = this.createLocationInformation(element, elementCells.backside, this.createEmptyCells(otherElementCells.startColIndex, otherElementCells.endRowIndex + 1, otherElementCells.startColIndex, otherElementCells.endRowIndex + 1, element.getWidth(), element.getHeight()), otherElementCells.startColIndex, otherElementCells.endRowIndex + 1, 1, 1);
4829
+ var locationInformation = this.createLocationInformation(element, elementCells.backside, this.createEmptyCells(otherElementCells.cells[0].plannedElement.area.fromX, otherElementCells.cells[0].plannedElement.area.toX, otherElementCells.cells[0].plannedElement.area.fromY, otherElementCells.cells[0].plannedElement.area.toY + 1, element.getWidth(), element.getHeight()), otherElementCells.cells[0].plannedElement.area.fromX, otherElementCells.cells[0].plannedElement.area.toX, 1, 1);
4549
4830
  allFreeMoveLocations.push(locationInformation);
4550
4831
  }
4551
4832
  } else {
@@ -4554,7 +4835,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4554
4835
  var _otherElementCells = this.getCellsInGridByElementId(otherElementId);
4555
4836
  var freeStartTopColIndex = -1;
4556
4837
  var freeEndTopColIndex = -1;
4557
- var topRow = _otherElementCells.endRowIndex + 1;
4838
+ var topRow = _otherElementCells.cells[0].plannedElement.area.toY + 1;
4558
4839
  for (var x = _otherElementCells.startColIndex; x <= _otherElementCells.startColIndex + _otherElementCells.colCount - 1; x++) {
4559
4840
  var freeSpaceFound = false;
4560
4841
  if (isEmptyCell(x, topRow)) {
@@ -4627,7 +4908,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4627
4908
  }
4628
4909
 
4629
4910
  // Determine the grid to work with (front or back) based on the element's location
4630
- var curGrid = elementCells.backside ? this.backGrid : this.frontGrid;
4911
+ var curGrid = elementCells.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4631
4912
 
4632
4913
  // Get the boundaries of the element in the grid
4633
4914
  var startColIndex = elementCells.startColIndex;
@@ -4686,9 +4967,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4686
4967
  var targetRowIndex = endRowIndex + 1;
4687
4968
  var _copyPossible = false;
4688
4969
  // Iterate through columns within the element's width
4689
- for (var _x = endColIndex; _x >= startColIndex; _x--) {
4690
- if (isValidCell(_x, targetRowIndex)) {
4691
- copyStartColIndex = _x;
4970
+ for (var _x3 = endColIndex; _x3 >= startColIndex; _x3--) {
4971
+ if (isValidCell(_x3, targetRowIndex)) {
4972
+ copyStartColIndex = _x3;
4692
4973
  _copyPossible = true;
4693
4974
  }
4694
4975
  }
@@ -4702,29 +4983,29 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4702
4983
  case 'RIGHT':
4703
4984
  {
4704
4985
  // Target column to the left of the element
4705
- var _targetColIndex = endColIndex + 1;
4986
+ var _targetColIndex = endColIndex;
4706
4987
  var _copyPossible2 = false;
4707
4988
  // Iterate through rows within the element's height
4708
- for (var _y = startRowIndex; _y <= endRowIndex; _y++) {
4709
- if (isValidCell(_targetColIndex, _y)) {
4710
- copyStartRowIndex = _y;
4989
+ for (var _y2 = startRowIndex; _y2 <= endRowIndex; _y2++) {
4990
+ if (isValidCell(_targetColIndex, _y2)) {
4991
+ copyStartRowIndex = _y2;
4711
4992
  _copyPossible2 = true;
4712
4993
  break;
4713
4994
  }
4714
4995
  }
4715
4996
  if (!_copyPossible2) return undefined;
4716
4997
  _copyPossible2 = false;
4717
- for (var _x2 = endColIndex + 1; _x2 <= endColIndex + elementCells.colCount; _x2++) {
4718
- if (isValidCell(_x2, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x2, copyStartRowIndex - 1))) {
4998
+ for (var _x4 = endColIndex; _x4 <= endColIndex + elementCells.colCount; _x4++) {
4999
+ if (isValidCell(_x4, copyStartRowIndex) && (copyStartRowIndex == 0 || !isValidCell(_x4, copyStartRowIndex - 1))) {
4719
5000
  //check also for overhang
4720
- copyEndColIndex = _x2;
5001
+ copyEndColIndex = _x4;
4721
5002
  _copyPossible2 = true;
4722
5003
  } else {
4723
5004
  break; //when you find one situation where it is not valid skip outside.
4724
5005
  }
4725
5006
  }
4726
5007
  if (!_copyPossible2) return undefined;
4727
- copyStartColIndex = endColIndex + 1;
5008
+ copyStartColIndex = endColIndex;
4728
5009
  copyEndRowIndex = endRowIndex;
4729
5010
  freeCells = this.createEmptyCells(copyStartColIndex, copyStartRowIndex, copyEndColIndex, copyEndRowIndex, element.getWidth(), element.getHeight());
4730
5011
  break;
@@ -4741,7 +5022,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4741
5022
  }, {
4742
5023
  key: "createLocationInformation",
4743
5024
  value: function createLocationInformation(element, fromBackside, cells, cellsStartColIndex, cellsStartRowIndex, cellsColCount, cellsRowCount) {
4744
- var curGrid = fromBackside ? this.backGrid : this.frontGrid;
5025
+ var curGrid = fromBackside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4745
5026
  var elementLocation = {
4746
5027
  cells: cells,
4747
5028
  widthPerCell: this.gridSetupParams.forceFixCellRasterSize ? this.gridSetupParams.fixCellRasterWidth : element.getWidth(),
@@ -4757,14 +5038,16 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4757
5038
  } else {
4758
5039
  var distToOriginX = 0;
4759
5040
  for (var i = 0; i < cellsStartColIndex; i++) {
4760
- distToOriginX += curGrid[i][0].width;
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;
4761
5043
  }
4762
5044
  if (cellsStartColIndex < 0) {
4763
5045
  distToOriginX = -element.getWidth();
4764
5046
  }
4765
5047
  var distToOriginY = 0;
4766
5048
  for (var i = 0; i < cellsStartRowIndex; i++) {
4767
- distToOriginY += curGrid[cellsStartColIndex][i].height;
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;
4768
5051
  }
4769
5052
  elementLocation.startIndexWorldPos = new Vector2(distToOriginX, distToOriginY);
4770
5053
  }
@@ -4780,7 +5063,8 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4780
5063
  for (var i = 0; i < allElements.length; i++) {
4781
5064
  var element = allElements[i];
4782
5065
  var elementCells = this.getCellsInGridByElementId(element.getElementId());
4783
- var elementLocation = this.createLocationInformation(element, elementCells.backside, elementCells.cells, elementCells.startColIndex, elementCells.startRowIndex, elementCells.colCount, elementCells.rowCount);
5066
+ var area = elementCells.cells[0].plannedElement.area;
5067
+ var elementLocation = this.createLocationInformation(element, elementCells.backside, elementCells.cells, area.fromX, area.toX, area.fromY, area.toY);
4784
5068
  var planningLeftLocation = this.getFreePlanningLocation(element.getElementId(), 'LEFT');
4785
5069
  var planningRightLocation = this.getFreePlanningLocation(element.getElementId(), 'RIGHT');
4786
5070
  var planningTopLocation = this.getFreePlanningLocation(element.getElementId(), 'TOP');
@@ -4806,10 +5090,20 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4806
5090
  }
4807
5091
  }, {
4808
5092
  key: "getGeneralPlanningState",
4809
- value: function getGeneralPlanningState(selectedElementId) {
4810
- var matrix = [];
4811
- var selectedElement = undefined;
4812
- var plannedElements = Array.from(this.plannerElements.values()).map(function (p) {
5093
+ value: function getGeneralPlanningState() {
5094
+ var _ele2, _ele3;
5095
+ var movables = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5096
+ var selectedElementId = arguments.length > 1 ? arguments[1] : undefined;
5097
+ if (!movables) return this.generalPlanningState;
5098
+ // fill to equal size
5099
+ var matrix = this.generalPlanningState.grids[0].matrix;
5100
+ var matrixWithMovables = [];
5101
+ var maxWidth = matrix.length;
5102
+ var maxHeight = 0;
5103
+ matrix.forEach(function (x) {
5104
+ if (x.length > maxHeight) maxHeight = x.length;
5105
+ });
5106
+ Array.from(this.plannerElements.values()).map(function (p) {
4813
5107
  return {
4814
5108
  basketId: p.getBasketId(),
4815
5109
  elementId: p.getElementId(),
@@ -4827,86 +5121,75 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4827
5121
  }
4828
5122
  };
4829
5123
  });
4830
- for (var i = 0; i < this.frontGrid.length; i++) {
4831
- matrix.push([]);
4832
- var frontGridRow = this.frontGrid[i];
4833
- var _loop = function _loop() {
4834
- var cell = frontGridRow[j];
4835
- if (cell) {
4836
- var plannedElement = plannedElements.find(function (p) {
4837
- return p.elementId === cell.plannerElementId;
4838
- });
4839
- if (plannedElement) {
4840
- if (plannedElement.area.fromX === undefined || plannedElement.area.fromX > cell.index.x) plannedElement.area.fromX = cell.index.x;
4841
- if (plannedElement.area.toX === undefined || plannedElement.area.toX < cell.index.x) plannedElement.area.toX = cell.index.x;
4842
- if (plannedElement.area.fromY === undefined || plannedElement.area.fromY > cell.index.y) plannedElement.area.fromY = cell.index.y;
4843
- if (plannedElement.area.toY === undefined || plannedElement.area.toY < cell.index.y) plannedElement.area.toY = cell.index.y;
4844
- }
4845
- matrix[i].push({
4846
- index: cell.index,
4847
- plannedElement: plannedElement
4848
- });
4849
- }
4850
- };
4851
- for (var j = 0; j < frontGridRow.length; j++) {
4852
- _loop();
4853
- }
4854
- }
4855
-
4856
- // Fill matrix rows to equal length
4857
- var maxLength = Math.max.apply(Math, _toConsumableArray(matrix.map(function (row) {
4858
- return row.length;
4859
- })));
4860
- matrix.forEach(function (row) {
4861
- while (row.length < maxLength) {
4862
- var _row$;
4863
- var lastCell = row[row.length - 1];
4864
- var newY = lastCell ? lastCell.index.y + 1 : 0;
4865
- row.push({
4866
- index: new Vector2(((_row$ = row[0]) === null || _row$ === void 0 ? void 0 : _row$.index.x) || 0, newY),
4867
- plannedElement: undefined
4868
- });
4869
- }
4870
- });
4871
- var selectedPlannedElement = selectedElementId ? plannedElements.find(function (p) {
4872
- return p.elementId === selectedElementId;
4873
- }) : undefined;
4874
- if (selectedPlannedElement) {
4875
- //add the free let planningLeftLocation = this.getFreePlanningLocation(element.getElementId(), 'LEFT');
4876
- var planningLeftLocation = this.getFreePlanningLocation(selectedPlannedElement.elementId, 'LEFT');
4877
- var planningRightLocation = this.getFreePlanningLocation(selectedPlannedElement.elementId, 'RIGHT');
4878
- var planningTopLocation = this.getFreePlanningLocation(selectedPlannedElement.elementId, 'TOP');
4879
- var fixedPositionRules = [];
4880
- if (planningLeftLocation) {
4881
- this.addFreeCellsToMatrix(matrix, planningLeftLocation.cells, fixedPositionRules);
4882
- }
4883
- if (planningRightLocation) {
4884
- this.addFreeCellsToMatrix(matrix, planningRightLocation.cells, fixedPositionRules);
4885
- }
4886
- if (planningTopLocation) {
4887
- this.addFreeCellsToMatrix(matrix, planningTopLocation.cells, fixedPositionRules);
4888
- }
5124
+ var isSupport = false;
5125
+ var selectedElement = undefined;
5126
+ var ele = undefined;
5127
+ if (selectedElementId) {
5128
+ var res = this.getCellsInGridByElementId(selectedElementId);
5129
+ ele = res.cells[0].plannedElement;
4889
5130
  selectedElement = {
4890
- articleCodex: selectedPlannedElement.articleCodex,
4891
- size: selectedPlannedElement.size,
5131
+ articleCodex: ele.articleCodex,
5132
+ elementId: ele.elementId,
4892
5133
  gridSpace: {
4893
- rows: selectedPlannedElement.area.toY - selectedPlannedElement.area.fromY + 1,
4894
- colums: selectedPlannedElement.area.toX - selectedPlannedElement.area.fromX + 1
5134
+ rows: ele.area.toY - ele.area.fromY + 1,
5135
+ colums: ele.area.toX - ele.area.fromX + 1
4895
5136
  },
4896
- rules: fixedPositionRules,
4897
- elementId: selectedElementId
5137
+ area: ele.area,
5138
+ size: ele.size,
5139
+ rules: []
4898
5140
  };
4899
- }
4900
- return {
4901
- grids: [{
4902
- index: 0,
4903
- // boxplanner usecase grid index always 0
4904
- rowSizes: this.getRowSizes(matrix, selectedElement),
4905
- columnSizes: this.getColumnSizes(matrix, selectedElement),
4906
- matrix: matrix
4907
- }],
4908
- selectedElement: selectedElement
4909
- };
5141
+ isSupport = !!matrix.find(function (x, idx) {
5142
+ return idx >= ele.area.fromX && idx < ele.area.toX && matrix[idx].length > ele.area.toY;
5143
+ }); // can't move if there is anything above these cells
5144
+ }
5145
+ if (isSupport) return this.generalPlanningState;
5146
+ for (var x = 0; x < maxWidth; x++) {
5147
+ var _x = ele.area.fromX == 0 ? x : x + 1;
5148
+ if (!matrixWithMovables[_x]) if (matrix[x]) matrixWithMovables[_x] = _toConsumableArray(matrix[x]);
5149
+ for (var y = 0; y < maxHeight; y++) {
5150
+ if (matrix[x].length > y && matrix[x][y]) {
5151
+ matrixWithMovables[_x][y].plannedElement;
5152
+ matrixWithMovables[_x][y] = _objectSpread({}, matrix[x][y]);
5153
+ }
5154
+ }
5155
+ }
5156
+
5157
+ // add movable to the top
5158
+ var from = ele.area.fromX == 0 ? ele.area.fromX : ele.area.fromX + 1;
5159
+ var to = ele.area.fromX == 0 ? ele.area.toX : ele.area.toX + 1;
5160
+ matrixWithMovables.forEach(function (_, x) {
5161
+ if (x >= from && x < to) return;
5162
+ var row = matrixWithMovables[x];
5163
+ var len = row.length;
5164
+ var _x = ele.fromX == 0 ? x : x - 1;
5165
+ row[len] = {
5166
+ index: {
5167
+ x: _x,
5168
+ y: len
5169
+ }
5170
+ };
5171
+ });
5172
+
5173
+ // add movable to the side
5174
+ var len = matrixWithMovables.length;
5175
+ if (((_ele2 = ele) === null || _ele2 === void 0 ? void 0 : _ele2.area.toX) != matrix.length) matrixWithMovables[len] = [{
5176
+ index: {
5177
+ x: ele.fromX == 0 ? len : len - 1,
5178
+ y: 0
5179
+ }
5180
+ }];
5181
+ if (((_ele3 = ele) === null || _ele3 === void 0 ? void 0 : _ele3.area.fromX) != 0) matrixWithMovables[0] = [{
5182
+ index: {
5183
+ x: -1,
5184
+ y: 0
5185
+ }
5186
+ }];
5187
+ return _objectSpread(_objectSpread({}, this.generalPlanningState), {}, {
5188
+ selectedElement: selectedElement,
5189
+ grids: [_objectSpread(_objectSpread({}, this.generalPlanningState.grids[0]), {}, {
5190
+ matrix: matrixWithMovables
5191
+ })]
5192
+ });
4910
5193
  }
4911
5194
  }, {
4912
5195
  key: "getRowSizes",
@@ -4915,7 +5198,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4915
5198
  //system 4 useacse
4916
5199
  var totalColCount = matrix[0].length;
4917
5200
  var colSizes = Array(totalColCount).fill(-1);
4918
- var _loop2 = function _loop2(i) {
5201
+ var _loop3 = function _loop3(i) {
4919
5202
  var _matrix$find;
4920
5203
  var cell = (_matrix$find = matrix.find(function (row) {
4921
5204
  var _row$i$plannedElement, _row$i$plannedElement2;
@@ -4929,7 +5212,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4929
5212
  if (colSizes[i] === -1) return 1; // break
4930
5213
  };
4931
5214
  for (var i = 0; i < totalColCount; i++) {
4932
- if (_loop2(i)) break;
5215
+ if (_loop3(i)) break;
4933
5216
  }
4934
5217
  if (colSizes.includes(-1)) LOG$1.error(new Error('Column sizes are not set'));
4935
5218
  return colSizes;
@@ -4992,9 +5275,9 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4992
5275
  });
4993
5276
  if (!column) {
4994
5277
  matrix.map(function (row) {
4995
- var _row$2;
5278
+ var _row$;
4996
5279
  return row.push({
4997
- index: new Vector2(((_row$2 = row[0]) === null || _row$2 === void 0 ? void 0 : _row$2.index.x) || 0, y),
5280
+ index: new Vector2(((_row$ = row[0]) === null || _row$ === void 0 ? void 0 : _row$.index.x) || 0, y),
4998
5281
  plannedElement: undefined
4999
5282
  });
5000
5283
  });
@@ -5201,7 +5484,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5201
5484
  key: "addPlannerElement",
5202
5485
  value: (function () {
5203
5486
  var _addPlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(basketID, params) {
5204
- var plannerElement, data;
5487
+ var plannerElement, data, constructionRules, _constructionRules$co, _constructionRules$co2;
5205
5488
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
5206
5489
  while (1) switch (_context2.prev = _context2.next) {
5207
5490
  case 0:
@@ -5220,7 +5503,19 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5220
5503
  return handler2D.loadSVG(plannerElement, this.set);
5221
5504
  case 9:
5222
5505
  if (!this.constructionRulesHandler.getConstructionRulesLoaded()) {
5223
- this.constructionRulesHandler.setConstructionRules(this.set.getConstructionRuleOfElementId(plannerElement.ElementId));
5506
+ constructionRules = this.set.getConstructionRuleOfElementId(plannerElement.ElementId);
5507
+ if (constructionRules) {
5508
+ this.boxPlannerGrid.GridSetupParams = {
5509
+ fixCellRasterHeight: 19.2,
5510
+ 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,
5513
+ hasMaxGridRasterHeight: constructionRules.constructionRules.hasMaxGridRasterHeight,
5514
+ maxGridRasterHeight: constructionRules.constructionRules.maxGridRasterHeight,
5515
+ hasMaxGridRasterWidth: constructionRules.constructionRules.hasMaxGridRasterWidth,
5516
+ maxGridRasterWidth: constructionRules.constructionRules.maxGridRasterWidth
5517
+ }, this.constructionRulesHandler.setConstructionRules(constructionRules);
5518
+ }
5224
5519
  }
5225
5520
  this.boxPlannerGrid.addElementAtGridPos(plannerElement, params.boxCol, params.boxRow, params.backside != undefined ? params.backside : false);
5226
5521
  if (!params.boxUpdateWholePlanning) {
@@ -5260,6 +5555,28 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5260
5555
  }
5261
5556
  return extendPlanner;
5262
5557
  }()
5558
+ }, {
5559
+ key: "movePlannerElement",
5560
+ value: function () {
5561
+ var _movePlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(elementId, absoluteIndex) {
5562
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
5563
+ while (1) switch (_context4.prev = _context4.next) {
5564
+ case 0:
5565
+ this.boxPlannerGrid.moveElementAsCopy(elementId, absoluteIndex);
5566
+ this.boxPlannerGrid.updateWorldPosOfElements();
5567
+ _context4.next = 4;
5568
+ return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, "", [elementId]);
5569
+ case 4:
5570
+ case "end":
5571
+ return _context4.stop();
5572
+ }
5573
+ }, _callee4, this);
5574
+ }));
5575
+ function movePlannerElement(_x6, _x7) {
5576
+ return _movePlannerElement.apply(this, arguments);
5577
+ }
5578
+ return movePlannerElement;
5579
+ }()
5263
5580
  /**
5264
5581
  * Handles copyying the planner Element. it can happen that also other planner elements are influenced
5265
5582
  * @param articleCopyRelation Holds the relation - which element with elementID is copyed and has a new Article. ElementToCopyID -> BasketID of new Article
@@ -5268,18 +5585,18 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5268
5585
  }, {
5269
5586
  key: "copyPlannerElement",
5270
5587
  value: (function () {
5271
- var _copyPlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(articleCopyRelation, copyInfo) {
5588
+ var _copyPlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(articleCopyRelation, copyInfo) {
5272
5589
  var _this = this;
5273
5590
  var gridIsPrepared, plannerElementsToLoadSVG, that, i, cellPos, allDPs, j;
5274
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
5275
- while (1) switch (_context4.prev = _context4.next) {
5591
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
5592
+ while (1) switch (_context5.prev = _context5.next) {
5276
5593
  case 0:
5277
5594
  gridIsPrepared = false;
5278
5595
  if (copyInfo) {
5279
- _context4.next = 3;
5596
+ _context5.next = 3;
5280
5597
  break;
5281
5598
  }
5282
- return _context4.abrupt("return");
5599
+ return _context5.abrupt("return");
5283
5600
  case 3:
5284
5601
  if (copyInfo.copyType == 'STD') copyInfo.targetElements = [];
5285
5602
  plannerElementsToLoadSVG = [];
@@ -5309,10 +5626,10 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5309
5626
  i = 0;
5310
5627
  case 8:
5311
5628
  if (!(i < plannerElementsToLoadSVG.length)) {
5312
- _context4.next = 15;
5629
+ _context5.next = 15;
5313
5630
  break;
5314
5631
  }
5315
- _context4.next = 11;
5632
+ _context5.next = 11;
5316
5633
  return handler2D.loadSVG(plannerElementsToLoadSVG[i], this.set);
5317
5634
  case 11:
5318
5635
  //Check if we have to prevent to build even higher in this col
@@ -5328,19 +5645,19 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5328
5645
  }
5329
5646
  case 12:
5330
5647
  i++;
5331
- _context4.next = 8;
5648
+ _context5.next = 8;
5332
5649
  break;
5333
5650
  case 15:
5334
5651
  this.boxPlannerGrid.updateWorldPosOfElements();
5335
- _context4.next = 18;
5652
+ _context5.next = 18;
5336
5653
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, copyInfo.changedOPT, copyInfo.targetElements);
5337
5654
  case 18:
5338
5655
  case "end":
5339
- return _context4.stop();
5656
+ return _context5.stop();
5340
5657
  }
5341
- }, _callee4, this);
5658
+ }, _callee5, this);
5342
5659
  }));
5343
- function copyPlannerElement(_x6, _x7) {
5660
+ function copyPlannerElement(_x8, _x9) {
5344
5661
  return _copyPlannerElement.apply(this, arguments);
5345
5662
  }
5346
5663
  return copyPlannerElement;
@@ -5413,8 +5730,8 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5413
5730
  allElementsToCopy = result.elements;
5414
5731
  result.backside;
5415
5732
  } else {
5416
- var _result = this.boxPlannerGrid.getAllElementsDown(elementId);
5417
- allElementsToCopy = allElementsToCopy.concat(_result.elements);
5733
+ var _result = this.boxPlannerGrid.getAllElementsToFillUp(elementId, copyInfo.copyIndex.x > 0 ? 'RIGHT' : 'LEFT');
5734
+ allElementsToCopy = _result.elements;
5418
5735
  _result.backside;
5419
5736
  }
5420
5737
  }
@@ -5446,10 +5763,10 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5446
5763
  }, {
5447
5764
  key: "deletePlannerElement",
5448
5765
  value: (function () {
5449
- var _deletePlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(elementId, autoCorrectAVL_AVR, deletionType) {
5766
+ var _deletePlannerElement = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(elementId, autoCorrectAVL_AVR, deletionType) {
5450
5767
  var cellPos, newSelectedPos, doUpdateWholeLogic, _this$boxPlannerGrid$;
5451
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
5452
- while (1) switch (_context5.prev = _context5.next) {
5768
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
5769
+ while (1) switch (_context6.prev = _context6.next) {
5453
5770
  case 0:
5454
5771
  //TODO ÜBERLEGEN WIE MAN DAS JETZT RICHTET: BESSER WÄRE ES MAN GIBT DAS NÄCHSTE ZU SELECTIERENDE ELEMENT ID ZURÜCK
5455
5772
  //var pos = this.boxPlannerGrid.getIndexInGridByElementId(elementId);
@@ -5483,29 +5800,29 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5483
5800
  } else if (deletionType == 'STD_DONTUPDATE') doUpdateWholeLogic = false;
5484
5801
  }
5485
5802
  if (!doUpdateWholeLogic) {
5486
- _context5.next = 11;
5803
+ _context6.next = 11;
5487
5804
  break;
5488
5805
  }
5489
5806
  this.boxPlannerGrid.updateWorldPosOfElements();
5490
- _context5.next = 11;
5807
+ _context6.next = 11;
5491
5808
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid);
5492
5809
  case 11:
5493
5810
  if (!this.boxPlannerGrid.getPlannerElementAtGridPos(newSelectedPos.col, newSelectedPos.row, newSelectedPos.backside)) {
5494
- _context5.next = 13;
5811
+ _context6.next = 13;
5495
5812
  break;
5496
5813
  }
5497
- return _context5.abrupt("return", {
5814
+ return _context6.abrupt("return", {
5498
5815
  newElementToSelect: (_this$boxPlannerGrid$ = this.boxPlannerGrid.getPlannerElementAtGridPos(newSelectedPos.col, newSelectedPos.row, newSelectedPos.backside)) === null || _this$boxPlannerGrid$ === void 0 ? void 0 : _this$boxPlannerGrid$.getElementId()
5499
5816
  });
5500
5817
  case 13:
5501
- return _context5.abrupt("return", {});
5818
+ return _context6.abrupt("return", {});
5502
5819
  case 14:
5503
5820
  case "end":
5504
- return _context5.stop();
5821
+ return _context6.stop();
5505
5822
  }
5506
- }, _callee5, this);
5823
+ }, _callee6, this);
5507
5824
  }));
5508
- function deletePlannerElement(_x8, _x9, _x10) {
5825
+ function deletePlannerElement(_x10, _x11, _x12) {
5509
5826
  return _deletePlannerElement.apply(this, arguments);
5510
5827
  }
5511
5828
  return deletePlannerElement;
@@ -5585,11 +5902,11 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5585
5902
  }, {
5586
5903
  key: "updatePlanner",
5587
5904
  value: (function () {
5588
- var _updatePlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(changedOPT, targetElements) {
5905
+ var _updatePlanner = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(changedOPT, targetElements) {
5589
5906
  var _this2 = this;
5590
5907
  var message, cellPos, elemToCheck, copyIndex, allElementsToCopy, _allElementsToCopy, allElementsInBackGrid, _allElementsInBackGrid, _message;
5591
- return _regeneratorRuntime.wrap(function _callee6$(_context6) {
5592
- while (1) switch (_context6.prev = _context6.next) {
5908
+ return _regeneratorRuntime.wrap(function _callee7$(_context7) {
5909
+ while (1) switch (_context7.prev = _context7.next) {
5593
5910
  case 0:
5594
5911
  LOG.debug('BoxPlanner - configurationHasChanged ' + changedOPT);
5595
5912
  targetElements === null || targetElements === void 0 || targetElements.forEach(function (e) {
@@ -5597,28 +5914,28 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5597
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);
5598
5915
  });
5599
5916
  if (!(changedOPT && targetElements && targetElements.length > 0 && changedOPT['OPTELEMENT'] && (changedOPT['OPTELEMENT'] == 'OPVECK_I' || changedOPT['OPTELEMENT'] == 'OPVECK_A'))) {
5600
- _context6.next = 19;
5917
+ _context7.next = 19;
5601
5918
  break;
5602
5919
  }
5603
5920
  if (!(targetElements.length > 1)) {
5604
- _context6.next = 10;
5921
+ _context7.next = 10;
5605
5922
  break;
5606
5923
  }
5607
- _context6.next = 6;
5924
+ _context7.next = 6;
5608
5925
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements, true);
5609
5926
  case 6:
5610
- message = _context6.sent;
5927
+ message = _context7.sent;
5611
5928
  if (!message) {
5612
- _context6.next = 9;
5929
+ _context7.next = 9;
5613
5930
  break;
5614
5931
  }
5615
- return _context6.abrupt("return", {
5932
+ return _context7.abrupt("return", {
5616
5933
  doDeleteBackGrid: false,
5617
5934
  elemIdsToDelete: [],
5618
5935
  viewMessageCodex: message
5619
5936
  });
5620
5937
  case 9:
5621
- return _context6.abrupt("return", {
5938
+ return _context7.abrupt("return", {
5622
5939
  doDeleteBackGrid: false,
5623
5940
  elemIdsToDelete: []
5624
5941
  });
@@ -5630,7 +5947,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5630
5947
  elemToCheck = this.boxPlannerGrid.getPlannerElementAtGridPos(cellPos.startColIndex, 0, false).getElementId();
5631
5948
  }
5632
5949
  if (!(!this.boxPlannerGrid.getElementHasLeftElement(elemToCheck) || !this.boxPlannerGrid.getElementHasRightElement(elemToCheck))) {
5633
- _context6.next = 19;
5950
+ _context7.next = 19;
5634
5951
  break;
5635
5952
  }
5636
5953
  //Someone has changed Eck innen or aussen. If the current eselected Element has no neighbor left or right copy neighbor
@@ -5651,7 +5968,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5651
5968
  copyIndex: copyIndex,
5652
5969
  copyType: 'BoxPlanner_COL'
5653
5970
  });
5654
- return _context6.abrupt("return", {
5971
+ return _context7.abrupt("return", {
5655
5972
  doDeleteBackGrid: false,
5656
5973
  elemIdsToDelete: [],
5657
5974
  elementIdToCopy: allElementsToCopy,
@@ -5662,15 +5979,15 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5662
5979
  });
5663
5980
  case 19:
5664
5981
  if (!(changedOPT && changedOPT['OPTDMOD'])) {
5665
- _context6.next = 34;
5982
+ _context7.next = 34;
5666
5983
  break;
5667
5984
  }
5668
- _context6.t0 = changedOPT['OPTDMOD'];
5669
- _context6.next = _context6.t0 === 'OPVD_EIN' ? 23 : _context6.t0 === 'OPVD_AUS' ? 27 : 32;
5985
+ _context7.t0 = changedOPT['OPTDMOD'];
5986
+ _context7.next = _context7.t0 === 'OPVD_EIN' ? 23 : _context7.t0 === 'OPVD_AUS' ? 27 : 32;
5670
5987
  break;
5671
5988
  case 23:
5672
5989
  if (this.boxPlannerGrid.getPlannerHasActiveBackside()) {
5673
- _context6.next = 26;
5990
+ _context7.next = 26;
5674
5991
  break;
5675
5992
  }
5676
5993
  _allElementsToCopy = this.getPlannerElementsInfluencedByCopy(-1, {
@@ -5681,7 +5998,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5681
5998
  },
5682
5999
  copyType: 'BoxPlanner_backside'
5683
6000
  });
5684
- return _context6.abrupt("return", {
6001
+ return _context7.abrupt("return", {
5685
6002
  doDeleteBackGrid: false,
5686
6003
  elemIdsToDelete: [],
5687
6004
  elementIdToCopy: _allElementsToCopy,
@@ -5689,18 +6006,18 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5689
6006
  changedOPT: changedOPT
5690
6007
  });
5691
6008
  case 26:
5692
- return _context6.abrupt("break", 32);
6009
+ return _context7.abrupt("break", 32);
5693
6010
  case 27:
5694
6011
  if (!this.boxPlannerGrid.getPlannerHasActiveBackside()) {
5695
- _context6.next = 31;
6012
+ _context7.next = 31;
5696
6013
  break;
5697
6014
  }
5698
6015
  allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
5699
6016
  if (!(allElementsInBackGrid.length > 0)) {
5700
- _context6.next = 31;
6017
+ _context7.next = 31;
5701
6018
  break;
5702
6019
  }
5703
- return _context6.abrupt("return", {
6020
+ return _context7.abrupt("return", {
5704
6021
  doDeleteBackGrid: true,
5705
6022
  elemIdsToDelete: allElementsInBackGrid.map(function (element) {
5706
6023
  return element.ElementId;
@@ -5709,22 +6026,22 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5709
6026
  changedOPT: changedOPT
5710
6027
  });
5711
6028
  case 31:
5712
- return _context6.abrupt("break", 32);
6029
+ return _context7.abrupt("break", 32);
5713
6030
  case 32:
5714
- _context6.next = 48;
6031
+ _context7.next = 48;
5715
6032
  break;
5716
6033
  case 34:
5717
6034
  if (!(changedOPT && changedOPT['OPTFARBE_RAHMEN'] && changedOPT['OPTFARBE_RAHMEN'] == 'OPVSCHWARZ_MATT' && this.boxPlannerGrid.getPlannerHasActiveBackside())) {
5718
- _context6.next = 40;
6035
+ _context7.next = 40;
5719
6036
  break;
5720
6037
  }
5721
6038
  //If the double modul is active but the color is changed to black - disable double modul
5722
6039
  _allElementsInBackGrid = this.boxPlannerGrid.getAllElementsInBackGrid();
5723
6040
  if (!(_allElementsInBackGrid.length > 0)) {
5724
- _context6.next = 38;
6041
+ _context7.next = 38;
5725
6042
  break;
5726
6043
  }
5727
- return _context6.abrupt("return", {
6044
+ return _context7.abrupt("return", {
5728
6045
  doDeleteBackGrid: true,
5729
6046
  elemIdsToDelete: _allElementsInBackGrid.map(function (element) {
5730
6047
  return element.ElementId;
@@ -5735,39 +6052,39 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5735
6052
  viewMessageCodex: 'BOXPLAN_BLACKFRAME_INCOMPATIBLE_ELEMENT_WARNING'
5736
6053
  });
5737
6054
  case 38:
5738
- _context6.next = 48;
6055
+ _context7.next = 48;
5739
6056
  break;
5740
6057
  case 40:
5741
- _context6.next = 42;
6058
+ _context7.next = 42;
5742
6059
  return this.constructionRulesHandler.updateOptionLogicBoxPlanner(this.boxPlannerGrid, changedOPT, targetElements);
5743
6060
  case 42:
5744
- _message = _context6.sent;
6061
+ _message = _context7.sent;
5745
6062
  if (!_message) {
5746
- _context6.next = 47;
6063
+ _context7.next = 47;
5747
6064
  break;
5748
6065
  }
5749
- return _context6.abrupt("return", {
6066
+ return _context7.abrupt("return", {
5750
6067
  doDeleteBackGrid: false,
5751
6068
  elemIdsToDelete: [],
5752
6069
  viewMessageCodex: _message
5753
6070
  });
5754
6071
  case 47:
5755
- return _context6.abrupt("return", {
6072
+ return _context7.abrupt("return", {
5756
6073
  doDeleteBackGrid: false,
5757
6074
  elemIdsToDelete: []
5758
6075
  });
5759
6076
  case 48:
5760
- return _context6.abrupt("return", {
6077
+ return _context7.abrupt("return", {
5761
6078
  doDeleteBackGrid: false,
5762
6079
  elemIdsToDelete: []
5763
6080
  });
5764
6081
  case 49:
5765
6082
  case "end":
5766
- return _context6.stop();
6083
+ return _context7.stop();
5767
6084
  }
5768
- }, _callee6, this);
6085
+ }, _callee7, this);
5769
6086
  }));
5770
- function updatePlanner(_x11, _x12) {
6087
+ function updatePlanner(_x13, _x14) {
5771
6088
  return _updatePlanner.apply(this, arguments);
5772
6089
  }
5773
6090
  return updatePlanner;
@@ -5896,7 +6213,7 @@ var DivaBoxPlanner = /*#__PURE__*/function () {
5896
6213
  }, {
5897
6214
  key: "getGeneralPlanningState",
5898
6215
  value: function getGeneralPlanningState(selectedElementId) {
5899
- return this.boxPlannerGrid.getGeneralPlanningState(selectedElementId);
6216
+ return this.boxPlannerGrid.getGeneralPlanningState(true, selectedElementId);
5900
6217
  }
5901
6218
  }]);
5902
6219
  }();